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