xref: /rockchip-linux_mpp/mpp/common/m2vd_syntax.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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