1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2015 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __M2VD_SYNTAX_H__ 18*437bfbebSnyanmisaka #define __M2VD_SYNTAX_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "rk_type.h" 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka typedef struct _DXVA_PicEntry_M2V { 23*437bfbebSnyanmisaka union { 24*437bfbebSnyanmisaka struct { 25*437bfbebSnyanmisaka RK_U8 Index7Bits : 7; 26*437bfbebSnyanmisaka RK_U8 AssociatedFlag : 1; 27*437bfbebSnyanmisaka }; 28*437bfbebSnyanmisaka RK_U8 bPicEntry; 29*437bfbebSnyanmisaka }; 30*437bfbebSnyanmisaka } DXVA_PicEntry_M2V; 31*437bfbebSnyanmisaka 32*437bfbebSnyanmisaka 33*437bfbebSnyanmisaka /* ISO/IEC 13818-2 section 6.2.2.1: sequence_Dxvaer() */ 34*437bfbebSnyanmisaka typedef struct M2VDDxvaSeq_t { 35*437bfbebSnyanmisaka RK_U32 decode_width; //horizontal_size_value 36*437bfbebSnyanmisaka RK_U32 decode_height; //vertical_size_value 37*437bfbebSnyanmisaka RK_S32 aspect_ratio_information; 38*437bfbebSnyanmisaka RK_S32 frame_rate_code; 39*437bfbebSnyanmisaka RK_S32 bit_rate_value; 40*437bfbebSnyanmisaka RK_S32 vbv_buffer_size; 41*437bfbebSnyanmisaka RK_S32 constrained_parameters_flag; 42*437bfbebSnyanmisaka RK_U32 load_intra_quantizer_matrix; //[TEMP] 43*437bfbebSnyanmisaka RK_U32 load_non_intra_quantizer_matrix; //[TEMP] 44*437bfbebSnyanmisaka } M2VDDxvaSeq; 45*437bfbebSnyanmisaka 46*437bfbebSnyanmisaka /* ISO/IEC 13818-2 section 6.2.2.3: sequence_extension() */ 47*437bfbebSnyanmisaka typedef struct M2VDDxvaSeqExt_t { 48*437bfbebSnyanmisaka RK_S32 profile_and_level_indication; 49*437bfbebSnyanmisaka RK_S32 progressive_sequence; 50*437bfbebSnyanmisaka RK_S32 chroma_format; 51*437bfbebSnyanmisaka RK_S32 low_delay; 52*437bfbebSnyanmisaka RK_S32 frame_rate_extension_n; 53*437bfbebSnyanmisaka RK_S32 frame_rate_extension_d; 54*437bfbebSnyanmisaka } M2VDDxvaSeqExt; 55*437bfbebSnyanmisaka 56*437bfbebSnyanmisaka /* ISO/IEC 13818-2 section 6.2.2.6: group_of_pictures_Dxvaer() */ 57*437bfbebSnyanmisaka typedef struct M2VDDxvaGop_t { 58*437bfbebSnyanmisaka RK_S32 drop_flag; 59*437bfbebSnyanmisaka RK_S32 hour; 60*437bfbebSnyanmisaka RK_S32 minute; 61*437bfbebSnyanmisaka RK_S32 sec; 62*437bfbebSnyanmisaka RK_S32 frame; 63*437bfbebSnyanmisaka RK_S32 closed_gop; 64*437bfbebSnyanmisaka RK_S32 broken_link; 65*437bfbebSnyanmisaka } M2VDDxvaGop; 66*437bfbebSnyanmisaka 67*437bfbebSnyanmisaka 68*437bfbebSnyanmisaka /* ISO/IEC 13818-2 section 6.2.3: picture_Dxvaer() */ 69*437bfbebSnyanmisaka typedef struct M2VDDxvaPic_t { 70*437bfbebSnyanmisaka RK_S32 temporal_reference; 71*437bfbebSnyanmisaka RK_S32 picture_coding_type; 72*437bfbebSnyanmisaka RK_S32 pre_picture_coding_type; 73*437bfbebSnyanmisaka RK_S32 vbv_delay; 74*437bfbebSnyanmisaka RK_S32 full_pel_forward_vector; 75*437bfbebSnyanmisaka RK_S32 forward_f_code; 76*437bfbebSnyanmisaka RK_S32 full_pel_backward_vector; 77*437bfbebSnyanmisaka RK_S32 backward_f_code; 78*437bfbebSnyanmisaka RK_S32 pre_temporal_reference; 79*437bfbebSnyanmisaka } M2VDDxvaPic; 80*437bfbebSnyanmisaka 81*437bfbebSnyanmisaka 82*437bfbebSnyanmisaka /* ISO/IEC 13818-2 section 6.2.2.4: sequence_display_extension() */ 83*437bfbebSnyanmisaka typedef struct M2VDDxvaSeqDispExt_t { 84*437bfbebSnyanmisaka RK_S32 video_format; 85*437bfbebSnyanmisaka RK_S32 color_description; 86*437bfbebSnyanmisaka RK_S32 color_primaries; 87*437bfbebSnyanmisaka RK_S32 transfer_characteristics; 88*437bfbebSnyanmisaka RK_S32 matrix_coefficients; 89*437bfbebSnyanmisaka } M2VDDxvaSeqDispExt; 90*437bfbebSnyanmisaka 91*437bfbebSnyanmisaka /* ISO/IEC 13818-2 section 6.2.3.1: picture_coding_extension() Dxvaer */ 92*437bfbebSnyanmisaka typedef struct M2VDDxvaPicCodeExt_t { 93*437bfbebSnyanmisaka RK_S32 f_code[2][2]; 94*437bfbebSnyanmisaka RK_S32 intra_dc_precision; 95*437bfbebSnyanmisaka RK_S32 picture_structure; 96*437bfbebSnyanmisaka RK_S32 top_field_first; 97*437bfbebSnyanmisaka RK_S32 frame_pred_frame_dct; 98*437bfbebSnyanmisaka RK_S32 concealment_motion_vectors; 99*437bfbebSnyanmisaka RK_S32 q_scale_type; 100*437bfbebSnyanmisaka RK_S32 intra_vlc_format; 101*437bfbebSnyanmisaka RK_S32 alternate_scan; 102*437bfbebSnyanmisaka RK_S32 repeat_first_field; 103*437bfbebSnyanmisaka RK_S32 chroma_420_type; 104*437bfbebSnyanmisaka RK_S32 progressive_frame; 105*437bfbebSnyanmisaka RK_S32 composite_display_flag; 106*437bfbebSnyanmisaka RK_S32 v_axis; 107*437bfbebSnyanmisaka RK_S32 field_sequence; 108*437bfbebSnyanmisaka RK_S32 sub_carrier; 109*437bfbebSnyanmisaka RK_S32 burst_amplitude; 110*437bfbebSnyanmisaka RK_S32 sub_carrier_phase; 111*437bfbebSnyanmisaka } M2VDDxvaPicCodeExt; 112*437bfbebSnyanmisaka 113*437bfbebSnyanmisaka 114*437bfbebSnyanmisaka /* ISO/IEC 13818-2 section 6.2.3.3: picture_display_extension() Dxvaer */ 115*437bfbebSnyanmisaka typedef struct M2VDDxvaPicDispExt_t { 116*437bfbebSnyanmisaka RK_S32 frame_center_horizontal_offset[3]; 117*437bfbebSnyanmisaka RK_S32 frame_center_vertical_offset[3]; 118*437bfbebSnyanmisaka } M2VDDxvaPicDispExt; 119*437bfbebSnyanmisaka 120*437bfbebSnyanmisaka 121*437bfbebSnyanmisaka typedef struct M2VDDxvaParam_t { 122*437bfbebSnyanmisaka RK_U32 bitstream_length; 123*437bfbebSnyanmisaka RK_U32 bitstream_start_bit; 124*437bfbebSnyanmisaka RK_U32 bitstream_offset; 125*437bfbebSnyanmisaka RK_U8 *qp_tab; 126*437bfbebSnyanmisaka 127*437bfbebSnyanmisaka DXVA_PicEntry_M2V CurrPic; 128*437bfbebSnyanmisaka DXVA_PicEntry_M2V frame_refs[4]; 129*437bfbebSnyanmisaka 130*437bfbebSnyanmisaka RK_U32 seq_ext_head_dec_flag; 131*437bfbebSnyanmisaka 132*437bfbebSnyanmisaka M2VDDxvaSeq seq; 133*437bfbebSnyanmisaka M2VDDxvaSeqExt seq_ext; 134*437bfbebSnyanmisaka M2VDDxvaGop gop; 135*437bfbebSnyanmisaka M2VDDxvaPic pic; 136*437bfbebSnyanmisaka M2VDDxvaSeqDispExt seq_disp_ext; 137*437bfbebSnyanmisaka M2VDDxvaPicCodeExt pic_code_ext; 138*437bfbebSnyanmisaka M2VDDxvaPicDispExt pic_disp_ext; 139*437bfbebSnyanmisaka } M2VDDxvaParam; 140*437bfbebSnyanmisaka 141*437bfbebSnyanmisaka #endif 142