xref: /rockchip-linux_mpp/mpp/common/vp8d_syntax.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka  *
3*437bfbebSnyanmisaka  * Copyright 2015 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 __VP8D_SYNTAX_H__
19*437bfbebSnyanmisaka #define __VP8D_SYNTAX_H__
20*437bfbebSnyanmisaka 
21*437bfbebSnyanmisaka #include "rk_type.h"
22*437bfbebSnyanmisaka 
23*437bfbebSnyanmisaka typedef struct _DXVA_PicEntry_VP8 {
24*437bfbebSnyanmisaka     union {
25*437bfbebSnyanmisaka         struct {
26*437bfbebSnyanmisaka             RK_U8 Index7Bits     : 7;
27*437bfbebSnyanmisaka             RK_U8 AssociatedFlag : 1;
28*437bfbebSnyanmisaka         };
29*437bfbebSnyanmisaka         RK_U8 bPicEntry;
30*437bfbebSnyanmisaka     };
31*437bfbebSnyanmisaka } DXVA_PicEntry_VP8;
32*437bfbebSnyanmisaka typedef struct _segmentation_Vp8 {
33*437bfbebSnyanmisaka     union {
34*437bfbebSnyanmisaka         struct {
35*437bfbebSnyanmisaka             RK_U8 segmentation_enabled         : 1;
36*437bfbebSnyanmisaka             RK_U8 update_mb_segmentation_map   : 1;
37*437bfbebSnyanmisaka             RK_U8 update_mb_segmentation_data  : 1;
38*437bfbebSnyanmisaka             RK_U8 mb_segement_abs_delta        : 1;
39*437bfbebSnyanmisaka             RK_U8 ReservedSegmentFlags4Bits    : 4;
40*437bfbebSnyanmisaka         };
41*437bfbebSnyanmisaka         RK_U8 wSegmentFlags;
42*437bfbebSnyanmisaka     };
43*437bfbebSnyanmisaka     RK_S8 segment_feature_data[2][4];
44*437bfbebSnyanmisaka     RK_U8 mb_segment_tree_probs[3];
45*437bfbebSnyanmisaka } DXVA_segmentation_VP8;
46*437bfbebSnyanmisaka 
47*437bfbebSnyanmisaka typedef struct VP8DDxvaParam_t {
48*437bfbebSnyanmisaka     RK_U32 first_part_size;
49*437bfbebSnyanmisaka     RK_U32 width;
50*437bfbebSnyanmisaka     RK_U32 height;
51*437bfbebSnyanmisaka     DXVA_PicEntry_VP8 CurrPic;
52*437bfbebSnyanmisaka     union {
53*437bfbebSnyanmisaka         struct {
54*437bfbebSnyanmisaka             RK_U8 frame_type           : 1;
55*437bfbebSnyanmisaka             RK_U8 version              : 3;
56*437bfbebSnyanmisaka             RK_U8 show_frame           : 1;
57*437bfbebSnyanmisaka             RK_U8 clamp_type           : 1;
58*437bfbebSnyanmisaka             RK_U8 ReservedFrameTag2Bits: 2;
59*437bfbebSnyanmisaka         };
60*437bfbebSnyanmisaka         RK_U8 wFrameTagFlags;
61*437bfbebSnyanmisaka     };
62*437bfbebSnyanmisaka     DXVA_segmentation_VP8 stVP8Segments;
63*437bfbebSnyanmisaka     RK_U8              filter_type;
64*437bfbebSnyanmisaka     RK_U8              filter_level;
65*437bfbebSnyanmisaka     RK_U8              sharpness;
66*437bfbebSnyanmisaka     RK_U8              mode_ref_lf_delta_enabled;
67*437bfbebSnyanmisaka     RK_U8              mode_ref_lf_delta_update;
68*437bfbebSnyanmisaka     RK_S8              ref_lf_deltas[4];
69*437bfbebSnyanmisaka     RK_S8              mode_lf_deltas[4];
70*437bfbebSnyanmisaka     RK_U8              log2_nbr_of_dct_partitions;
71*437bfbebSnyanmisaka     RK_U8              base_qindex;
72*437bfbebSnyanmisaka     RK_S8              y1dc_delta_q;
73*437bfbebSnyanmisaka     RK_S8              y1ac_delta_q;
74*437bfbebSnyanmisaka     RK_S8              y2dc_delta_q;
75*437bfbebSnyanmisaka     RK_S8              y2ac_delta_q;
76*437bfbebSnyanmisaka     RK_S8              uvdc_delta_q;
77*437bfbebSnyanmisaka     RK_S8              uvac_delta_q;
78*437bfbebSnyanmisaka 
79*437bfbebSnyanmisaka     DXVA_PicEntry_VP8  alt_fb_idx;
80*437bfbebSnyanmisaka     DXVA_PicEntry_VP8  gld_fb_idx;
81*437bfbebSnyanmisaka     DXVA_PicEntry_VP8  lst_fb_idx;
82*437bfbebSnyanmisaka 
83*437bfbebSnyanmisaka     RK_U8              ref_frame_sign_bias_golden;
84*437bfbebSnyanmisaka     RK_U8              ref_frame_sign_bias_altref;
85*437bfbebSnyanmisaka     RK_U8              refresh_entropy_probs;
86*437bfbebSnyanmisaka 
87*437bfbebSnyanmisaka     RK_U8              vp8_coef_update_probs[4][8][3][11];
88*437bfbebSnyanmisaka     RK_U8              probe_skip_false;
89*437bfbebSnyanmisaka     RK_U8              mb_no_coeff_skip;
90*437bfbebSnyanmisaka     RK_U8              prob_intra;
91*437bfbebSnyanmisaka     RK_U8              prob_last;
92*437bfbebSnyanmisaka     RK_U8              prob_golden;
93*437bfbebSnyanmisaka     RK_U8              intra_16x16_prob[4];
94*437bfbebSnyanmisaka     RK_U8              intra_chroma_prob[3];
95*437bfbebSnyanmisaka     RK_U8              vp8_mv_update_probs[2][19];
96*437bfbebSnyanmisaka 
97*437bfbebSnyanmisaka     RK_U32             decMode;
98*437bfbebSnyanmisaka     RK_U32             bool_value;
99*437bfbebSnyanmisaka     RK_U32             bool_range;
100*437bfbebSnyanmisaka     RK_U32             stream_start_offset;
101*437bfbebSnyanmisaka     RK_U32             dctPartitionOffsets[8];
102*437bfbebSnyanmisaka     RK_U32             bitstream_length;
103*437bfbebSnyanmisaka     RK_U32             stream_start_bit;
104*437bfbebSnyanmisaka     RK_U32             frameTagSize;
105*437bfbebSnyanmisaka     RK_U32             streamEndPos;
106*437bfbebSnyanmisaka     RK_U32             offsetToDctParts;
107*437bfbebSnyanmisaka } DXVA_PicParams_VP8;
108*437bfbebSnyanmisaka 
109*437bfbebSnyanmisaka #if 0
110*437bfbebSnyanmisaka typedef struct VP8DDxvaParam_t {
111*437bfbebSnyanmisaka     RK_U32 first_part_size;
112*437bfbebSnyanmisaka     RK_U32 width;
113*437bfbebSnyanmisaka     RK_U32 height;
114*437bfbebSnyanmisaka     DXVA_PicEntry_VP8 CurrPic;
115*437bfbebSnyanmisaka     union {
116*437bfbebSnyanmisaka         struct {
117*437bfbebSnyanmisaka             RK_U8 key_frame : 1;
118*437bfbebSnyanmisaka             RK_U8 segmentationEnabled : 1;
119*437bfbebSnyanmisaka             RK_U8 segmentationMapUpdate : 1;
120*437bfbebSnyanmisaka             RK_U8 modeRefLfEnabled : 1;
121*437bfbebSnyanmisaka             RK_U8 coeffSkipMode: 1;
122*437bfbebSnyanmisaka             RK_U8 reservedFormatInfo: 3;
123*437bfbebSnyanmisaka         };
124*437bfbebSnyanmisaka         RK_U8 wFormatAndPictureInfoFlags;
125*437bfbebSnyanmisaka     };
126*437bfbebSnyanmisaka     RK_U32              decMode;
127*437bfbebSnyanmisaka     RK_U32              loopFilterType;
128*437bfbebSnyanmisaka     RK_U32              loopFilterSharpness;
129*437bfbebSnyanmisaka     RK_U32              loopFilterLevel;
130*437bfbebSnyanmisaka     RK_U32              segmentFeatureMode;
131*437bfbebSnyanmisaka     RK_U32              vpVersion;
132*437bfbebSnyanmisaka     RK_U32              bool_value;
133*437bfbebSnyanmisaka     RK_U32              bool_range;
134*437bfbebSnyanmisaka     RK_U32              stream_start_offset;
135*437bfbebSnyanmisaka     RK_U32              stream_start_bit;
136*437bfbebSnyanmisaka     RK_U32              frameTagSize;
137*437bfbebSnyanmisaka     RK_U32              streamEndPos;
138*437bfbebSnyanmisaka     RK_U32              nbrDctPartitions;
139*437bfbebSnyanmisaka     RK_U32              offsetToDctParts;
140*437bfbebSnyanmisaka 
141*437bfbebSnyanmisaka     RK_S8              qpYAc;
142*437bfbebSnyanmisaka     RK_S8              qpYDc;
143*437bfbebSnyanmisaka     RK_S8              qpY2Ac;
144*437bfbebSnyanmisaka     RK_S8              qpY2Dc;
145*437bfbebSnyanmisaka     RK_S8              qpChAc;
146*437bfbebSnyanmisaka     RK_S8              qpChDc;
147*437bfbebSnyanmisaka     RK_U8              vp8_coef_update_probs[4][8][3][11];
148*437bfbebSnyanmisaka     RK_U8              probe_skip_false;
149*437bfbebSnyanmisaka     RK_U8              prob_intra;
150*437bfbebSnyanmisaka     RK_U8              prob_last;
151*437bfbebSnyanmisaka     RK_U8              prob_golden;
152*437bfbebSnyanmisaka     RK_U8              intra_16x16_prob[4];
153*437bfbebSnyanmisaka     RK_U8              intra_chroma_prob[3];
154*437bfbebSnyanmisaka     RK_U8              vp8_mv_update_probs[2][19];
155*437bfbebSnyanmisaka     RK_U8              vp8_segment_prob[3];
156*437bfbebSnyanmisaka 
157*437bfbebSnyanmisaka     RK_U32             refFrameSignBias[2];
158*437bfbebSnyanmisaka     RK_S32             dcPred[2];
159*437bfbebSnyanmisaka     RK_S32             dcMatch[2];
160*437bfbebSnyanmisaka     RK_S32             segmentQp[4];
161*437bfbebSnyanmisaka     RK_S32             mbRefLfDelta[4];
162*437bfbebSnyanmisaka     RK_S32             mbModeLfDelta[4];
163*437bfbebSnyanmisaka     RK_U32             vp7ScanOrder[16];
164*437bfbebSnyanmisaka     RK_S32             segmentLoopfilter[4];
165*437bfbebSnyanmisaka     RK_U32             dctPartitionOffsets[8];
166*437bfbebSnyanmisaka     RK_U32              bitstream_length;
167*437bfbebSnyanmisaka     DXVA_PicEntry_VP8   frame_refs[3];
168*437bfbebSnyanmisaka } DXVA_PicParams_VP8;
169*437bfbebSnyanmisaka #endif
170*437bfbebSnyanmisaka #endif
171