xref: /rockchip-linux_mpp/mpp/common/h263d_syntax.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka  *
3*437bfbebSnyanmisaka  * Copyright 2010 Rockchip Electronics Co. LTD
4*437bfbebSnyanmisaka  *
5*437bfbebSnyanmisaka  * Licensed under the Apache License, Version 2.0 (the "License");
6*437bfbebSnyanmisaka  * you may not use this file except in compliance with the License.
7*437bfbebSnyanmisaka  * You may obtain a copy of the License at
8*437bfbebSnyanmisaka  *
9*437bfbebSnyanmisaka  *      http://www.apache.org/licenses/LICENSE-2.0
10*437bfbebSnyanmisaka  *
11*437bfbebSnyanmisaka  * Unless required by applicable law or agreed to in writing, software
12*437bfbebSnyanmisaka  * distributed under the License is distributed on an "AS IS" BASIS,
13*437bfbebSnyanmisaka  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*437bfbebSnyanmisaka  * See the License for the specific language governing permissions and
15*437bfbebSnyanmisaka  * limitations under the License.
16*437bfbebSnyanmisaka  */
17*437bfbebSnyanmisaka 
18*437bfbebSnyanmisaka #ifndef __H263D_SYNTAX__
19*437bfbebSnyanmisaka #define __H263D_SYNTAX__
20*437bfbebSnyanmisaka 
21*437bfbebSnyanmisaka #include "dxva_syntax.h"
22*437bfbebSnyanmisaka 
23*437bfbebSnyanmisaka /*video vop specific*/
24*437bfbebSnyanmisaka typedef enum {
25*437bfbebSnyanmisaka     H263_INVALID_VOP   = -1,
26*437bfbebSnyanmisaka     H263_I_VOP         = 0,
27*437bfbebSnyanmisaka     H263_P_VOP         = 1,
28*437bfbebSnyanmisaka } H263VOPType;
29*437bfbebSnyanmisaka 
30*437bfbebSnyanmisaka /* H263PT2 Picture Parameter structure */
31*437bfbebSnyanmisaka typedef struct _DXVA_PicParams_H263 {
32*437bfbebSnyanmisaka     RK_U8   short_video_header;
33*437bfbebSnyanmisaka     RK_U8   vop_coding_type;
34*437bfbebSnyanmisaka     RK_U8   vop_quant;
35*437bfbebSnyanmisaka     RK_U16  wDecodedPictureIndex;
36*437bfbebSnyanmisaka     RK_U16  wDeblockedPictureIndex;
37*437bfbebSnyanmisaka     RK_U16  wForwardRefPictureIndex;
38*437bfbebSnyanmisaka     RK_U16  wBackwardRefPictureIndex;
39*437bfbebSnyanmisaka     RK_U16  vop_time_increment_resolution;
40*437bfbebSnyanmisaka     RK_U32  TRB[2];
41*437bfbebSnyanmisaka     RK_U32  TRD[2];
42*437bfbebSnyanmisaka 
43*437bfbebSnyanmisaka     union {
44*437bfbebSnyanmisaka         struct {
45*437bfbebSnyanmisaka             RK_U16  unPicPostProc                 : 2;
46*437bfbebSnyanmisaka             RK_U16  interlaced                    : 1;
47*437bfbebSnyanmisaka             RK_U16  quant_type                    : 1;
48*437bfbebSnyanmisaka             RK_U16  quarter_sample                : 1;
49*437bfbebSnyanmisaka             RK_U16  resync_marker_disable         : 1;
50*437bfbebSnyanmisaka             RK_U16  data_partitioned              : 1;
51*437bfbebSnyanmisaka             RK_U16  reversible_vlc                : 1;
52*437bfbebSnyanmisaka             RK_U16  reduced_resolution_vop_enable : 1;
53*437bfbebSnyanmisaka             RK_U16  vop_coded                     : 1;
54*437bfbebSnyanmisaka             RK_U16  vop_rounding_type             : 1;
55*437bfbebSnyanmisaka             RK_U16  intra_dc_vlc_thr              : 3;
56*437bfbebSnyanmisaka             RK_U16  top_field_first               : 1;
57*437bfbebSnyanmisaka             RK_U16  alternate_vertical_scan_flag  : 1;
58*437bfbebSnyanmisaka         };
59*437bfbebSnyanmisaka         RK_U16 wPicFlagBitFields;
60*437bfbebSnyanmisaka     };
61*437bfbebSnyanmisaka     RK_U8   profile_and_level_indication;
62*437bfbebSnyanmisaka     RK_U8   video_object_layer_verid;
63*437bfbebSnyanmisaka     RK_U16  vop_width;
64*437bfbebSnyanmisaka     RK_U16  vop_height;
65*437bfbebSnyanmisaka     union {
66*437bfbebSnyanmisaka         struct {
67*437bfbebSnyanmisaka             RK_U16  sprite_enable               : 2;
68*437bfbebSnyanmisaka             RK_U16  no_of_sprite_warping_points : 6;
69*437bfbebSnyanmisaka             RK_U16  sprite_warping_accuracy     : 2;
70*437bfbebSnyanmisaka         };
71*437bfbebSnyanmisaka         RK_U16 wSpriteBitFields;
72*437bfbebSnyanmisaka     };
73*437bfbebSnyanmisaka     RK_S16  warping_mv[4][2];
74*437bfbebSnyanmisaka     union {
75*437bfbebSnyanmisaka         struct {
76*437bfbebSnyanmisaka             RK_U8  vop_fcode_forward   : 3;
77*437bfbebSnyanmisaka             RK_U8  vop_fcode_backward  : 3;
78*437bfbebSnyanmisaka         };
79*437bfbebSnyanmisaka         RK_U8 wFcodeBitFields;
80*437bfbebSnyanmisaka     };
81*437bfbebSnyanmisaka     RK_U16  StatusReportFeedbackNumber;
82*437bfbebSnyanmisaka     RK_U16  Reserved16BitsA;
83*437bfbebSnyanmisaka     RK_U16  Reserved16BitsB;
84*437bfbebSnyanmisaka 
85*437bfbebSnyanmisaka     // FIXME: added for rockchip hardware information
86*437bfbebSnyanmisaka     RK_U32  prev_coding_type;
87*437bfbebSnyanmisaka     RK_U32  header_bits;
88*437bfbebSnyanmisaka } DXVA_PicParams_H263, *LPDXVA_PicParams_H263;
89*437bfbebSnyanmisaka 
90*437bfbebSnyanmisaka typedef struct h263d_dxva2_picture_context {
91*437bfbebSnyanmisaka     DXVA_PicParams_H263         pp;
92*437bfbebSnyanmisaka 
93*437bfbebSnyanmisaka     // pointer and storage for buffer descriptor
94*437bfbebSnyanmisaka     DXVA2_DecodeBufferDesc      *data[2];
95*437bfbebSnyanmisaka     DXVA2_DecodeBufferDesc      desc[2];
96*437bfbebSnyanmisaka } h263d_dxva2_picture_context_t;
97*437bfbebSnyanmisaka 
98*437bfbebSnyanmisaka #endif /*__H263D_SYNTAX__*/
99