xref: /aosp_15_r20/external/libhevc/common/ihevc_structs.h (revision c83a76b084498d55f252f48b2e3786804cdf24b7)
1*c83a76b0SSuyog Pawar /******************************************************************************
2*c83a76b0SSuyog Pawar *
3*c83a76b0SSuyog Pawar * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
4*c83a76b0SSuyog Pawar *
5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License");
6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License.
7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at:
8*c83a76b0SSuyog Pawar *
9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0
10*c83a76b0SSuyog Pawar *
11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software
12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS,
13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and
15*c83a76b0SSuyog Pawar * limitations under the License.
16*c83a76b0SSuyog Pawar *
17*c83a76b0SSuyog Pawar ******************************************************************************/
18*c83a76b0SSuyog Pawar 
19*c83a76b0SSuyog Pawar /**
20*c83a76b0SSuyog Pawar  *******************************************************************************
21*c83a76b0SSuyog Pawar  * @file
22*c83a76b0SSuyog Pawar  *  ihevc_structs.h
23*c83a76b0SSuyog Pawar  *
24*c83a76b0SSuyog Pawar  * @brief
25*c83a76b0SSuyog Pawar  *  Structure definitions used in the code
26*c83a76b0SSuyog Pawar  *
27*c83a76b0SSuyog Pawar  * @author
28*c83a76b0SSuyog Pawar  *  Ittiam
29*c83a76b0SSuyog Pawar  *
30*c83a76b0SSuyog Pawar  * @par List of Functions:
31*c83a76b0SSuyog Pawar  *
32*c83a76b0SSuyog Pawar  * @remarks
33*c83a76b0SSuyog Pawar  *  None
34*c83a76b0SSuyog Pawar  *
35*c83a76b0SSuyog Pawar  *******************************************************************************
36*c83a76b0SSuyog Pawar  */
37*c83a76b0SSuyog Pawar 
38*c83a76b0SSuyog Pawar #ifndef _IHEVC_STRUCTS_H_
39*c83a76b0SSuyog Pawar #define _IHEVC_STRUCTS_H_
40*c83a76b0SSuyog Pawar 
41*c83a76b0SSuyog Pawar 
42*c83a76b0SSuyog Pawar #ifndef DISABLE_SEI
43*c83a76b0SSuyog Pawar /**
44*c83a76b0SSuyog Pawar  * Buffering Period SEI parameters Info
45*c83a76b0SSuyog Pawar  */
46*c83a76b0SSuyog Pawar typedef struct
47*c83a76b0SSuyog Pawar {
48*c83a76b0SSuyog Pawar     /**
49*c83a76b0SSuyog Pawar      * specifies SPS Id active for the coded picture assosiated
50*c83a76b0SSuyog Pawar      * with the bp message.
51*c83a76b0SSuyog Pawar      */
52*c83a76b0SSuyog Pawar     UWORD8  u1_bp_seq_parameter_set_id;
53*c83a76b0SSuyog Pawar 
54*c83a76b0SSuyog Pawar     /**
55*c83a76b0SSuyog Pawar      * Derived from Hrd parameters
56*c83a76b0SSuyog Pawar      */
57*c83a76b0SSuyog Pawar     UWORD8  u1_sub_pic_cpb_params_present_flag;
58*c83a76b0SSuyog Pawar 
59*c83a76b0SSuyog Pawar     /**
60*c83a76b0SSuyog Pawar      * specifies the presence of the initial_alt_cpb_removal_delay[ i ]
61*c83a76b0SSuyog Pawar      * and initial_alt_cpb_removal_offset[ i ] syntax elements
62*c83a76b0SSuyog Pawar      */
63*c83a76b0SSuyog Pawar     UWORD8  u1_rap_cpb_params_present_flag;
64*c83a76b0SSuyog Pawar 
65*c83a76b0SSuyog Pawar     /**
66*c83a76b0SSuyog Pawar      * cbp removal delay used in buffering period SEI
67*c83a76b0SSuyog Pawar      */
68*c83a76b0SSuyog Pawar     UWORD32 u4_cpb_delay_offset;
69*c83a76b0SSuyog Pawar 
70*c83a76b0SSuyog Pawar     /**
71*c83a76b0SSuyog Pawar      * dbp removal delay used in buffering period SEI
72*c83a76b0SSuyog Pawar      */
73*c83a76b0SSuyog Pawar     UWORD32 u4_dpb_delay_offset;
74*c83a76b0SSuyog Pawar 
75*c83a76b0SSuyog Pawar     /**
76*c83a76b0SSuyog Pawar      * concatanation flag
77*c83a76b0SSuyog Pawar      */
78*c83a76b0SSuyog Pawar     UWORD8 u1_concatenation_flag;
79*c83a76b0SSuyog Pawar 
80*c83a76b0SSuyog Pawar     /**
81*c83a76b0SSuyog Pawar      * delata cbp removal delay
82*c83a76b0SSuyog Pawar      */
83*c83a76b0SSuyog Pawar     UWORD32 u4_au_cpb_removal_delay_delta_minus1;
84*c83a76b0SSuyog Pawar 
85*c83a76b0SSuyog Pawar     /**
86*c83a76b0SSuyog Pawar      * specify the default initial CPB removal delays, respectively,
87*c83a76b0SSuyog Pawar      * for the CPB when the NAL HRD parameters are in use
88*c83a76b0SSuyog Pawar      */
89*c83a76b0SSuyog Pawar     UWORD32 au4_nal_initial_cpb_removal_delay[MAX_CPB_CNT];
90*c83a76b0SSuyog Pawar 
91*c83a76b0SSuyog Pawar     /**
92*c83a76b0SSuyog Pawar      * specify the alternate initial CPB removal delays, respectively,
93*c83a76b0SSuyog Pawar      * for the CPB when the NAL HRD parameters are in use
94*c83a76b0SSuyog Pawar      */
95*c83a76b0SSuyog Pawar     UWORD32 au4_nal_initial_alt_cpb_removal_delay[MAX_CPB_CNT];
96*c83a76b0SSuyog Pawar 
97*c83a76b0SSuyog Pawar     /**
98*c83a76b0SSuyog Pawar      * specify the initial CPB removal delay offset, respectively,
99*c83a76b0SSuyog Pawar      * for the CPB when the NAL HRD parameters are in use
100*c83a76b0SSuyog Pawar      */
101*c83a76b0SSuyog Pawar     UWORD32 au4_nal_initial_cpb_removal_delay_offset[MAX_CPB_CNT];
102*c83a76b0SSuyog Pawar 
103*c83a76b0SSuyog Pawar     /**
104*c83a76b0SSuyog Pawar      * specify the alternate initial CPB removal delays offsets, respectively,
105*c83a76b0SSuyog Pawar      * for the CPB when the NAL HRD parameters are in use
106*c83a76b0SSuyog Pawar      */
107*c83a76b0SSuyog Pawar     UWORD32 au4_nal_initial_alt_cpb_removal_delay_offset[MAX_CPB_CNT];
108*c83a76b0SSuyog Pawar 
109*c83a76b0SSuyog Pawar     /**
110*c83a76b0SSuyog Pawar      * specify the default initial CPB removal delays, respectively,
111*c83a76b0SSuyog Pawar      * for the CPB when the VCL HRD parameters are in use
112*c83a76b0SSuyog Pawar      */
113*c83a76b0SSuyog Pawar     UWORD32 au4_vcl_initial_cpb_removal_delay[MAX_CPB_CNT];
114*c83a76b0SSuyog Pawar 
115*c83a76b0SSuyog Pawar     /**
116*c83a76b0SSuyog Pawar      * specify the initial alt CPB removal delays , respectively,
117*c83a76b0SSuyog Pawar      * for the CPB when the VCL HRD parameters are in use
118*c83a76b0SSuyog Pawar      */
119*c83a76b0SSuyog Pawar     UWORD32 au4_vcl_initial_alt_cpb_removal_delay[MAX_CPB_CNT];
120*c83a76b0SSuyog Pawar 
121*c83a76b0SSuyog Pawar     /**
122*c83a76b0SSuyog Pawar      * specify the initial CPB removal delay offset, respectively,
123*c83a76b0SSuyog Pawar      * for the CPB when the VCL HRD parameters are in use
124*c83a76b0SSuyog Pawar      */
125*c83a76b0SSuyog Pawar     UWORD32 au4_vcl_initial_cpb_removal_delay_offset[MAX_CPB_CNT];
126*c83a76b0SSuyog Pawar 
127*c83a76b0SSuyog Pawar     /**
128*c83a76b0SSuyog Pawar      * specify the alternate initial CPB removal delays offsets, respectively,
129*c83a76b0SSuyog Pawar      * for the CPB when the VCL HRD parameters are in use
130*c83a76b0SSuyog Pawar      */
131*c83a76b0SSuyog Pawar     UWORD32 au4_vcl_initial_alt_cpb_removal_delay_offset[MAX_CPB_CNT];
132*c83a76b0SSuyog Pawar 
133*c83a76b0SSuyog Pawar     /**
134*c83a76b0SSuyog Pawar      * Inital CPB removal delay
135*c83a76b0SSuyog Pawar      */
136*c83a76b0SSuyog Pawar     UWORD32 u4_initial_cpb_removal_delay_length;
137*c83a76b0SSuyog Pawar 
138*c83a76b0SSuyog Pawar     /**
139*c83a76b0SSuyog Pawar      * CPB cnt for corr. sublayer
140*c83a76b0SSuyog Pawar      */
141*c83a76b0SSuyog Pawar     UWORD32 u4_cpb_cnt;
142*c83a76b0SSuyog Pawar 
143*c83a76b0SSuyog Pawar 
144*c83a76b0SSuyog Pawar     /**
145*c83a76b0SSuyog Pawar      * VBV buffer size used in buffering period SEI
146*c83a76b0SSuyog Pawar      */
147*c83a76b0SSuyog Pawar     UWORD32 u4_buffer_size_sei;
148*c83a76b0SSuyog Pawar 
149*c83a76b0SSuyog Pawar     /**
150*c83a76b0SSuyog Pawar      * Encoder buffer fullness  used in buffering period SEI
151*c83a76b0SSuyog Pawar      */
152*c83a76b0SSuyog Pawar     UWORD32 u4_dbf_sei;
153*c83a76b0SSuyog Pawar 
154*c83a76b0SSuyog Pawar     /**
155*c83a76b0SSuyog Pawar      * target bitrate used in buffering period SEI
156*c83a76b0SSuyog Pawar      */
157*c83a76b0SSuyog Pawar     UWORD32 u4_target_bit_rate_sei;
158*c83a76b0SSuyog Pawar 
159*c83a76b0SSuyog Pawar }buf_period_sei_params_t;
160*c83a76b0SSuyog Pawar 
161*c83a76b0SSuyog Pawar 
162*c83a76b0SSuyog Pawar /**
163*c83a76b0SSuyog Pawar  * Picture Timing SEI parameters Info
164*c83a76b0SSuyog Pawar  */
165*c83a76b0SSuyog Pawar typedef struct
166*c83a76b0SSuyog Pawar {
167*c83a76b0SSuyog Pawar     /**
168*c83a76b0SSuyog Pawar      * derived from vui parameters
169*c83a76b0SSuyog Pawar      */
170*c83a76b0SSuyog Pawar     UWORD8 u1_frame_field_info_present_flag;
171*c83a76b0SSuyog Pawar 
172*c83a76b0SSuyog Pawar     /**
173*c83a76b0SSuyog Pawar      * indicates whether a picture should be displayed as a
174*c83a76b0SSuyog Pawar      * frame or as one or more fields
175*c83a76b0SSuyog Pawar      */
176*c83a76b0SSuyog Pawar     UWORD32 u4_pic_struct;
177*c83a76b0SSuyog Pawar 
178*c83a76b0SSuyog Pawar     UWORD32 u4_source_scan_type;
179*c83a76b0SSuyog Pawar 
180*c83a76b0SSuyog Pawar     /**
181*c83a76b0SSuyog Pawar      * if 1, indicates if the current pic is a duplicte pic in output order
182*c83a76b0SSuyog Pawar      */
183*c83a76b0SSuyog Pawar     UWORD8 u1_duplicate_flag;
184*c83a76b0SSuyog Pawar 
185*c83a76b0SSuyog Pawar     /**
186*c83a76b0SSuyog Pawar      * specifies the number clock ticks between the nominal CPB removal time
187*c83a76b0SSuyog Pawar      * au associated with the pt SEI message and
188*c83a76b0SSuyog Pawar      * the preceding au in decoding order that contained a bp SEI message
189*c83a76b0SSuyog Pawar      */
190*c83a76b0SSuyog Pawar     UWORD32 u4_au_cpb_removal_delay_minus1;
191*c83a76b0SSuyog Pawar 
192*c83a76b0SSuyog Pawar     /**
193*c83a76b0SSuyog Pawar      * compute the DPB output time of the picture
194*c83a76b0SSuyog Pawar      */
195*c83a76b0SSuyog Pawar     UWORD32 u4_pic_dpb_output_delay;
196*c83a76b0SSuyog Pawar 
197*c83a76b0SSuyog Pawar     UWORD32 u4_pic_dpb_output_du_delay;
198*c83a76b0SSuyog Pawar 
199*c83a76b0SSuyog Pawar     /**
200*c83a76b0SSuyog Pawar      * specifies the number of decoding units in the access unit
201*c83a76b0SSuyog Pawar      * the picture timing SEI message is associated with
202*c83a76b0SSuyog Pawar      */
203*c83a76b0SSuyog Pawar     UWORD32 u4_num_decoding_units_minus1;
204*c83a76b0SSuyog Pawar 
205*c83a76b0SSuyog Pawar     /**
206*c83a76b0SSuyog Pawar      * if 1 specifies that the du_common_cpb_removal_delay_increment_minus1 is present
207*c83a76b0SSuyog Pawar      */
208*c83a76b0SSuyog Pawar     UWORD8 u1_du_common_cpb_removal_delay_flag;
209*c83a76b0SSuyog Pawar 
210*c83a76b0SSuyog Pawar     /**
211*c83a76b0SSuyog Pawar      * specifies the duration, in units of clock sub-ticks,
212*c83a76b0SSuyog Pawar      * between the nominal CPB removal times of any two consecutive decoding units
213*c83a76b0SSuyog Pawar      * in decoding order in the access unit associated with the pt_SEI message
214*c83a76b0SSuyog Pawar      */
215*c83a76b0SSuyog Pawar     UWORD32 u4_du_common_cpb_removal_delay_increment_minus1; //same as u4_du_cpb_removal_delay_increment_minus1
216*c83a76b0SSuyog Pawar 
217*c83a76b0SSuyog Pawar     /**
218*c83a76b0SSuyog Pawar      * specifies the number of NAL units in the decoding unit of the access unit
219*c83a76b0SSuyog Pawar      * the picture timing SEI message is associated with.
220*c83a76b0SSuyog Pawar      * range from 0 to (pic size in ctby - 1)
221*c83a76b0SSuyog Pawar      */
222*c83a76b0SSuyog Pawar     UWORD32 au4_num_nalus_in_du_minus1[4320 / MIN_CTB_SIZE];
223*c83a76b0SSuyog Pawar 
224*c83a76b0SSuyog Pawar     /**
225*c83a76b0SSuyog Pawar      * specifies the duration, in units of clock sub-ticks,
226*c83a76b0SSuyog Pawar      * between the nominal CPB removal times of the ( i + 1 )-th decoding unit and the i-th decoding unit,
227*c83a76b0SSuyog Pawar      * in decoding order, in the access unit associated with the pt_SEI message
228*c83a76b0SSuyog Pawar      */
229*c83a76b0SSuyog Pawar     UWORD32 au4_du_cpb_removal_delay_increment_minus1[4320 / MIN_CTB_SIZE];
230*c83a76b0SSuyog Pawar 
231*c83a76b0SSuyog Pawar }pic_timing_sei_params_t;
232*c83a76b0SSuyog Pawar 
233*c83a76b0SSuyog Pawar /**
234*c83a76b0SSuyog Pawar  * Structure to hold Recovery point SEI parameters Info
235*c83a76b0SSuyog Pawar  */
236*c83a76b0SSuyog Pawar typedef struct
237*c83a76b0SSuyog Pawar {
238*c83a76b0SSuyog Pawar     /**
239*c83a76b0SSuyog Pawar      * specifies the recovery point of output pictures in output order
240*c83a76b0SSuyog Pawar      */
241*c83a76b0SSuyog Pawar     WORD32 i4_recovery_poc_cnt;
242*c83a76b0SSuyog Pawar 
243*c83a76b0SSuyog Pawar     UWORD8 u1_exact_match_flag;
244*c83a76b0SSuyog Pawar 
245*c83a76b0SSuyog Pawar     /**
246*c83a76b0SSuyog Pawar      * indicates the presence or absence of a broken link in the NAL unit
247*c83a76b0SSuyog Pawar      * stream at the location of the recovery point SEI message
248*c83a76b0SSuyog Pawar      */
249*c83a76b0SSuyog Pawar 
250*c83a76b0SSuyog Pawar     UWORD8 u1_broken_link_flag;
251*c83a76b0SSuyog Pawar 
252*c83a76b0SSuyog Pawar }recovery_point_sei_params_t;
253*c83a76b0SSuyog Pawar 
254*c83a76b0SSuyog Pawar /**
255*c83a76b0SSuyog Pawar  * Structure to hold Mastering Display Colour Volume SEI
256*c83a76b0SSuyog Pawar  */
257*c83a76b0SSuyog Pawar typedef struct
258*c83a76b0SSuyog Pawar {
259*c83a76b0SSuyog Pawar     /**
260*c83a76b0SSuyog Pawar      * Array to store the display_primaries_x values
261*c83a76b0SSuyog Pawar      */
262*c83a76b0SSuyog Pawar     UWORD16 au2_display_primaries_x[3];
263*c83a76b0SSuyog Pawar 
264*c83a76b0SSuyog Pawar     /**
265*c83a76b0SSuyog Pawar      * Array to store the display_primaries_y values
266*c83a76b0SSuyog Pawar      */
267*c83a76b0SSuyog Pawar     UWORD16 au2_display_primaries_y[3];
268*c83a76b0SSuyog Pawar 
269*c83a76b0SSuyog Pawar     /**
270*c83a76b0SSuyog Pawar      * Variable to store the white point x value
271*c83a76b0SSuyog Pawar      */
272*c83a76b0SSuyog Pawar     UWORD16 u2_white_point_x;
273*c83a76b0SSuyog Pawar 
274*c83a76b0SSuyog Pawar     /**
275*c83a76b0SSuyog Pawar      * Variable to store the white point y value
276*c83a76b0SSuyog Pawar      */
277*c83a76b0SSuyog Pawar     UWORD16 u2_white_point_y;
278*c83a76b0SSuyog Pawar 
279*c83a76b0SSuyog Pawar     /**
280*c83a76b0SSuyog Pawar      * Variable to store the max display mastering luminance value
281*c83a76b0SSuyog Pawar      */
282*c83a76b0SSuyog Pawar     UWORD32 u4_max_display_mastering_luminance;
283*c83a76b0SSuyog Pawar 
284*c83a76b0SSuyog Pawar     /**
285*c83a76b0SSuyog Pawar      * Variable to store the min display mastering luminance value
286*c83a76b0SSuyog Pawar      */
287*c83a76b0SSuyog Pawar     UWORD32 u4_min_display_mastering_luminance;
288*c83a76b0SSuyog Pawar 
289*c83a76b0SSuyog Pawar }mastering_dis_col_vol_sei_params_t;
290*c83a76b0SSuyog Pawar 
291*c83a76b0SSuyog Pawar /**
292*c83a76b0SSuyog Pawar  * Structure to hold active parameter parameter set SEI parameters Info
293*c83a76b0SSuyog Pawar  */
294*c83a76b0SSuyog Pawar typedef struct
295*c83a76b0SSuyog Pawar {
296*c83a76b0SSuyog Pawar     /*
297*c83a76b0SSuyog Pawar     * active vps id
298*c83a76b0SSuyog Pawar     */
299*c83a76b0SSuyog Pawar 
300*c83a76b0SSuyog Pawar     UWORD8 u1_active_video_parameter_set_id;
301*c83a76b0SSuyog Pawar 
302*c83a76b0SSuyog Pawar     /*
303*c83a76b0SSuyog Pawar      * default set to zero.
304*c83a76b0SSuyog Pawar      */
305*c83a76b0SSuyog Pawar     UWORD8 u1_self_contained_cvs_flag;
306*c83a76b0SSuyog Pawar 
307*c83a76b0SSuyog Pawar     UWORD8 u1_no_parameter_set_update_flag;
308*c83a76b0SSuyog Pawar 
309*c83a76b0SSuyog Pawar     UWORD8 u1_num_sps_ids_minus1;
310*c83a76b0SSuyog Pawar 
311*c83a76b0SSuyog Pawar     /*
312*c83a76b0SSuyog Pawar      * active sps id
313*c83a76b0SSuyog Pawar      */
314*c83a76b0SSuyog Pawar     UWORD8 au1_active_seq_parameter_set_id[15];
315*c83a76b0SSuyog Pawar 
316*c83a76b0SSuyog Pawar     UWORD32 au4_layer_sps_idx[64];
317*c83a76b0SSuyog Pawar 
318*c83a76b0SSuyog Pawar }active_parameter_set_sei_param_t;
319*c83a76b0SSuyog Pawar 
320*c83a76b0SSuyog Pawar /**
321*c83a76b0SSuyog Pawar  * Structure to hold SEI Hash values
322*c83a76b0SSuyog Pawar  */
323*c83a76b0SSuyog Pawar typedef struct
324*c83a76b0SSuyog Pawar {
325*c83a76b0SSuyog Pawar     /*
326*c83a76b0SSuyog Pawar      * SEI Hash values for each color component
327*c83a76b0SSuyog Pawar      */
328*c83a76b0SSuyog Pawar     UWORD8 au1_sei_hash[3][16];
329*c83a76b0SSuyog Pawar 
330*c83a76b0SSuyog Pawar }hash_sei_param_t;
331*c83a76b0SSuyog Pawar 
332*c83a76b0SSuyog Pawar /**
333*c83a76b0SSuyog Pawar  * Structure to hold user data registered SEI param Info
334*c83a76b0SSuyog Pawar  */
335*c83a76b0SSuyog Pawar typedef struct
336*c83a76b0SSuyog Pawar {
337*c83a76b0SSuyog Pawar     /**
338*c83a76b0SSuyog Pawar      * Contains country code by Annex A of Recommendation ITU-T T.35
339*c83a76b0SSuyog Pawar      */
340*c83a76b0SSuyog Pawar     UWORD8 u1_itu_t_t35_country_code;
341*c83a76b0SSuyog Pawar 
342*c83a76b0SSuyog Pawar     /**
343*c83a76b0SSuyog Pawar      * Contains country code by Annex B of Recommendation ITU-T T.35
344*c83a76b0SSuyog Pawar      */
345*c83a76b0SSuyog Pawar     UWORD8 u1_itu_t_t35_country_code_extension_byte;
346*c83a76b0SSuyog Pawar 
347*c83a76b0SSuyog Pawar     /**
348*c83a76b0SSuyog Pawar      * Contains data registered as specified in Recommendation ITU-T T.35
349*c83a76b0SSuyog Pawar      */
350*c83a76b0SSuyog Pawar     UWORD8 u1_itu_t_t35_payload_byte[MAX_USERDATA_PAYLOAD];
351*c83a76b0SSuyog Pawar 
352*c83a76b0SSuyog Pawar     /**
353*c83a76b0SSuyog Pawar      * Valid payload size present in this buffer
354*c83a76b0SSuyog Pawar      */
355*c83a76b0SSuyog Pawar     WORD32 i4_valid_payload_size;
356*c83a76b0SSuyog Pawar 
357*c83a76b0SSuyog Pawar     /**
358*c83a76b0SSuyog Pawar      * Total payload size incase payloadSize > IHEVCD_MAX_USERDATA_PAYLOAD
359*c83a76b0SSuyog Pawar      */
360*c83a76b0SSuyog Pawar     WORD32 i4_payload_size;
361*c83a76b0SSuyog Pawar }user_data_registered_itu_t_t35_t;
362*c83a76b0SSuyog Pawar 
363*c83a76b0SSuyog Pawar /**
364*c83a76b0SSuyog Pawar  * Structure to hold time code SEI param info
365*c83a76b0SSuyog Pawar  */
366*c83a76b0SSuyog Pawar typedef struct
367*c83a76b0SSuyog Pawar {
368*c83a76b0SSuyog Pawar     /**
369*c83a76b0SSuyog Pawar      * Number of sets of clock timestamp syntax elements present for the current picture
370*c83a76b0SSuyog Pawar      */
371*c83a76b0SSuyog Pawar     UWORD8 u1_num_clock_ts;
372*c83a76b0SSuyog Pawar 
373*c83a76b0SSuyog Pawar     /**
374*c83a76b0SSuyog Pawar      * Indicates presenc of associated set of clock timestamps
375*c83a76b0SSuyog Pawar      */
376*c83a76b0SSuyog Pawar     UWORD8 au1_clock_timestamp_flag[MAX_NUM_CLOCK_TS];
377*c83a76b0SSuyog Pawar 
378*c83a76b0SSuyog Pawar     /**
379*c83a76b0SSuyog Pawar      * Used in calculating clockTimestamp[i]
380*c83a76b0SSuyog Pawar      */
381*c83a76b0SSuyog Pawar     UWORD8 au1_units_field_based_flag[MAX_NUM_CLOCK_TS];
382*c83a76b0SSuyog Pawar 
383*c83a76b0SSuyog Pawar     /**
384*c83a76b0SSuyog Pawar      * Specifies the method of dropping values of the n_frames[i] syntax element
385*c83a76b0SSuyog Pawar      */
386*c83a76b0SSuyog Pawar     UWORD8 au1_counting_type[MAX_NUM_CLOCK_TS];
387*c83a76b0SSuyog Pawar 
388*c83a76b0SSuyog Pawar     /**
389*c83a76b0SSuyog Pawar      * Specifies that the n_frames[i] syntax element is followed by seconds_value[i],
390*c83a76b0SSuyog Pawar      * minutes_value[i] and hours_value[i]
391*c83a76b0SSuyog Pawar      */
392*c83a76b0SSuyog Pawar     UWORD8 au1_full_timestamp_flag[MAX_NUM_CLOCK_TS];
393*c83a76b0SSuyog Pawar 
394*c83a76b0SSuyog Pawar     /**
395*c83a76b0SSuyog Pawar      * Indicates the discontinuity in clockTimestamp
396*c83a76b0SSuyog Pawar      */
397*c83a76b0SSuyog Pawar     UWORD8 au1_discontinuity_flag[MAX_NUM_CLOCK_TS];
398*c83a76b0SSuyog Pawar 
399*c83a76b0SSuyog Pawar     /**
400*c83a76b0SSuyog Pawar      * Specifies the skipping of one or more values of n_frames[i]
401*c83a76b0SSuyog Pawar      */
402*c83a76b0SSuyog Pawar     UWORD8 au1_cnt_dropped_flag[MAX_NUM_CLOCK_TS];
403*c83a76b0SSuyog Pawar 
404*c83a76b0SSuyog Pawar     /**
405*c83a76b0SSuyog Pawar      * Specifies the value of nFrames used to compute clockTimestamp[i]
406*c83a76b0SSuyog Pawar      */
407*c83a76b0SSuyog Pawar     UWORD16 au2_n_frames[MAX_NUM_CLOCK_TS];
408*c83a76b0SSuyog Pawar 
409*c83a76b0SSuyog Pawar     /**
410*c83a76b0SSuyog Pawar      * Specifies the presence of seconds_value[i] and minutes_flag[i]
411*c83a76b0SSuyog Pawar      */
412*c83a76b0SSuyog Pawar     UWORD8 au1_seconds_flag[MAX_NUM_CLOCK_TS];
413*c83a76b0SSuyog Pawar 
414*c83a76b0SSuyog Pawar     /**
415*c83a76b0SSuyog Pawar      * Specifies the presence of minutes_value[i] and hours_flag[i]
416*c83a76b0SSuyog Pawar      */
417*c83a76b0SSuyog Pawar     UWORD8 au1_minutes_flag[MAX_NUM_CLOCK_TS];
418*c83a76b0SSuyog Pawar 
419*c83a76b0SSuyog Pawar     /**
420*c83a76b0SSuyog Pawar      * Specifies the presence of hours_value[i]
421*c83a76b0SSuyog Pawar      */
422*c83a76b0SSuyog Pawar     UWORD8 au1_hours_flag[MAX_NUM_CLOCK_TS];
423*c83a76b0SSuyog Pawar 
424*c83a76b0SSuyog Pawar     /**
425*c83a76b0SSuyog Pawar      * Specifies the value of sS used to compute clockTimestamp[i]
426*c83a76b0SSuyog Pawar      */
427*c83a76b0SSuyog Pawar     UWORD8 au1_seconds_value[MAX_NUM_CLOCK_TS];
428*c83a76b0SSuyog Pawar 
429*c83a76b0SSuyog Pawar     /**
430*c83a76b0SSuyog Pawar      * Specifies the value of mM used to compute clockTimestamp[i]
431*c83a76b0SSuyog Pawar      */
432*c83a76b0SSuyog Pawar     UWORD8 au1_minutes_value[MAX_NUM_CLOCK_TS];
433*c83a76b0SSuyog Pawar 
434*c83a76b0SSuyog Pawar     /**
435*c83a76b0SSuyog Pawar      * Specifies the value of hH used to compute clockTimestamp[i]
436*c83a76b0SSuyog Pawar      */
437*c83a76b0SSuyog Pawar     UWORD8 au1_hours_value[MAX_NUM_CLOCK_TS];
438*c83a76b0SSuyog Pawar 
439*c83a76b0SSuyog Pawar     /**
440*c83a76b0SSuyog Pawar      * Specifies the length in bits of the time_offset_value[i]
441*c83a76b0SSuyog Pawar      */
442*c83a76b0SSuyog Pawar     UWORD8 au1_time_offset_length[MAX_NUM_CLOCK_TS];
443*c83a76b0SSuyog Pawar 
444*c83a76b0SSuyog Pawar     /**
445*c83a76b0SSuyog Pawar      * pecifies the value of tOffset used to compute clockTimestamp[i]
446*c83a76b0SSuyog Pawar      */
447*c83a76b0SSuyog Pawar     UWORD8 au1_time_offset_value[MAX_NUM_CLOCK_TS];
448*c83a76b0SSuyog Pawar 
449*c83a76b0SSuyog Pawar }time_code_t;
450*c83a76b0SSuyog Pawar 
451*c83a76b0SSuyog Pawar /**
452*c83a76b0SSuyog Pawar  *  @brief    Structure for Content Light Level Info
453*c83a76b0SSuyog Pawar  *
454*c83a76b0SSuyog Pawar  */
455*c83a76b0SSuyog Pawar typedef struct
456*c83a76b0SSuyog Pawar {
457*c83a76b0SSuyog Pawar     /**
458*c83a76b0SSuyog Pawar      * 16bit unsigned number which indicates the maximum pixel intensity of all samples in bit-stream in units of 1 candela per square metre
459*c83a76b0SSuyog Pawar      */
460*c83a76b0SSuyog Pawar     UWORD16 u2_sei_max_cll;
461*c83a76b0SSuyog Pawar 
462*c83a76b0SSuyog Pawar     /**
463*c83a76b0SSuyog Pawar      * 16bit unsigned number which indicates the average pixel intensity of all samples in bit-stream in units of 1 candela per square metre
464*c83a76b0SSuyog Pawar      */
465*c83a76b0SSuyog Pawar     UWORD16 u2_sei_avg_cll;
466*c83a76b0SSuyog Pawar 
467*c83a76b0SSuyog Pawar }content_light_level_info_sei_params_t;
468*c83a76b0SSuyog Pawar 
469*c83a76b0SSuyog Pawar 
470*c83a76b0SSuyog Pawar /**
471*c83a76b0SSuyog Pawar  * Structure to hold SEI parameters Info
472*c83a76b0SSuyog Pawar  */
473*c83a76b0SSuyog Pawar typedef struct
474*c83a76b0SSuyog Pawar {
475*c83a76b0SSuyog Pawar 
476*c83a76b0SSuyog Pawar     WORD8 i1_sei_parameters_present_flag;
477*c83a76b0SSuyog Pawar 
478*c83a76b0SSuyog Pawar     WORD8 i1_aud_present_flag;
479*c83a76b0SSuyog Pawar 
480*c83a76b0SSuyog Pawar     WORD8 i1_buf_period_params_present_flag;
481*c83a76b0SSuyog Pawar 
482*c83a76b0SSuyog Pawar     WORD8 i1_pic_timing_params_present_flag;
483*c83a76b0SSuyog Pawar 
484*c83a76b0SSuyog Pawar     WORD8 i1_recovery_point_params_present_flag;
485*c83a76b0SSuyog Pawar 
486*c83a76b0SSuyog Pawar     WORD8 i1_active_parameter_set;
487*c83a76b0SSuyog Pawar 
488*c83a76b0SSuyog Pawar     WORD8 i4_sei_mastering_disp_colour_vol_params_present_flags;
489*c83a76b0SSuyog Pawar 
490*c83a76b0SSuyog Pawar     WORD8 i1_sei_cll_enable;
491*c83a76b0SSuyog Pawar 
492*c83a76b0SSuyog Pawar     /* Enable/Disable SEI Hash on the Decoded picture & Hash type */
493*c83a76b0SSuyog Pawar     /* < 3 : Checksum, 2 : CRC, 1 : MD5, 0 : disable >            */
494*c83a76b0SSuyog Pawar     /* Other values are not supported                             */
495*c83a76b0SSuyog Pawar     WORD8 i1_decoded_pic_hash_sei_flag;
496*c83a76b0SSuyog Pawar 
497*c83a76b0SSuyog Pawar     /* number of user data e.g. CC data, BAR data, AFD data etc */
498*c83a76b0SSuyog Pawar     WORD32 i4_sei_user_data_cnt;
499*c83a76b0SSuyog Pawar 
500*c83a76b0SSuyog Pawar     WORD8 i1_user_data_registered_present_flag;
501*c83a76b0SSuyog Pawar 
502*c83a76b0SSuyog Pawar     WORD8 i1_time_code_present_flag;
503*c83a76b0SSuyog Pawar 
504*c83a76b0SSuyog Pawar     buf_period_sei_params_t  s_buf_period_sei_params;
505*c83a76b0SSuyog Pawar 
506*c83a76b0SSuyog Pawar     pic_timing_sei_params_t  s_pic_timing_sei_params;
507*c83a76b0SSuyog Pawar 
508*c83a76b0SSuyog Pawar     recovery_point_sei_params_t s_recovery_point_params;
509*c83a76b0SSuyog Pawar 
510*c83a76b0SSuyog Pawar     active_parameter_set_sei_param_t s_active_parameter_set_sei_params;
511*c83a76b0SSuyog Pawar 
512*c83a76b0SSuyog Pawar     hash_sei_param_t    s_hash_sei_params;
513*c83a76b0SSuyog Pawar 
514*c83a76b0SSuyog Pawar     content_light_level_info_sei_params_t s_cll_info_sei_params;
515*c83a76b0SSuyog Pawar 
516*c83a76b0SSuyog Pawar     mastering_dis_col_vol_sei_params_t s_mastering_dis_col_vol_sei_params;
517*c83a76b0SSuyog Pawar 
518*c83a76b0SSuyog Pawar     user_data_registered_itu_t_t35_t as_user_data_registered_itu_t_t35[USER_DATA_MAX];
519*c83a76b0SSuyog Pawar 
520*c83a76b0SSuyog Pawar     time_code_t s_time_code;
521*c83a76b0SSuyog Pawar } sei_params_t;
522*c83a76b0SSuyog Pawar 
523*c83a76b0SSuyog Pawar #endif
524*c83a76b0SSuyog Pawar 
525*c83a76b0SSuyog Pawar /**
526*c83a76b0SSuyog Pawar  * Sub-layer HRD parameters Info
527*c83a76b0SSuyog Pawar  */
528*c83a76b0SSuyog Pawar typedef struct
529*c83a76b0SSuyog Pawar {
530*c83a76b0SSuyog Pawar     /**
531*c83a76b0SSuyog Pawar      * (together with bit_rate_scale) specifies the
532*c83a76b0SSuyog Pawar      * maximum input bit rate for the i-th CPB
533*c83a76b0SSuyog Pawar      */
534*c83a76b0SSuyog Pawar     UWORD32 au4_bit_rate_value_minus1[MAX_CPB_CNT];
535*c83a76b0SSuyog Pawar     /**
536*c83a76b0SSuyog Pawar      * together with cpb_size_scale to specify the
537*c83a76b0SSuyog Pawar      * CPB size when the CPB operates at the access unit level.
538*c83a76b0SSuyog Pawar      */
539*c83a76b0SSuyog Pawar     UWORD32 au4_cpb_size_value_minus1[MAX_CPB_CNT];
540*c83a76b0SSuyog Pawar 
541*c83a76b0SSuyog Pawar     /**
542*c83a76b0SSuyog Pawar      * together with cpb_size_du_scale to specify the CPB size
543*c83a76b0SSuyog Pawar      * when the CPB operates at sub-picture level
544*c83a76b0SSuyog Pawar      */
545*c83a76b0SSuyog Pawar     UWORD32 au4_cpb_size_du_value_minus1[MAX_CPB_CNT];
546*c83a76b0SSuyog Pawar 
547*c83a76b0SSuyog Pawar     /**
548*c83a76b0SSuyog Pawar      * specifies the maximum input bit rate for the i-th CPB when the CPB
549*c83a76b0SSuyog Pawar      * operates at the sub-picture level. bit_rate_du_value_minus1[ i ]
550*c83a76b0SSuyog Pawar      * shall be in the range of 0 to 2^32 - 2
551*c83a76b0SSuyog Pawar      */
552*c83a76b0SSuyog Pawar     UWORD32 au4_bit_rate_du_value_minus1[MAX_CPB_CNT];
553*c83a76b0SSuyog Pawar 
554*c83a76b0SSuyog Pawar     /**
555*c83a76b0SSuyog Pawar      * if 1, specifies that the HSS operates in a constant bit rate (CBR) mode
556*c83a76b0SSuyog Pawar      * if 0, specifies that the HSS operates in a intermittent bit rate (CBR) mode
557*c83a76b0SSuyog Pawar      */
558*c83a76b0SSuyog Pawar     UWORD8  au1_cbr_flag[32];
559*c83a76b0SSuyog Pawar 
560*c83a76b0SSuyog Pawar }sub_lyr_hrd_params_t;
561*c83a76b0SSuyog Pawar 
562*c83a76b0SSuyog Pawar /**
563*c83a76b0SSuyog Pawar  * HRD parameters Info
564*c83a76b0SSuyog Pawar  */
565*c83a76b0SSuyog Pawar typedef struct
566*c83a76b0SSuyog Pawar {
567*c83a76b0SSuyog Pawar     /**
568*c83a76b0SSuyog Pawar      * Indicates the presence of the
569*c83a76b0SSuyog Pawar      * num_units_in_ticks, time_scale flag
570*c83a76b0SSuyog Pawar      */
571*c83a76b0SSuyog Pawar     UWORD8 u1_timing_info_present_flag;
572*c83a76b0SSuyog Pawar 
573*c83a76b0SSuyog Pawar     /**
574*c83a76b0SSuyog Pawar      * Number of units that
575*c83a76b0SSuyog Pawar      * correspond to one increment of the
576*c83a76b0SSuyog Pawar      * clock. Indicates the  resolution
577*c83a76b0SSuyog Pawar      */
578*c83a76b0SSuyog Pawar     UWORD32 u4_num_units_in_tick;
579*c83a76b0SSuyog Pawar 
580*c83a76b0SSuyog Pawar     /**
581*c83a76b0SSuyog Pawar      * The number of time units that pass in one second
582*c83a76b0SSuyog Pawar      */
583*c83a76b0SSuyog Pawar     UWORD32 u4_time_scale;
584*c83a76b0SSuyog Pawar 
585*c83a76b0SSuyog Pawar     /**
586*c83a76b0SSuyog Pawar      * Nal- hrd parameters flag
587*c83a76b0SSuyog Pawar      */
588*c83a76b0SSuyog Pawar     UWORD8 u1_nal_hrd_parameters_present_flag;
589*c83a76b0SSuyog Pawar 
590*c83a76b0SSuyog Pawar     /**
591*c83a76b0SSuyog Pawar      * VCL- hrd parameters flag
592*c83a76b0SSuyog Pawar      */
593*c83a76b0SSuyog Pawar     UWORD8 u1_vcl_hrd_parameters_present_flag;
594*c83a76b0SSuyog Pawar 
595*c83a76b0SSuyog Pawar     /**
596*c83a76b0SSuyog Pawar      * Indicates the presence of NAL-HRD params or VCL_HRD params
597*c83a76b0SSuyog Pawar      * in the bitstream
598*c83a76b0SSuyog Pawar      */
599*c83a76b0SSuyog Pawar     UWORD8 u1_cpbdpb_delays_present_flag;
600*c83a76b0SSuyog Pawar 
601*c83a76b0SSuyog Pawar     /**
602*c83a76b0SSuyog Pawar      * specifies that sub-picture level CPB removal delay parameters are
603*c83a76b0SSuyog Pawar      * present in picture timing SEI messages
604*c83a76b0SSuyog Pawar      */
605*c83a76b0SSuyog Pawar     UWORD8 u1_sub_pic_cpb_params_present_flag;
606*c83a76b0SSuyog Pawar 
607*c83a76b0SSuyog Pawar     /**
608*c83a76b0SSuyog Pawar      * specify the clock sub-tick
609*c83a76b0SSuyog Pawar      * (the minimum interval of time that can be represented in the coded data when sub_pic_cpb_params_present_flag is equal to 1)
610*c83a76b0SSuyog Pawar      */
611*c83a76b0SSuyog Pawar     UWORD8 u1_tick_divisor_minus2;
612*c83a76b0SSuyog Pawar 
613*c83a76b0SSuyog Pawar     /**
614*c83a76b0SSuyog Pawar      * specifies the length, in bits for the du cpb delay syntax in pt_sei
615*c83a76b0SSuyog Pawar      */
616*c83a76b0SSuyog Pawar     UWORD8 u1_du_cpb_removal_delay_increment_length_minus1;
617*c83a76b0SSuyog Pawar 
618*c83a76b0SSuyog Pawar     /**
619*c83a76b0SSuyog Pawar      * Indicates presence of sub_pic_cpb_params in pic timing sei
620*c83a76b0SSuyog Pawar      */
621*c83a76b0SSuyog Pawar     UWORD8 u1_sub_pic_cpb_params_in_pic_timing_sei_flag;
622*c83a76b0SSuyog Pawar 
623*c83a76b0SSuyog Pawar     /**
624*c83a76b0SSuyog Pawar      * specifies the length, in bits, of the pic_dpb_output_du_delay syntax
625*c83a76b0SSuyog Pawar      * element in the picture timing SEI message and the
626*c83a76b0SSuyog Pawar      * pic_spt_dpb_output_du_delay syntax element in the decoding unit
627*c83a76b0SSuyog Pawar      * information SEI message
628*c83a76b0SSuyog Pawar      */
629*c83a76b0SSuyog Pawar     UWORD8 u1_dpb_output_delay_du_length_minus1;
630*c83a76b0SSuyog Pawar 
631*c83a76b0SSuyog Pawar     /**
632*c83a76b0SSuyog Pawar      * (together with bit_rate_value_minus1) specifies the
633*c83a76b0SSuyog Pawar      * maximum input bit rate of the i-th CPB
634*c83a76b0SSuyog Pawar      */
635*c83a76b0SSuyog Pawar     UWORD32 u4_bit_rate_scale;
636*c83a76b0SSuyog Pawar 
637*c83a76b0SSuyog Pawar     /**
638*c83a76b0SSuyog Pawar      * (together with cpb_size_du_value_minus1) specfies
639*c83a76b0SSuyog Pawar      * CPB size of the i-th CPB when the CPB operates
640*c83a76b0SSuyog Pawar      * at the access unit level
641*c83a76b0SSuyog Pawar      */
642*c83a76b0SSuyog Pawar     UWORD32 u4_cpb_size_scale;
643*c83a76b0SSuyog Pawar 
644*c83a76b0SSuyog Pawar     /**
645*c83a76b0SSuyog Pawar      * (together with cpb_size_du_value_minus1) specfies
646*c83a76b0SSuyog Pawar      * CPB size of the i-th CPB when the CPB operates
647*c83a76b0SSuyog Pawar      * at the sub-picture level
648*c83a76b0SSuyog Pawar      */
649*c83a76b0SSuyog Pawar     UWORD32 u4_cpb_size_du_scale;
650*c83a76b0SSuyog Pawar 
651*c83a76b0SSuyog Pawar 
652*c83a76b0SSuyog Pawar     /**
653*c83a76b0SSuyog Pawar      * specifies the length, in bits for initial cpb delay (nal/vcl)sysntax in bp sei
654*c83a76b0SSuyog Pawar      */
655*c83a76b0SSuyog Pawar     UWORD8  u1_initial_cpb_removal_delay_length_minus1;
656*c83a76b0SSuyog Pawar 
657*c83a76b0SSuyog Pawar     /**
658*c83a76b0SSuyog Pawar      * specifies the length, in bits for the au cpb delay syntax in pt_sei
659*c83a76b0SSuyog Pawar      */
660*c83a76b0SSuyog Pawar     UWORD8  u1_au_cpb_removal_delay_length_minus1;
661*c83a76b0SSuyog Pawar 
662*c83a76b0SSuyog Pawar     /**
663*c83a76b0SSuyog Pawar      * specifies the length, in bits, of the pic_dpb_output_delay syntax element in the pt SEI message
664*c83a76b0SSuyog Pawar      */
665*c83a76b0SSuyog Pawar     UWORD8  u1_dpb_output_delay_length_minus1;
666*c83a76b0SSuyog Pawar 
667*c83a76b0SSuyog Pawar     /**
668*c83a76b0SSuyog Pawar      * if 1, , for the highest temporal sub-layers, the temporal distance between the HRD output times
669*c83a76b0SSuyog Pawar      * of consecutive pictures in output order is constrained refer to Table E-6
670*c83a76b0SSuyog Pawar      */
671*c83a76b0SSuyog Pawar     UWORD8 au1_fixed_pic_rate_general_flag[VPS_MAX_SUB_LAYERS];
672*c83a76b0SSuyog Pawar 
673*c83a76b0SSuyog Pawar     UWORD8 au1_fixed_pic_rate_within_cvs_flag[VPS_MAX_SUB_LAYERS];
674*c83a76b0SSuyog Pawar 
675*c83a76b0SSuyog Pawar     /**
676*c83a76b0SSuyog Pawar      * if 1, , for the highest temporal sub-layers, the temporal distance (in clock ticks) between the
677*c83a76b0SSuyog Pawar      * element units that specify HRD output times of consecutive pictures in output order is constrained
678*c83a76b0SSuyog Pawar      * refer to Table E-6
679*c83a76b0SSuyog Pawar      */
680*c83a76b0SSuyog Pawar     UWORD16 au2_elemental_duration_in_tc_minus1[VPS_MAX_SUB_LAYERS];
681*c83a76b0SSuyog Pawar 
682*c83a76b0SSuyog Pawar     /**
683*c83a76b0SSuyog Pawar      * specifies the HRD operational mode
684*c83a76b0SSuyog Pawar      */
685*c83a76b0SSuyog Pawar     UWORD8 au1_low_delay_hrd_flag[VPS_MAX_SUB_LAYERS];
686*c83a76b0SSuyog Pawar 
687*c83a76b0SSuyog Pawar     /**
688*c83a76b0SSuyog Pawar      * 1 specifies the number of alternative CPB specifications in the
689*c83a76b0SSuyog Pawar      * bitstream of the cvs when HighestTid is equal to i
690*c83a76b0SSuyog Pawar      */
691*c83a76b0SSuyog Pawar     UWORD8 au1_cpb_cnt_minus1[VPS_MAX_SUB_LAYERS];
692*c83a76b0SSuyog Pawar 
693*c83a76b0SSuyog Pawar 
694*c83a76b0SSuyog Pawar     /**
695*c83a76b0SSuyog Pawar      * VUI level Sub-layer HRD parameters
696*c83a76b0SSuyog Pawar      */
697*c83a76b0SSuyog Pawar     sub_lyr_hrd_params_t as_sub_layer_hrd_params[VPS_MAX_SUB_LAYERS];
698*c83a76b0SSuyog Pawar 
699*c83a76b0SSuyog Pawar }hrd_params_t;
700*c83a76b0SSuyog Pawar 
701*c83a76b0SSuyog Pawar /**
702*c83a76b0SSuyog Pawar  * Structure to hold VUI parameters Info
703*c83a76b0SSuyog Pawar  */
704*c83a76b0SSuyog Pawar typedef struct
705*c83a76b0SSuyog Pawar {
706*c83a76b0SSuyog Pawar     /**
707*c83a76b0SSuyog Pawar      * indicates the presence of aspect_ratio
708*c83a76b0SSuyog Pawar      */
709*c83a76b0SSuyog Pawar     UWORD8 u1_aspect_ratio_info_present_flag;
710*c83a76b0SSuyog Pawar 
711*c83a76b0SSuyog Pawar     /**
712*c83a76b0SSuyog Pawar      * specifies the aspect ratio of the luma samples
713*c83a76b0SSuyog Pawar      */
714*c83a76b0SSuyog Pawar     UWORD8 u1_aspect_ratio_idc;
715*c83a76b0SSuyog Pawar 
716*c83a76b0SSuyog Pawar     /**
717*c83a76b0SSuyog Pawar      *  width of the luma samples. user dependent
718*c83a76b0SSuyog Pawar      */
719*c83a76b0SSuyog Pawar     UWORD16 u2_sar_width;
720*c83a76b0SSuyog Pawar 
721*c83a76b0SSuyog Pawar     /**
722*c83a76b0SSuyog Pawar      *  hieght of the luma samples. user dependent
723*c83a76b0SSuyog Pawar      */
724*c83a76b0SSuyog Pawar     UWORD16 u2_sar_height;
725*c83a76b0SSuyog Pawar 
726*c83a76b0SSuyog Pawar     /**
727*c83a76b0SSuyog Pawar      * if 1, specifies that the overscan_appropriate_flag is present
728*c83a76b0SSuyog Pawar      * if 0, the preferred display method for the video signal is unspecified
729*c83a76b0SSuyog Pawar      */
730*c83a76b0SSuyog Pawar     UWORD8 u1_overscan_info_present_flag;
731*c83a76b0SSuyog Pawar 
732*c83a76b0SSuyog Pawar     /**
733*c83a76b0SSuyog Pawar      * if 1,indicates that the cropped decoded pictures output
734*c83a76b0SSuyog Pawar      * are suitable for display using overscan
735*c83a76b0SSuyog Pawar      */
736*c83a76b0SSuyog Pawar     UWORD8 u1_overscan_appropriate_flag;
737*c83a76b0SSuyog Pawar 
738*c83a76b0SSuyog Pawar     /**
739*c83a76b0SSuyog Pawar      * if 1 specifies that video_format, video_full_range_flag and
740*c83a76b0SSuyog Pawar      * colour_description_present_flag are present
741*c83a76b0SSuyog Pawar      */
742*c83a76b0SSuyog Pawar     UWORD8 u1_video_signal_type_present_flag;
743*c83a76b0SSuyog Pawar 
744*c83a76b0SSuyog Pawar     /**
745*c83a76b0SSuyog Pawar      *
746*c83a76b0SSuyog Pawar      */
747*c83a76b0SSuyog Pawar     UWORD8 u1_video_format;
748*c83a76b0SSuyog Pawar 
749*c83a76b0SSuyog Pawar     /**
750*c83a76b0SSuyog Pawar      * indicates the black level and range of the luma and chroma signals
751*c83a76b0SSuyog Pawar      */
752*c83a76b0SSuyog Pawar     UWORD8 u1_video_full_range_flag;
753*c83a76b0SSuyog Pawar 
754*c83a76b0SSuyog Pawar     /**
755*c83a76b0SSuyog Pawar      * if 1,to 1 specifies that colour_primaries, transfer_characteristics
756*c83a76b0SSuyog Pawar      * and matrix_coefficients are present
757*c83a76b0SSuyog Pawar      */
758*c83a76b0SSuyog Pawar     UWORD8 u1_colour_description_present_flag;
759*c83a76b0SSuyog Pawar 
760*c83a76b0SSuyog Pawar     /**
761*c83a76b0SSuyog Pawar      * indicates the chromaticity coordinates of the source primaries
762*c83a76b0SSuyog Pawar      */
763*c83a76b0SSuyog Pawar     UWORD8 u1_colour_primaries;
764*c83a76b0SSuyog Pawar 
765*c83a76b0SSuyog Pawar     /**
766*c83a76b0SSuyog Pawar      * indicates the opto-electronic transfer characteristic of the source picture
767*c83a76b0SSuyog Pawar      */
768*c83a76b0SSuyog Pawar     UWORD8 u1_transfer_characteristics;
769*c83a76b0SSuyog Pawar 
770*c83a76b0SSuyog Pawar     /**
771*c83a76b0SSuyog Pawar      * the matrix coefficients used in deriving luma and chroma signals
772*c83a76b0SSuyog Pawar      * from the green, blue, and red primaries
773*c83a76b0SSuyog Pawar      */
774*c83a76b0SSuyog Pawar     UWORD8 u1_matrix_coefficients;
775*c83a76b0SSuyog Pawar 
776*c83a76b0SSuyog Pawar     /**
777*c83a76b0SSuyog Pawar      * if 1, specifies that chroma_sample_loc_type_top_field and
778*c83a76b0SSuyog Pawar      * chroma_sample_loc_type_bottom_field are present
779*c83a76b0SSuyog Pawar      */
780*c83a76b0SSuyog Pawar     UWORD8 u1_chroma_loc_info_present_flag;
781*c83a76b0SSuyog Pawar 
782*c83a76b0SSuyog Pawar     /**
783*c83a76b0SSuyog Pawar      * location of chroma samples
784*c83a76b0SSuyog Pawar      */
785*c83a76b0SSuyog Pawar     UWORD8 u1_chroma_sample_loc_type_top_field;
786*c83a76b0SSuyog Pawar 
787*c83a76b0SSuyog Pawar     UWORD8 u1_chroma_sample_loc_type_bottom_field;
788*c83a76b0SSuyog Pawar 
789*c83a76b0SSuyog Pawar     /**
790*c83a76b0SSuyog Pawar      * if 1, indicates that the value of all decoded chroma samples is
791*c83a76b0SSuyog Pawar      * equal to 1 << ( BitDepthC - 1 )
792*c83a76b0SSuyog Pawar      */
793*c83a76b0SSuyog Pawar     UWORD8 u1_neutral_chroma_indication_flag;
794*c83a76b0SSuyog Pawar 
795*c83a76b0SSuyog Pawar     /**
796*c83a76b0SSuyog Pawar      * 1 indicates that the coded video sequence conveys pictures that represent fields
797*c83a76b0SSuyog Pawar      * 0 indicates the pictures that represents field
798*c83a76b0SSuyog Pawar      */
799*c83a76b0SSuyog Pawar     UWORD8 u1_field_seq_flag;
800*c83a76b0SSuyog Pawar 
801*c83a76b0SSuyog Pawar     /**
802*c83a76b0SSuyog Pawar      * specifies that picture timing SEI messages are present for every picture
803*c83a76b0SSuyog Pawar      */
804*c83a76b0SSuyog Pawar     UWORD8 u1_frame_field_info_present_flag;
805*c83a76b0SSuyog Pawar 
806*c83a76b0SSuyog Pawar     /**
807*c83a76b0SSuyog Pawar      * 1 indicates that the default display window parameters follow next in the VUI
808*c83a76b0SSuyog Pawar      */
809*c83a76b0SSuyog Pawar     UWORD8 u1_default_display_window_flag;
810*c83a76b0SSuyog Pawar 
811*c83a76b0SSuyog Pawar     /**
812*c83a76b0SSuyog Pawar      * specify the samples of the pictures in the coded video sequence
813*c83a76b0SSuyog Pawar      * that are within the default display window,
814*c83a76b0SSuyog Pawar      * in terms of a rectangular region specified in picture coordinates for display
815*c83a76b0SSuyog Pawar      */
816*c83a76b0SSuyog Pawar     UWORD32 u4_def_disp_win_left_offset;
817*c83a76b0SSuyog Pawar 
818*c83a76b0SSuyog Pawar     UWORD32 u4_def_disp_win_right_offset;
819*c83a76b0SSuyog Pawar 
820*c83a76b0SSuyog Pawar     UWORD32 u4_def_disp_win_top_offset;
821*c83a76b0SSuyog Pawar 
822*c83a76b0SSuyog Pawar     UWORD32 u4_def_disp_win_bottom_offset;
823*c83a76b0SSuyog Pawar 
824*c83a76b0SSuyog Pawar     /**
825*c83a76b0SSuyog Pawar      * to 1 specifies that the syntax structure hrd_parameters is present in the vui_parameters syntax structue
826*c83a76b0SSuyog Pawar      */
827*c83a76b0SSuyog Pawar     UWORD8 u1_vui_hrd_parameters_present_flag;
828*c83a76b0SSuyog Pawar 
829*c83a76b0SSuyog Pawar     /**
830*c83a76b0SSuyog Pawar      * VUI level HRD parameters
831*c83a76b0SSuyog Pawar      */
832*c83a76b0SSuyog Pawar     hrd_params_t s_vui_hrd_parameters;
833*c83a76b0SSuyog Pawar 
834*c83a76b0SSuyog Pawar     /**
835*c83a76b0SSuyog Pawar      * Indicates the presence of the
836*c83a76b0SSuyog Pawar      * num_units_in_ticks, time_scale flag
837*c83a76b0SSuyog Pawar      */
838*c83a76b0SSuyog Pawar     UWORD8 u1_vui_timing_info_present_flag;
839*c83a76b0SSuyog Pawar 
840*c83a76b0SSuyog Pawar     /**
841*c83a76b0SSuyog Pawar      * Number of units that
842*c83a76b0SSuyog Pawar      * correspond to one increment of the
843*c83a76b0SSuyog Pawar      * clock. Indicates the  resolution
844*c83a76b0SSuyog Pawar      */
845*c83a76b0SSuyog Pawar     UWORD32 u4_vui_num_units_in_tick;
846*c83a76b0SSuyog Pawar 
847*c83a76b0SSuyog Pawar     /**
848*c83a76b0SSuyog Pawar      * The number of time units that pass in one second
849*c83a76b0SSuyog Pawar      */
850*c83a76b0SSuyog Pawar     UWORD32 u4_vui_time_scale;
851*c83a76b0SSuyog Pawar     /**
852*c83a76b0SSuyog Pawar      * if 1, indicates that the POC for each picture in the coded video sequence (cvs) (not the first picture), in decoding order,
853*c83a76b0SSuyog Pawar      * is proportional to the output time of the picture relative to that of the first picture in the cvs
854*c83a76b0SSuyog Pawar      */
855*c83a76b0SSuyog Pawar     UWORD8 u1_poc_proportional_to_timing_flag;
856*c83a76b0SSuyog Pawar 
857*c83a76b0SSuyog Pawar     /**
858*c83a76b0SSuyog Pawar      * num_ticks_poc_diff_one_minus1 plus 1 specifies the number of clock ticks
859*c83a76b0SSuyog Pawar      * corresponding to a difference of poc values equal to 1
860*c83a76b0SSuyog Pawar      */
861*c83a76b0SSuyog Pawar     UWORD32 u4_num_ticks_poc_diff_one_minus1;
862*c83a76b0SSuyog Pawar 
863*c83a76b0SSuyog Pawar     /**
864*c83a76b0SSuyog Pawar      * 1, specifies that the following cvs bitstream restriction parameters are present
865*c83a76b0SSuyog Pawar      */
866*c83a76b0SSuyog Pawar     UWORD8 u1_bitstream_restriction_flag;
867*c83a76b0SSuyog Pawar 
868*c83a76b0SSuyog Pawar     /**
869*c83a76b0SSuyog Pawar      *  if 1, indicates that each pps that is active in the cvs has
870*c83a76b0SSuyog Pawar      *  the same value of the tile syntax elements
871*c83a76b0SSuyog Pawar      */
872*c83a76b0SSuyog Pawar     UWORD8 u1_tiles_fixed_structure_flag;
873*c83a76b0SSuyog Pawar 
874*c83a76b0SSuyog Pawar     /**
875*c83a76b0SSuyog Pawar      * if 0, indicates that no pel outside the pic boundaries and
876*c83a76b0SSuyog Pawar      * no sub-pels derived using pels outside the pic boundaries is used for inter prediction
877*c83a76b0SSuyog Pawar      */
878*c83a76b0SSuyog Pawar     UWORD8 u1_motion_vectors_over_pic_boundaries_flag;
879*c83a76b0SSuyog Pawar 
880*c83a76b0SSuyog Pawar     /**
881*c83a76b0SSuyog Pawar      * if 1, indicates
882*c83a76b0SSuyog Pawar      * all P/B slices belonging to the same pic have an identical refpic list0,
883*c83a76b0SSuyog Pawar      * all B slices that belong to the same picture have an identical refpic list1.
884*c83a76b0SSuyog Pawar      */
885*c83a76b0SSuyog Pawar     UWORD8 u1_restricted_ref_pic_lists_flag;
886*c83a76b0SSuyog Pawar 
887*c83a76b0SSuyog Pawar     /**
888*c83a76b0SSuyog Pawar      * min_spatial_segmentation_idc, when not equal to 0, establishes a bound on the maximum possible size of distinct
889*c83a76b0SSuyog Pawar      * coded spatial segmentation regions in the pictures of the CVS. When min_spatial_segmentation_idc is not present, it is
890*c83a76b0SSuyog Pawar      * inferred to be equal to 0. The value of min_spatial_segmentation_idc shall be in the range of 0 to 4095, inclusive.
891*c83a76b0SSuyog Pawar      *
892*c83a76b0SSuyog Pawar      * can be used by a decoder to calculate the maximum number of luma samples to be processed by one processing thread
893*c83a76b0SSuyog Pawar      *
894*c83a76b0SSuyog Pawar      * If tiles=0 and entropy_sync=0 then
895*c83a76b0SSuyog Pawar      *     no slice shall exceed ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4 luma samples
896*c83a76b0SSuyog Pawar      *
897*c83a76b0SSuyog Pawar      * If tiles=1 and entropy_sync=0 then
898*c83a76b0SSuyog Pawar      *     no tile shall exceed ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4 luma samples
899*c83a76b0SSuyog Pawar      *
900*c83a76b0SSuyog Pawar      * If tiles=0 and entropy_sync=1 then
901*c83a76b0SSuyog Pawar      *     ( 2 * pic_height_in_luma_samples + pic_width_in_luma_samples ) * CtbSizeY
902*c83a76b0SSuyog Pawar      *             <= ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4
903*c83a76b0SSuyog Pawar      */
904*c83a76b0SSuyog Pawar     UWORD32 u4_min_spatial_segmentation_idc;
905*c83a76b0SSuyog Pawar     /**
906*c83a76b0SSuyog Pawar      * Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units
907*c83a76b0SSuyog Pawar      * associated with any coded picture
908*c83a76b0SSuyog Pawar      */
909*c83a76b0SSuyog Pawar     UWORD8 u1_max_bytes_per_pic_denom;
910*c83a76b0SSuyog Pawar 
911*c83a76b0SSuyog Pawar     /**
912*c83a76b0SSuyog Pawar      * Indicates an upper bound for the number of bits of coding_unit() data
913*c83a76b0SSuyog Pawar      */
914*c83a76b0SSuyog Pawar     UWORD8 u1_max_bits_per_mincu_denom;
915*c83a76b0SSuyog Pawar 
916*c83a76b0SSuyog Pawar     /**
917*c83a76b0SSuyog Pawar      * Indicate the maximum absolute value of a decoded horizontal MV component
918*c83a76b0SSuyog Pawar      * in quarter-pel luma units
919*c83a76b0SSuyog Pawar      */
920*c83a76b0SSuyog Pawar     UWORD8 u1_log2_max_mv_length_horizontal;
921*c83a76b0SSuyog Pawar 
922*c83a76b0SSuyog Pawar     /**
923*c83a76b0SSuyog Pawar      * Indicate the maximum absolute value of a decoded vertical MV component
924*c83a76b0SSuyog Pawar      * in quarter-pel luma units
925*c83a76b0SSuyog Pawar      */
926*c83a76b0SSuyog Pawar     UWORD8 u1_log2_max_mv_length_vertical;
927*c83a76b0SSuyog Pawar }vui_t;
928*c83a76b0SSuyog Pawar 
929*c83a76b0SSuyog Pawar /**
930*c83a76b0SSuyog Pawar  * Picture buffer
931*c83a76b0SSuyog Pawar  */
932*c83a76b0SSuyog Pawar typedef struct
933*c83a76b0SSuyog Pawar {
934*c83a76b0SSuyog Pawar     UWORD8 *pu1_luma;
935*c83a76b0SSuyog Pawar     UWORD8 *pu1_chroma;
936*c83a76b0SSuyog Pawar 
937*c83a76b0SSuyog Pawar     WORD32 i4_abs_poc;
938*c83a76b0SSuyog Pawar     WORD32 i4_poc_lsb;
939*c83a76b0SSuyog Pawar     /** Used to store display Timestamp for current buffer */
940*c83a76b0SSuyog Pawar     WORD32 u4_ts;
941*c83a76b0SSuyog Pawar     UWORD8 u1_used_as_ref;
942*c83a76b0SSuyog Pawar 
943*c83a76b0SSuyog Pawar     /** Used to idicate if this buffer needed for output */
944*c83a76b0SSuyog Pawar     UWORD8 u1_pic_output_flag;
945*c83a76b0SSuyog Pawar 
946*c83a76b0SSuyog Pawar     UWORD8 u1_free_delay_cnt;
947*c83a76b0SSuyog Pawar 
948*c83a76b0SSuyog Pawar     /**
949*c83a76b0SSuyog Pawar      * buffer ID from buffer manager
950*c83a76b0SSuyog Pawar      */
951*c83a76b0SSuyog Pawar     UWORD8 u1_buf_id;
952*c83a76b0SSuyog Pawar 
953*c83a76b0SSuyog Pawar 
954*c83a76b0SSuyog Pawar     // See IV_FLD_TYPE_T for all field types
955*c83a76b0SSuyog Pawar     UWORD32 e4_fld_type;
956*c83a76b0SSuyog Pawar 
957*c83a76b0SSuyog Pawar #ifndef DISABLE_SEI
958*c83a76b0SSuyog Pawar     sei_params_t s_sei_params;
959*c83a76b0SSuyog Pawar #endif
960*c83a76b0SSuyog Pawar 
961*c83a76b0SSuyog Pawar     WORD32 i4_vui_present;
962*c83a76b0SSuyog Pawar 
963*c83a76b0SSuyog Pawar     vui_t s_vui;
964*c83a76b0SSuyog Pawar 
965*c83a76b0SSuyog Pawar }pic_buf_t;
966*c83a76b0SSuyog Pawar 
967*c83a76b0SSuyog Pawar 
968*c83a76b0SSuyog Pawar /**
969*c83a76b0SSuyog Pawar  * Reference List
970*c83a76b0SSuyog Pawar  */
971*c83a76b0SSuyog Pawar typedef struct
972*c83a76b0SSuyog Pawar {
973*c83a76b0SSuyog Pawar     void *pv_pic_buf;
974*c83a76b0SSuyog Pawar 
975*c83a76b0SSuyog Pawar     void *pv_mv_buf;
976*c83a76b0SSuyog Pawar 
977*c83a76b0SSuyog Pawar     UWORD8 u1_used_as_ref;
978*c83a76b0SSuyog Pawar 
979*c83a76b0SSuyog Pawar }ref_list_t;
980*c83a76b0SSuyog Pawar 
981*c83a76b0SSuyog Pawar 
982*c83a76b0SSuyog Pawar /**
983*c83a76b0SSuyog Pawar  * SAO
984*c83a76b0SSuyog Pawar  */
985*c83a76b0SSuyog Pawar typedef struct
986*c83a76b0SSuyog Pawar {
987*c83a76b0SSuyog Pawar     /**
988*c83a76b0SSuyog Pawar      * sao_type_idx_luma
989*c83a76b0SSuyog Pawar      */
990*c83a76b0SSuyog Pawar     UWORD32      b3_y_type_idx   : 3;
991*c83a76b0SSuyog Pawar 
992*c83a76b0SSuyog Pawar     /**
993*c83a76b0SSuyog Pawar      * luma SaoOffsetVal[1]
994*c83a76b0SSuyog Pawar      */
995*c83a76b0SSuyog Pawar     WORD32      b4_y_offset_1   : 4;
996*c83a76b0SSuyog Pawar 
997*c83a76b0SSuyog Pawar     /**
998*c83a76b0SSuyog Pawar      * luma SaoOffsetVal[2]
999*c83a76b0SSuyog Pawar      */
1000*c83a76b0SSuyog Pawar     WORD32      b4_y_offset_2   : 4;
1001*c83a76b0SSuyog Pawar 
1002*c83a76b0SSuyog Pawar     /**
1003*c83a76b0SSuyog Pawar      * luma SaoOffsetVal[3]
1004*c83a76b0SSuyog Pawar      */
1005*c83a76b0SSuyog Pawar     WORD32      b4_y_offset_3   : 4;
1006*c83a76b0SSuyog Pawar 
1007*c83a76b0SSuyog Pawar     /**
1008*c83a76b0SSuyog Pawar      * luma SaoOffsetVal[4]
1009*c83a76b0SSuyog Pawar      */
1010*c83a76b0SSuyog Pawar     WORD32      b4_y_offset_4   : 4;
1011*c83a76b0SSuyog Pawar 
1012*c83a76b0SSuyog Pawar     /**
1013*c83a76b0SSuyog Pawar      * luma sao_band_position
1014*c83a76b0SSuyog Pawar      */
1015*c83a76b0SSuyog Pawar     UWORD32      b5_y_band_pos   : 5;
1016*c83a76b0SSuyog Pawar 
1017*c83a76b0SSuyog Pawar     WORD32                      : 0;
1018*c83a76b0SSuyog Pawar 
1019*c83a76b0SSuyog Pawar     /**
1020*c83a76b0SSuyog Pawar      * sao_type_idx_chroma
1021*c83a76b0SSuyog Pawar      */
1022*c83a76b0SSuyog Pawar     UWORD32      b3_cb_type_idx  : 3;
1023*c83a76b0SSuyog Pawar 
1024*c83a76b0SSuyog Pawar     /**
1025*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[1]
1026*c83a76b0SSuyog Pawar      */
1027*c83a76b0SSuyog Pawar     WORD32      b4_cb_offset_1  : 4;
1028*c83a76b0SSuyog Pawar 
1029*c83a76b0SSuyog Pawar     /**
1030*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[2]
1031*c83a76b0SSuyog Pawar      */
1032*c83a76b0SSuyog Pawar     WORD32      b4_cb_offset_2  : 4;
1033*c83a76b0SSuyog Pawar 
1034*c83a76b0SSuyog Pawar     /**
1035*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[3]
1036*c83a76b0SSuyog Pawar      */
1037*c83a76b0SSuyog Pawar     WORD32      b4_cb_offset_3  : 4;
1038*c83a76b0SSuyog Pawar 
1039*c83a76b0SSuyog Pawar     /**
1040*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[4]
1041*c83a76b0SSuyog Pawar      */
1042*c83a76b0SSuyog Pawar     WORD32      b4_cb_offset_4  : 4;
1043*c83a76b0SSuyog Pawar 
1044*c83a76b0SSuyog Pawar     /**
1045*c83a76b0SSuyog Pawar      * cb sao_band_position
1046*c83a76b0SSuyog Pawar      */
1047*c83a76b0SSuyog Pawar     UWORD32      b5_cb_band_pos  : 5;
1048*c83a76b0SSuyog Pawar 
1049*c83a76b0SSuyog Pawar     WORD32                      : 0;
1050*c83a76b0SSuyog Pawar 
1051*c83a76b0SSuyog Pawar     /**
1052*c83a76b0SSuyog Pawar      * sao_type_idx_chroma
1053*c83a76b0SSuyog Pawar      */
1054*c83a76b0SSuyog Pawar     UWORD32      b3_cr_type_idx  : 3;
1055*c83a76b0SSuyog Pawar 
1056*c83a76b0SSuyog Pawar     /**
1057*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[1]
1058*c83a76b0SSuyog Pawar      */
1059*c83a76b0SSuyog Pawar     WORD32      b4_cr_offset_1  : 4;
1060*c83a76b0SSuyog Pawar 
1061*c83a76b0SSuyog Pawar     /**
1062*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[2]
1063*c83a76b0SSuyog Pawar      */
1064*c83a76b0SSuyog Pawar     WORD32      b4_cr_offset_2  : 4;
1065*c83a76b0SSuyog Pawar 
1066*c83a76b0SSuyog Pawar     /**
1067*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[3]
1068*c83a76b0SSuyog Pawar      */
1069*c83a76b0SSuyog Pawar     WORD32      b4_cr_offset_3  : 4;
1070*c83a76b0SSuyog Pawar 
1071*c83a76b0SSuyog Pawar     /**
1072*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[4]
1073*c83a76b0SSuyog Pawar      */
1074*c83a76b0SSuyog Pawar     WORD32      b4_cr_offset_4  : 4;
1075*c83a76b0SSuyog Pawar 
1076*c83a76b0SSuyog Pawar     /**
1077*c83a76b0SSuyog Pawar      * cr sao_band_position
1078*c83a76b0SSuyog Pawar      */
1079*c83a76b0SSuyog Pawar     UWORD32      b5_cr_band_pos  : 5;
1080*c83a76b0SSuyog Pawar 
1081*c83a76b0SSuyog Pawar     WORD32                      : 0;
1082*c83a76b0SSuyog Pawar 
1083*c83a76b0SSuyog Pawar }sao_t;
1084*c83a76b0SSuyog Pawar 
1085*c83a76b0SSuyog Pawar /**
1086*c83a76b0SSuyog Pawar  * SAO
1087*c83a76b0SSuyog Pawar  */
1088*c83a76b0SSuyog Pawar typedef struct
1089*c83a76b0SSuyog Pawar {
1090*c83a76b0SSuyog Pawar     /**
1091*c83a76b0SSuyog Pawar      * sao_type_idx_luma
1092*c83a76b0SSuyog Pawar      */
1093*c83a76b0SSuyog Pawar     UWORD32      b3_y_type_idx   : 3;
1094*c83a76b0SSuyog Pawar 
1095*c83a76b0SSuyog Pawar     /**
1096*c83a76b0SSuyog Pawar      * luma SaoOffsetVal[1]
1097*c83a76b0SSuyog Pawar      */
1098*c83a76b0SSuyog Pawar     WORD32      b8_y_offset_1   : 8;
1099*c83a76b0SSuyog Pawar 
1100*c83a76b0SSuyog Pawar     /**
1101*c83a76b0SSuyog Pawar      * luma SaoOffsetVal[2]
1102*c83a76b0SSuyog Pawar      */
1103*c83a76b0SSuyog Pawar     WORD32      b8_y_offset_2   : 8;
1104*c83a76b0SSuyog Pawar 
1105*c83a76b0SSuyog Pawar     /**
1106*c83a76b0SSuyog Pawar      * luma SaoOffsetVal[3]
1107*c83a76b0SSuyog Pawar      */
1108*c83a76b0SSuyog Pawar     WORD32      b8_y_offset_3   : 8;
1109*c83a76b0SSuyog Pawar 
1110*c83a76b0SSuyog Pawar     /**
1111*c83a76b0SSuyog Pawar      * luma SaoOffsetVal[4]
1112*c83a76b0SSuyog Pawar      */
1113*c83a76b0SSuyog Pawar     WORD32      b8_y_offset_4   : 8;
1114*c83a76b0SSuyog Pawar 
1115*c83a76b0SSuyog Pawar     /**
1116*c83a76b0SSuyog Pawar      * luma sao_band_position
1117*c83a76b0SSuyog Pawar      */
1118*c83a76b0SSuyog Pawar     UWORD32      b5_y_band_pos   : 5;
1119*c83a76b0SSuyog Pawar 
1120*c83a76b0SSuyog Pawar     WORD32                      : 0;
1121*c83a76b0SSuyog Pawar 
1122*c83a76b0SSuyog Pawar     /**
1123*c83a76b0SSuyog Pawar      * sao_type_idx_chroma
1124*c83a76b0SSuyog Pawar      */
1125*c83a76b0SSuyog Pawar     UWORD32      b3_cb_type_idx  : 3;
1126*c83a76b0SSuyog Pawar 
1127*c83a76b0SSuyog Pawar     /**
1128*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[1]
1129*c83a76b0SSuyog Pawar      */
1130*c83a76b0SSuyog Pawar     WORD32      b8_cb_offset_1  : 8;
1131*c83a76b0SSuyog Pawar 
1132*c83a76b0SSuyog Pawar     /**
1133*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[2]
1134*c83a76b0SSuyog Pawar      */
1135*c83a76b0SSuyog Pawar     WORD32      b8_cb_offset_2  : 8;
1136*c83a76b0SSuyog Pawar 
1137*c83a76b0SSuyog Pawar     /**
1138*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[3]
1139*c83a76b0SSuyog Pawar      */
1140*c83a76b0SSuyog Pawar     WORD32      b8_cb_offset_3  : 8;
1141*c83a76b0SSuyog Pawar 
1142*c83a76b0SSuyog Pawar     /**
1143*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[4]
1144*c83a76b0SSuyog Pawar      */
1145*c83a76b0SSuyog Pawar     WORD32      b8_cb_offset_4  : 8;
1146*c83a76b0SSuyog Pawar 
1147*c83a76b0SSuyog Pawar     /**
1148*c83a76b0SSuyog Pawar      * cb sao_band_position
1149*c83a76b0SSuyog Pawar      */
1150*c83a76b0SSuyog Pawar     UWORD32      b5_cb_band_pos  : 5;
1151*c83a76b0SSuyog Pawar 
1152*c83a76b0SSuyog Pawar     WORD32                      : 0;
1153*c83a76b0SSuyog Pawar 
1154*c83a76b0SSuyog Pawar     /**
1155*c83a76b0SSuyog Pawar      * sao_type_idx_chroma
1156*c83a76b0SSuyog Pawar      */
1157*c83a76b0SSuyog Pawar     UWORD32      b3_cr_type_idx  : 3;
1158*c83a76b0SSuyog Pawar 
1159*c83a76b0SSuyog Pawar     /**
1160*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[1]
1161*c83a76b0SSuyog Pawar      */
1162*c83a76b0SSuyog Pawar     WORD32      b8_cr_offset_1  : 8;
1163*c83a76b0SSuyog Pawar 
1164*c83a76b0SSuyog Pawar     /**
1165*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[2]
1166*c83a76b0SSuyog Pawar      */
1167*c83a76b0SSuyog Pawar     WORD32      b8_cr_offset_2  : 8;
1168*c83a76b0SSuyog Pawar 
1169*c83a76b0SSuyog Pawar     /**
1170*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[3]
1171*c83a76b0SSuyog Pawar      */
1172*c83a76b0SSuyog Pawar     WORD32      b8_cr_offset_3  : 8;
1173*c83a76b0SSuyog Pawar 
1174*c83a76b0SSuyog Pawar     /**
1175*c83a76b0SSuyog Pawar      * chroma SaoOffsetVal[4]
1176*c83a76b0SSuyog Pawar      */
1177*c83a76b0SSuyog Pawar     WORD32      b8_cr_offset_4  : 8;
1178*c83a76b0SSuyog Pawar 
1179*c83a76b0SSuyog Pawar     /**
1180*c83a76b0SSuyog Pawar      * cr sao_band_position
1181*c83a76b0SSuyog Pawar      */
1182*c83a76b0SSuyog Pawar     UWORD32      b5_cr_band_pos  : 5;
1183*c83a76b0SSuyog Pawar 
1184*c83a76b0SSuyog Pawar     WORD32                      : 0;
1185*c83a76b0SSuyog Pawar 
1186*c83a76b0SSuyog Pawar }sao_10bd_t;
1187*c83a76b0SSuyog Pawar 
1188*c83a76b0SSuyog Pawar /**
1189*c83a76b0SSuyog Pawar  * Motion vector
1190*c83a76b0SSuyog Pawar  */
1191*c83a76b0SSuyog Pawar typedef struct
1192*c83a76b0SSuyog Pawar {
1193*c83a76b0SSuyog Pawar     /**
1194*c83a76b0SSuyog Pawar      * Horizontal Motion Vector
1195*c83a76b0SSuyog Pawar      */
1196*c83a76b0SSuyog Pawar     WORD16 i2_mvx;
1197*c83a76b0SSuyog Pawar 
1198*c83a76b0SSuyog Pawar     /**
1199*c83a76b0SSuyog Pawar      * Vertical Motion Vector
1200*c83a76b0SSuyog Pawar      */
1201*c83a76b0SSuyog Pawar     WORD16 i2_mvy;
1202*c83a76b0SSuyog Pawar }mv_t;
1203*c83a76b0SSuyog Pawar 
1204*c83a76b0SSuyog Pawar /*****************************************************************************/
1205*c83a76b0SSuyog Pawar /* Following results in packed 48 bit structure. If mv_t included            */
1206*c83a76b0SSuyog Pawar /*  ref_pic_buf_id, then 8 bits will be wasted for each mv for aligning.     */
1207*c83a76b0SSuyog Pawar /*  Also using mv_t as elements directly instead of a pointer to l0 and l1   */
1208*c83a76b0SSuyog Pawar /*  mvs. Since pointer takes 4 bytes and MV itself is 4 bytes. It does not   */
1209*c83a76b0SSuyog Pawar /*  really help using pointers.                                              */
1210*c83a76b0SSuyog Pawar /*****************************************************************************/
1211*c83a76b0SSuyog Pawar 
1212*c83a76b0SSuyog Pawar /**
1213*c83a76b0SSuyog Pawar  * PU Motion Vector info
1214*c83a76b0SSuyog Pawar  */
1215*c83a76b0SSuyog Pawar typedef struct
1216*c83a76b0SSuyog Pawar {
1217*c83a76b0SSuyog Pawar     /**
1218*c83a76b0SSuyog Pawar      *  L0 Motion Vector
1219*c83a76b0SSuyog Pawar      */
1220*c83a76b0SSuyog Pawar     mv_t s_l0_mv;
1221*c83a76b0SSuyog Pawar 
1222*c83a76b0SSuyog Pawar     /**
1223*c83a76b0SSuyog Pawar      *  L1 Motion Vector
1224*c83a76b0SSuyog Pawar      */
1225*c83a76b0SSuyog Pawar     mv_t s_l1_mv;
1226*c83a76b0SSuyog Pawar 
1227*c83a76b0SSuyog Pawar     /**
1228*c83a76b0SSuyog Pawar      *  L0 Ref index
1229*c83a76b0SSuyog Pawar      */
1230*c83a76b0SSuyog Pawar     WORD8   i1_l0_ref_idx;
1231*c83a76b0SSuyog Pawar 
1232*c83a76b0SSuyog Pawar     /**
1233*c83a76b0SSuyog Pawar      *  L1 Ref index
1234*c83a76b0SSuyog Pawar      */
1235*c83a76b0SSuyog Pawar     WORD8   i1_l1_ref_idx;
1236*c83a76b0SSuyog Pawar 
1237*c83a76b0SSuyog Pawar     /**
1238*c83a76b0SSuyog Pawar      *  L0 Ref Pic Buf ID
1239*c83a76b0SSuyog Pawar      */
1240*c83a76b0SSuyog Pawar     WORD8 i1_l0_ref_pic_buf_id;
1241*c83a76b0SSuyog Pawar 
1242*c83a76b0SSuyog Pawar     /**
1243*c83a76b0SSuyog Pawar      *  L1 Ref Pic Buf ID
1244*c83a76b0SSuyog Pawar      */
1245*c83a76b0SSuyog Pawar     WORD8 i1_l1_ref_pic_buf_id;
1246*c83a76b0SSuyog Pawar 
1247*c83a76b0SSuyog Pawar }pu_mv_t;
1248*c83a76b0SSuyog Pawar 
1249*c83a76b0SSuyog Pawar /**
1250*c83a76b0SSuyog Pawar  * PU information
1251*c83a76b0SSuyog Pawar  */
1252*c83a76b0SSuyog Pawar typedef struct
1253*c83a76b0SSuyog Pawar {
1254*c83a76b0SSuyog Pawar 
1255*c83a76b0SSuyog Pawar     /**
1256*c83a76b0SSuyog Pawar      *  PU motion vectors
1257*c83a76b0SSuyog Pawar      */
1258*c83a76b0SSuyog Pawar     pu_mv_t     mv;
1259*c83a76b0SSuyog Pawar 
1260*c83a76b0SSuyog Pawar     /**
1261*c83a76b0SSuyog Pawar      *  PU X position in terms of min PU (4x4) units
1262*c83a76b0SSuyog Pawar      */
1263*c83a76b0SSuyog Pawar     UWORD32     b4_pos_x        : 4;
1264*c83a76b0SSuyog Pawar 
1265*c83a76b0SSuyog Pawar     /**
1266*c83a76b0SSuyog Pawar      *  PU Y position in terms of min PU (4x4) units
1267*c83a76b0SSuyog Pawar      */
1268*c83a76b0SSuyog Pawar     UWORD32     b4_pos_y        : 4;
1269*c83a76b0SSuyog Pawar 
1270*c83a76b0SSuyog Pawar     /**
1271*c83a76b0SSuyog Pawar      *  PU width in pixels = (b4_wd + 1) << 2
1272*c83a76b0SSuyog Pawar      */
1273*c83a76b0SSuyog Pawar     UWORD32     b4_wd           : 4;
1274*c83a76b0SSuyog Pawar 
1275*c83a76b0SSuyog Pawar     /**
1276*c83a76b0SSuyog Pawar      *  PU height in pixels = (b4_ht + 1) << 2
1277*c83a76b0SSuyog Pawar      */
1278*c83a76b0SSuyog Pawar     UWORD32     b4_ht           : 4;
1279*c83a76b0SSuyog Pawar 
1280*c83a76b0SSuyog Pawar     /**
1281*c83a76b0SSuyog Pawar      *  Intra or Inter flag for each partition - 0 or 1
1282*c83a76b0SSuyog Pawar      */
1283*c83a76b0SSuyog Pawar     UWORD32     b1_intra_flag   : 1;
1284*c83a76b0SSuyog Pawar 
1285*c83a76b0SSuyog Pawar 
1286*c83a76b0SSuyog Pawar     /**
1287*c83a76b0SSuyog Pawar      *  PRED_L0, PRED_L1, PRED_BI - Initialized in parsing only for MVP case
1288*c83a76b0SSuyog Pawar      */
1289*c83a76b0SSuyog Pawar     UWORD32     b2_pred_mode    : 2;
1290*c83a76b0SSuyog Pawar 
1291*c83a76b0SSuyog Pawar 
1292*c83a76b0SSuyog Pawar     /**
1293*c83a76b0SSuyog Pawar      *  Merge flag for each partition - 0 or 1
1294*c83a76b0SSuyog Pawar      */
1295*c83a76b0SSuyog Pawar     UWORD32     b1_merge_flag   : 1;
1296*c83a76b0SSuyog Pawar 
1297*c83a76b0SSuyog Pawar     /**
1298*c83a76b0SSuyog Pawar      *  Merge index for each partition - 0 to 4
1299*c83a76b0SSuyog Pawar      */
1300*c83a76b0SSuyog Pawar     UWORD32     b3_merge_idx    : 3;
1301*c83a76b0SSuyog Pawar 
1302*c83a76b0SSuyog Pawar     /*************************************************************************/
1303*c83a76b0SSuyog Pawar     /* Following two flags can be overloaded with b3_merge_idx if there      */
1304*c83a76b0SSuyog Pawar     /* is need for additional bits                                           */
1305*c83a76b0SSuyog Pawar     /*************************************************************************/
1306*c83a76b0SSuyog Pawar 
1307*c83a76b0SSuyog Pawar     /**
1308*c83a76b0SSuyog Pawar      *  If merge is zero, following gives presence of mvd for L0 MV
1309*c83a76b0SSuyog Pawar      */
1310*c83a76b0SSuyog Pawar     UWORD32     b1_l0_mvp_idx   : 1;
1311*c83a76b0SSuyog Pawar 
1312*c83a76b0SSuyog Pawar     /**
1313*c83a76b0SSuyog Pawar      *  If merge is zero, following gives presence of mvd for L1 MV
1314*c83a76b0SSuyog Pawar      */
1315*c83a76b0SSuyog Pawar     UWORD32     b1_l1_mvp_idx   : 1;
1316*c83a76b0SSuyog Pawar 
1317*c83a76b0SSuyog Pawar     /**
1318*c83a76b0SSuyog Pawar      * Partition mode - Needed during MV merge stage
1319*c83a76b0SSuyog Pawar      * Note: Part mode can be derived using pu_wd, pu_ht and minCB size
1320*c83a76b0SSuyog Pawar      * If there is a need for bits, the following can be removed at the cost
1321*c83a76b0SSuyog Pawar      * of more control code in MV Merge
1322*c83a76b0SSuyog Pawar      */
1323*c83a76b0SSuyog Pawar     UWORD32      b3_part_mode    : 3;
1324*c83a76b0SSuyog Pawar 
1325*c83a76b0SSuyog Pawar     /**
1326*c83a76b0SSuyog Pawar      * Partition index - Needed during MV merge stage
1327*c83a76b0SSuyog Pawar      */
1328*c83a76b0SSuyog Pawar     UWORD32      b2_part_idx     : 2;
1329*c83a76b0SSuyog Pawar 
1330*c83a76b0SSuyog Pawar }pu_t;
1331*c83a76b0SSuyog Pawar 
1332*c83a76b0SSuyog Pawar /**
1333*c83a76b0SSuyog Pawar  * TU information
1334*c83a76b0SSuyog Pawar  */
1335*c83a76b0SSuyog Pawar typedef struct
1336*c83a76b0SSuyog Pawar {
1337*c83a76b0SSuyog Pawar     /**
1338*c83a76b0SSuyog Pawar      *  TU X position in terms of min TU (4x4) units
1339*c83a76b0SSuyog Pawar      */
1340*c83a76b0SSuyog Pawar     UWORD32      b4_pos_x            : 4;
1341*c83a76b0SSuyog Pawar 
1342*c83a76b0SSuyog Pawar     /**
1343*c83a76b0SSuyog Pawar      *  TU Y position in terms of min TU (4x4) units
1344*c83a76b0SSuyog Pawar      */
1345*c83a76b0SSuyog Pawar     UWORD32     b4_pos_y            : 4;
1346*c83a76b0SSuyog Pawar 
1347*c83a76b0SSuyog Pawar     /*************************************************************************/
1348*c83a76b0SSuyog Pawar     /* Luma TU size (width or height) = 1 << (b3_size + 2)                   */
1349*c83a76b0SSuyog Pawar     /*   i.e. 0 : 4, 1 : 8, 2: 16, 3: 32, 4: 64                              */
1350*c83a76b0SSuyog Pawar     /* Note: Though 64 x 64 TU is not possible, this size is supported to    */
1351*c83a76b0SSuyog Pawar     /* signal SKIP CUs or PCM CUs etc where transform is not called          */
1352*c83a76b0SSuyog Pawar     /* Chroma width will be half of luma except for 4x4 luma                 */
1353*c83a76b0SSuyog Pawar     /*************************************************************************/
1354*c83a76b0SSuyog Pawar     /**
1355*c83a76b0SSuyog Pawar      * Luma TU size (width or height)
1356*c83a76b0SSuyog Pawar      */
1357*c83a76b0SSuyog Pawar     UWORD32     b3_size             : 3; //To be changed.
1358*c83a76b0SSuyog Pawar 
1359*c83a76b0SSuyog Pawar     /*************************************************************************/
1360*c83a76b0SSuyog Pawar     /* Chroma present : For 4x4 Luma TUs only the fourth one contains Cb     */
1361*c83a76b0SSuyog Pawar     /* Cr info. For the first three TUs in 8x8 (for 4x4 luma) this will      */
1362*c83a76b0SSuyog Pawar     /* be zero. For all the other cases this will be 1                       */
1363*c83a76b0SSuyog Pawar     /*************************************************************************/
1364*c83a76b0SSuyog Pawar     /**
1365*c83a76b0SSuyog Pawar      * 4x4 Luma TUs only the fourth one contains cb,cr
1366*c83a76b0SSuyog Pawar      * TODO: Check if this is really needed, cb_cbf and cr_cbf should be enough
1367*c83a76b0SSuyog Pawar      */
1368*c83a76b0SSuyog Pawar 
1369*c83a76b0SSuyog Pawar     /**
1370*c83a76b0SSuyog Pawar      *  Y CBF
1371*c83a76b0SSuyog Pawar      */
1372*c83a76b0SSuyog Pawar     UWORD32      b1_y_cbf            : 1;
1373*c83a76b0SSuyog Pawar 
1374*c83a76b0SSuyog Pawar     /**
1375*c83a76b0SSuyog Pawar      *  Cb CBF
1376*c83a76b0SSuyog Pawar      */
1377*c83a76b0SSuyog Pawar     UWORD32      b1_cb_cbf           : 1;
1378*c83a76b0SSuyog Pawar 
1379*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE
1380*c83a76b0SSuyog Pawar     UWORD32      b1_cb_cbf_subtu1          : 1;
1381*c83a76b0SSuyog Pawar #endif
1382*c83a76b0SSuyog Pawar 
1383*c83a76b0SSuyog Pawar     /**
1384*c83a76b0SSuyog Pawar      *  Cr CBF
1385*c83a76b0SSuyog Pawar      */
1386*c83a76b0SSuyog Pawar     UWORD32     b1_cr_cbf           : 1;
1387*c83a76b0SSuyog Pawar 
1388*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE
1389*c83a76b0SSuyog Pawar     UWORD32     b1_cr_cbf_subtu1          : 1;
1390*c83a76b0SSuyog Pawar #endif
1391*c83a76b0SSuyog Pawar 
1392*c83a76b0SSuyog Pawar     /**
1393*c83a76b0SSuyog Pawar      *  Flag to indicate if it is the first TU in a CU
1394*c83a76b0SSuyog Pawar      */
1395*c83a76b0SSuyog Pawar     UWORD32     b1_first_tu_in_cu       : 1;
1396*c83a76b0SSuyog Pawar 
1397*c83a76b0SSuyog Pawar     /**
1398*c83a76b0SSuyog Pawar      *  Transform quant bypass flag
1399*c83a76b0SSuyog Pawar      */
1400*c83a76b0SSuyog Pawar     UWORD32     b1_transquant_bypass  : 1;
1401*c83a76b0SSuyog Pawar 
1402*c83a76b0SSuyog Pawar     /**
1403*c83a76b0SSuyog Pawar      *  Y Qp
1404*c83a76b0SSuyog Pawar      */
1405*c83a76b0SSuyog Pawar     //UWORD32     b6_qp               : 6; // BUG_FIX related to nighbour QP's in case of negative QP for HBD.
1406*c83a76b0SSuyog Pawar     WORD32     b7_qp               : 7;
1407*c83a76b0SSuyog Pawar 
1408*c83a76b0SSuyog Pawar 
1409*c83a76b0SSuyog Pawar     /**
1410*c83a76b0SSuyog Pawar      *  Luma Intra Mode 0 - 34
1411*c83a76b0SSuyog Pawar      */
1412*c83a76b0SSuyog Pawar     UWORD32    b6_luma_intra_mode      : 6;
1413*c83a76b0SSuyog Pawar 
1414*c83a76b0SSuyog Pawar     /*************************************************************************/
1415*c83a76b0SSuyog Pawar     /* Chroma Intra Mode Index 0 - 4: Actual mode (0, 1, 10, 26, 34, X) to be*/
1416*c83a76b0SSuyog Pawar     /* derived using luma_intra_mode and the following                       */
1417*c83a76b0SSuyog Pawar     /*************************************************************************/
1418*c83a76b0SSuyog Pawar     /**
1419*c83a76b0SSuyog Pawar      * Chroma Intra Mode Index 0 - 4
1420*c83a76b0SSuyog Pawar      */
1421*c83a76b0SSuyog Pawar     UWORD32    b3_chroma_intra_mode_idx    : 3;
1422*c83a76b0SSuyog Pawar 
1423*c83a76b0SSuyog Pawar }tu_t;
1424*c83a76b0SSuyog Pawar 
1425*c83a76b0SSuyog Pawar /**
1426*c83a76b0SSuyog Pawar  * CU information
1427*c83a76b0SSuyog Pawar  */
1428*c83a76b0SSuyog Pawar typedef struct
1429*c83a76b0SSuyog Pawar {
1430*c83a76b0SSuyog Pawar 
1431*c83a76b0SSuyog Pawar     /**
1432*c83a76b0SSuyog Pawar      *  CU X position in terms of min CU (8x8) units
1433*c83a76b0SSuyog Pawar      */
1434*c83a76b0SSuyog Pawar     UWORD32 b3_cu_pos_x :3;
1435*c83a76b0SSuyog Pawar 
1436*c83a76b0SSuyog Pawar     /**
1437*c83a76b0SSuyog Pawar      *  CU Y position in terms of min CU (8x8) units
1438*c83a76b0SSuyog Pawar      */
1439*c83a76b0SSuyog Pawar     UWORD32 b3_cu_pos_y :3;
1440*c83a76b0SSuyog Pawar 
1441*c83a76b0SSuyog Pawar     /**
1442*c83a76b0SSuyog Pawar      *  CU size in terms of min CU (8x8) units
1443*c83a76b0SSuyog Pawar      */
1444*c83a76b0SSuyog Pawar     UWORD32 b4_cu_size :4;
1445*c83a76b0SSuyog Pawar 
1446*c83a76b0SSuyog Pawar     /**
1447*c83a76b0SSuyog Pawar      *  transquant bypass flag ; 0 for this encoder
1448*c83a76b0SSuyog Pawar      */
1449*c83a76b0SSuyog Pawar     UWORD32 b1_tq_bypass_flag :1;
1450*c83a76b0SSuyog Pawar 
1451*c83a76b0SSuyog Pawar     /**
1452*c83a76b0SSuyog Pawar      *  CU skip flag
1453*c83a76b0SSuyog Pawar      */
1454*c83a76b0SSuyog Pawar     UWORD32 b1_skip_flag :1;
1455*c83a76b0SSuyog Pawar 
1456*c83a76b0SSuyog Pawar     /**
1457*c83a76b0SSuyog Pawar      *  intra / inter CU flag
1458*c83a76b0SSuyog Pawar      */
1459*c83a76b0SSuyog Pawar     UWORD32 b1_pred_mode_flag :1;
1460*c83a76b0SSuyog Pawar 
1461*c83a76b0SSuyog Pawar     /**
1462*c83a76b0SSuyog Pawar      *  indicates partition information for CU
1463*c83a76b0SSuyog Pawar      *  For intra 0 : for 2Nx2N / 1 for NxN iff CU=minCBsize
1464*c83a76b0SSuyog Pawar      *  For inter 0 : @sa PART_SIZE_E
1465*c83a76b0SSuyog Pawar      */
1466*c83a76b0SSuyog Pawar     UWORD32 b3_part_mode :3;
1467*c83a76b0SSuyog Pawar 
1468*c83a76b0SSuyog Pawar     /**
1469*c83a76b0SSuyog Pawar      *  0 for this encoder
1470*c83a76b0SSuyog Pawar      */
1471*c83a76b0SSuyog Pawar     UWORD32 b1_pcm_flag :1;
1472*c83a76b0SSuyog Pawar 
1473*c83a76b0SSuyog Pawar     /**
1474*c83a76b0SSuyog Pawar      *  only applicable for intra cu
1475*c83a76b0SSuyog Pawar      */
1476*c83a76b0SSuyog Pawar     UWORD32 b3_chroma_intra_pred_mode :3;
1477*c83a76b0SSuyog Pawar 
1478*c83a76b0SSuyog Pawar     /**
1479*c83a76b0SSuyog Pawar      * only applicable for intra cu
1480*c83a76b0SSuyog Pawar      */
1481*c83a76b0SSuyog Pawar     UWORD32 b1_prev_intra_luma_pred_flag0 :1;
1482*c83a76b0SSuyog Pawar 
1483*c83a76b0SSuyog Pawar     /**
1484*c83a76b0SSuyog Pawar      * only applicable for intra cu and pred_mode=NxN
1485*c83a76b0SSuyog Pawar      */
1486*c83a76b0SSuyog Pawar     UWORD32 b1_prev_intra_luma_pred_flag1 :1;
1487*c83a76b0SSuyog Pawar 
1488*c83a76b0SSuyog Pawar     /**
1489*c83a76b0SSuyog Pawar      * only applicable for intra cu and pred_mode=NxN
1490*c83a76b0SSuyog Pawar      */
1491*c83a76b0SSuyog Pawar     UWORD32 b1_prev_intra_luma_pred_flag2 :1;
1492*c83a76b0SSuyog Pawar 
1493*c83a76b0SSuyog Pawar     /**
1494*c83a76b0SSuyog Pawar      * only applicable for intra cu and pred_mode=NxN
1495*c83a76b0SSuyog Pawar      */
1496*c83a76b0SSuyog Pawar     UWORD32 b1_prev_intra_luma_pred_flag3 :1;
1497*c83a76b0SSuyog Pawar 
1498*c83a76b0SSuyog Pawar     /**
1499*c83a76b0SSuyog Pawar      *  only applicable for luma intra cu
1500*c83a76b0SSuyog Pawar      */
1501*c83a76b0SSuyog Pawar     UWORD32 b2_mpm_idx0 :2;
1502*c83a76b0SSuyog Pawar 
1503*c83a76b0SSuyog Pawar     /**
1504*c83a76b0SSuyog Pawar      *  only applicable for intra cu and pred_mode=NxN
1505*c83a76b0SSuyog Pawar      */
1506*c83a76b0SSuyog Pawar     UWORD32 b2_mpm_idx1 :2;
1507*c83a76b0SSuyog Pawar 
1508*c83a76b0SSuyog Pawar     /**
1509*c83a76b0SSuyog Pawar      *  only applicable for intra cu and pred_mode=NxN
1510*c83a76b0SSuyog Pawar      */
1511*c83a76b0SSuyog Pawar     UWORD32 b2_mpm_idx2 :2;
1512*c83a76b0SSuyog Pawar 
1513*c83a76b0SSuyog Pawar     /**
1514*c83a76b0SSuyog Pawar      *  only applicable for intra cu and pred_mode=NxN
1515*c83a76b0SSuyog Pawar      */
1516*c83a76b0SSuyog Pawar     UWORD32 b2_mpm_idx3 :2;
1517*c83a76b0SSuyog Pawar 
1518*c83a76b0SSuyog Pawar     /**
1519*c83a76b0SSuyog Pawar      *  only applicable for intra cu
1520*c83a76b0SSuyog Pawar      */
1521*c83a76b0SSuyog Pawar     UWORD32 b5_rem_intra_pred_mode0 :5;
1522*c83a76b0SSuyog Pawar 
1523*c83a76b0SSuyog Pawar     /**
1524*c83a76b0SSuyog Pawar      *  only applicable for intra cu and pred_mode=NxN
1525*c83a76b0SSuyog Pawar      */
1526*c83a76b0SSuyog Pawar     UWORD32 b5_rem_intra_pred_mode1 :5;
1527*c83a76b0SSuyog Pawar 
1528*c83a76b0SSuyog Pawar     /**
1529*c83a76b0SSuyog Pawar      *  only applicable for intra cu and pred_mode=NxN
1530*c83a76b0SSuyog Pawar      */
1531*c83a76b0SSuyog Pawar     UWORD32 b5_rem_intra_pred_mode2 :5;
1532*c83a76b0SSuyog Pawar 
1533*c83a76b0SSuyog Pawar     /**
1534*c83a76b0SSuyog Pawar      *  only applicable for intra cu and pred_mode=NxN
1535*c83a76b0SSuyog Pawar      */
1536*c83a76b0SSuyog Pawar     UWORD32 b5_rem_intra_pred_mode3 :5;
1537*c83a76b0SSuyog Pawar 
1538*c83a76b0SSuyog Pawar     /**
1539*c83a76b0SSuyog Pawar      *  no residue flag for cu
1540*c83a76b0SSuyog Pawar      */
1541*c83a76b0SSuyog Pawar     UWORD32 b1_no_residual_syntax_flag :1;
1542*c83a76b0SSuyog Pawar 
1543*c83a76b0SSuyog Pawar }cu_t;
1544*c83a76b0SSuyog Pawar 
1545*c83a76b0SSuyog Pawar /*****************************************************************************/
1546*c83a76b0SSuyog Pawar /* Since the following data will be accessed linearly (no random access      */
1547*c83a76b0SSuyog Pawar /*  is needed for this) there is no need to store a frame level offset for   */
1548*c83a76b0SSuyog Pawar /*  each CTB's TU data. Only a pointer to this is stored in CTB's structure  */
1549*c83a76b0SSuyog Pawar /*****************************************************************************/
1550*c83a76b0SSuyog Pawar 
1551*c83a76b0SSuyog Pawar typedef struct
1552*c83a76b0SSuyog Pawar {
1553*c83a76b0SSuyog Pawar     /*************************************************************************/
1554*c83a76b0SSuyog Pawar     /* Number of TUs filled in as_tu                                         */
1555*c83a76b0SSuyog Pawar     /* Having the first entry as 32 bit data, helps in keeping each of       */
1556*c83a76b0SSuyog Pawar     /* the structures aligned to 32 bits at CTB level                        */
1557*c83a76b0SSuyog Pawar     /*************************************************************************/
1558*c83a76b0SSuyog Pawar     /**
1559*c83a76b0SSuyog Pawar      * Number of TUs filled in as_tu
1560*c83a76b0SSuyog Pawar      */
1561*c83a76b0SSuyog Pawar     WORD32 i4_tu_cnt;
1562*c83a76b0SSuyog Pawar 
1563*c83a76b0SSuyog Pawar     /**
1564*c83a76b0SSuyog Pawar      *  Array to map each min TU unit to a corresponding entry in as_tu
1565*c83a76b0SSuyog Pawar      */
1566*c83a76b0SSuyog Pawar     UWORD8 au1_tu_map[MAX_TU_IN_CTB];
1567*c83a76b0SSuyog Pawar 
1568*c83a76b0SSuyog Pawar     /*************************************************************************/
1569*c83a76b0SSuyog Pawar     /* TU level information                                                  */
1570*c83a76b0SSuyog Pawar     /* Though the allocation for as_pu as done to handle worst case data,    */
1571*c83a76b0SSuyog Pawar     /* only valid number of TUs will be filled in the following array.       */
1572*c83a76b0SSuyog Pawar     /* Next CTB starts after the valid as_tu entries                         */
1573*c83a76b0SSuyog Pawar     /*************************************************************************/
1574*c83a76b0SSuyog Pawar     /**
1575*c83a76b0SSuyog Pawar      *  TU level information
1576*c83a76b0SSuyog Pawar      */
1577*c83a76b0SSuyog Pawar     tu_t as_tu[MAX_TU_IN_CTB];
1578*c83a76b0SSuyog Pawar 
1579*c83a76b0SSuyog Pawar }ctb_tu_list_t;
1580*c83a76b0SSuyog Pawar 
1581*c83a76b0SSuyog Pawar /*****************************************************************************/
1582*c83a76b0SSuyog Pawar /* Info from last TU row of CTB is stored in a row level neighbour buffer    */
1583*c83a76b0SSuyog Pawar /* , which will be used for Boundary Strength computation                    */
1584*c83a76b0SSuyog Pawar /*****************************************************************************/
1585*c83a76b0SSuyog Pawar /**
1586*c83a76b0SSuyog Pawar  *  CTB neighbor info
1587*c83a76b0SSuyog Pawar  */
1588*c83a76b0SSuyog Pawar typedef struct
1589*c83a76b0SSuyog Pawar {
1590*c83a76b0SSuyog Pawar     /**
1591*c83a76b0SSuyog Pawar      *  Slice index of the ctb
1592*c83a76b0SSuyog Pawar      */
1593*c83a76b0SSuyog Pawar     UWORD16 u2_slice_idx;
1594*c83a76b0SSuyog Pawar 
1595*c83a76b0SSuyog Pawar     /*************************************************************************/
1596*c83a76b0SSuyog Pawar     /* CBF of bottom TU row (replicated in 4 pixel boundary)                 */
1597*c83a76b0SSuyog Pawar     /* MSB contains CBF of first TU in the last row and LSB contains CBF     */
1598*c83a76b0SSuyog Pawar     /* of last TU in the last row                                            */
1599*c83a76b0SSuyog Pawar     /*************************************************************************/
1600*c83a76b0SSuyog Pawar     /**
1601*c83a76b0SSuyog Pawar      * CBF of bottom TU row
1602*c83a76b0SSuyog Pawar      */
1603*c83a76b0SSuyog Pawar     UWORD16 u2_packed_cbf;
1604*c83a76b0SSuyog Pawar 
1605*c83a76b0SSuyog Pawar     /*************************************************************************/
1606*c83a76b0SSuyog Pawar     /* QP of bottom TU row (replicated at 8 pixel boundary (Since QP can     */
1607*c83a76b0SSuyog Pawar     /* not change at less than min CU granularity)                           */
1608*c83a76b0SSuyog Pawar     /*************************************************************************/
1609*c83a76b0SSuyog Pawar     /**
1610*c83a76b0SSuyog Pawar      * QP of bottom TU row
1611*c83a76b0SSuyog Pawar      */
1612*c83a76b0SSuyog Pawar     UWORD8 au1_qp[MAX_CU_IN_CTB_ROW];
1613*c83a76b0SSuyog Pawar 
1614*c83a76b0SSuyog Pawar }ctb_top_ny_info_t;
1615*c83a76b0SSuyog Pawar 
1616*c83a76b0SSuyog Pawar /**
1617*c83a76b0SSuyog Pawar  *  CTB level info
1618*c83a76b0SSuyog Pawar  */
1619*c83a76b0SSuyog Pawar typedef struct _ctb_t
1620*c83a76b0SSuyog Pawar {
1621*c83a76b0SSuyog Pawar     /*************************************************************************/
1622*c83a76b0SSuyog Pawar     /* Tile boundary can be detected by looking at tile start x and tile     */
1623*c83a76b0SSuyog Pawar     /* start y.  And based on the tile, slice and frame boundary the         */
1624*c83a76b0SSuyog Pawar     /* following will be initialized.                                        */
1625*c83a76b0SSuyog Pawar     /*************************************************************************/
1626*c83a76b0SSuyog Pawar     /**
1627*c83a76b0SSuyog Pawar      *  Pointer to left CTB
1628*c83a76b0SSuyog Pawar      */
1629*c83a76b0SSuyog Pawar     /*  If not available, this will be set to NULL   */
1630*c83a76b0SSuyog Pawar     struct _ctb_t *ps_ctb_left;
1631*c83a76b0SSuyog Pawar 
1632*c83a76b0SSuyog Pawar     /**
1633*c83a76b0SSuyog Pawar      *  Pointer to top-left CTB
1634*c83a76b0SSuyog Pawar      */
1635*c83a76b0SSuyog Pawar     /* If not available, this will be set to NULL   */
1636*c83a76b0SSuyog Pawar     ctb_top_ny_info_t *ps_ctb_ny_topleft;
1637*c83a76b0SSuyog Pawar 
1638*c83a76b0SSuyog Pawar     /**
1639*c83a76b0SSuyog Pawar      *  Pointer to top CTB
1640*c83a76b0SSuyog Pawar      */
1641*c83a76b0SSuyog Pawar     /* If not available, this will be set to NULL  */
1642*c83a76b0SSuyog Pawar     ctb_top_ny_info_t *ps_ctb_ny_top;
1643*c83a76b0SSuyog Pawar 
1644*c83a76b0SSuyog Pawar     /**
1645*c83a76b0SSuyog Pawar      *  Pointer to top-right CTB
1646*c83a76b0SSuyog Pawar      */
1647*c83a76b0SSuyog Pawar     /* If not available, this will be set to NULL */
1648*c83a76b0SSuyog Pawar     ctb_top_ny_info_t *ps_ctb_ny_topright;
1649*c83a76b0SSuyog Pawar 
1650*c83a76b0SSuyog Pawar     /*************************************************************************/
1651*c83a76b0SSuyog Pawar     /* Pointer to PU data.                                                   */
1652*c83a76b0SSuyog Pawar     /* This points to a MV Bank stored at frame level. Though this           */
1653*c83a76b0SSuyog Pawar     /* pointer can be derived by reading offset at frame level, it is        */
1654*c83a76b0SSuyog Pawar     /* stored here for faster access. Can be removed if storage of CTB       */
1655*c83a76b0SSuyog Pawar     /* structure is critical                                                 */
1656*c83a76b0SSuyog Pawar     /*************************************************************************/
1657*c83a76b0SSuyog Pawar     /**
1658*c83a76b0SSuyog Pawar      * Pointer to PU data
1659*c83a76b0SSuyog Pawar      */
1660*c83a76b0SSuyog Pawar     pu_t *ps_pu;
1661*c83a76b0SSuyog Pawar 
1662*c83a76b0SSuyog Pawar     /*************************************************************************/
1663*c83a76b0SSuyog Pawar     /* Pointer to a PU map stored at frame level,                            */
1664*c83a76b0SSuyog Pawar     /* Though this pointer can be derived by multiplying CTB adress with     */
1665*c83a76b0SSuyog Pawar     /* number of minTUs in a CTB, it is stored here for faster access.       */
1666*c83a76b0SSuyog Pawar     /* Can be removed if storage of CTB structure is critical                */
1667*c83a76b0SSuyog Pawar     /*************************************************************************/
1668*c83a76b0SSuyog Pawar     /**
1669*c83a76b0SSuyog Pawar      * Pointer to a PU map stored at frame level
1670*c83a76b0SSuyog Pawar      */
1671*c83a76b0SSuyog Pawar     UWORD8 *pu1_pu_map;
1672*c83a76b0SSuyog Pawar 
1673*c83a76b0SSuyog Pawar     /**
1674*c83a76b0SSuyog Pawar      *  Number of TUs filled in as_tu
1675*c83a76b0SSuyog Pawar      */
1676*c83a76b0SSuyog Pawar     /*************************************************************************/
1677*c83a76b0SSuyog Pawar     /* Having the first entry as 32 bit data, helps in keeping each of       */
1678*c83a76b0SSuyog Pawar     /* the structures aligned to 32 bits at CTB level                        */
1679*c83a76b0SSuyog Pawar     /*************************************************************************/
1680*c83a76b0SSuyog Pawar     WORD32 i4_tu_cnt;
1681*c83a76b0SSuyog Pawar 
1682*c83a76b0SSuyog Pawar     /**
1683*c83a76b0SSuyog Pawar      *  Array to map each min TU unit to a corresponding entry in as_tu
1684*c83a76b0SSuyog Pawar      */
1685*c83a76b0SSuyog Pawar     UWORD8 *pu1_tu_map;
1686*c83a76b0SSuyog Pawar 
1687*c83a76b0SSuyog Pawar     /**
1688*c83a76b0SSuyog Pawar      *  TU level information
1689*c83a76b0SSuyog Pawar      */
1690*c83a76b0SSuyog Pawar     /*************************************************************************/
1691*c83a76b0SSuyog Pawar     /* Though the allocation for as_pu as done to handle worst case data,    */
1692*c83a76b0SSuyog Pawar     /* only valid number of TUs will be filled in the following array.       */
1693*c83a76b0SSuyog Pawar     /* Next CTB starts after the valid as_tu entries                         */
1694*c83a76b0SSuyog Pawar     /*************************************************************************/
1695*c83a76b0SSuyog Pawar     tu_t *ps_tu;
1696*c83a76b0SSuyog Pawar 
1697*c83a76b0SSuyog Pawar     /**
1698*c83a76b0SSuyog Pawar      *  Pointer to transform coeff data
1699*c83a76b0SSuyog Pawar      */
1700*c83a76b0SSuyog Pawar     /*************************************************************************/
1701*c83a76b0SSuyog Pawar     /* Following format is repeated for every coded TU                       */
1702*c83a76b0SSuyog Pawar     /* Luma Block                                                            */
1703*c83a76b0SSuyog Pawar     /* num_coeffs      : 16 bits                                             */
1704*c83a76b0SSuyog Pawar     /* zero_cols       : 8 bits ( 1 bit per 4 columns)                       */
1705*c83a76b0SSuyog Pawar     /* sig_coeff_map   : ((TU Size * TU Size) + 31) >> 5 number of WORD32s   */
1706*c83a76b0SSuyog Pawar     /* coeff_data      : Non zero coefficients                               */
1707*c83a76b0SSuyog Pawar     /* Cb Block (only for last TU in 4x4 case else for every luma TU)        */
1708*c83a76b0SSuyog Pawar     /* num_coeffs      : 16 bits                                             */
1709*c83a76b0SSuyog Pawar     /* zero_cols       : 8 bits ( 1 bit per 4 columns)                       */
1710*c83a76b0SSuyog Pawar     /* sig_coeff_map   : ((TU Size * TU Size) + 31) >> 5 number of WORD32s   */
1711*c83a76b0SSuyog Pawar     /* coeff_data      : Non zero coefficients                               */
1712*c83a76b0SSuyog Pawar     /* Cr Block (only for last TU in 4x4 case else for every luma TU)        */
1713*c83a76b0SSuyog Pawar     /* num_coeffs      : 16 bits                                             */
1714*c83a76b0SSuyog Pawar     /* zero_cols       : 8 bits ( 1 bit per 4 columns)                       */
1715*c83a76b0SSuyog Pawar     /* sig_coeff_map   : ((TU Size * TU Size) + 31) >> 5 number of WORD32s   */
1716*c83a76b0SSuyog Pawar     /* coeff_data      : Non zero coefficients                               */
1717*c83a76b0SSuyog Pawar     /*************************************************************************/
1718*c83a76b0SSuyog Pawar     void            *pv_coeff_data;
1719*c83a76b0SSuyog Pawar 
1720*c83a76b0SSuyog Pawar     /**
1721*c83a76b0SSuyog Pawar      *  Slice to which the CTB belongs to
1722*c83a76b0SSuyog Pawar      */
1723*c83a76b0SSuyog Pawar     WORD32 i4_slice_idx;
1724*c83a76b0SSuyog Pawar 
1725*c83a76b0SSuyog Pawar     /**
1726*c83a76b0SSuyog Pawar      *  CTB column position
1727*c83a76b0SSuyog Pawar      */
1728*c83a76b0SSuyog Pawar     WORD32 i4_pos_x;
1729*c83a76b0SSuyog Pawar 
1730*c83a76b0SSuyog Pawar     /**
1731*c83a76b0SSuyog Pawar      *  CTB row position
1732*c83a76b0SSuyog Pawar      */
1733*c83a76b0SSuyog Pawar     WORD32 i4_pos_y;
1734*c83a76b0SSuyog Pawar 
1735*c83a76b0SSuyog Pawar     /**
1736*c83a76b0SSuyog Pawar      *  Number of PUs filled in ps_pu
1737*c83a76b0SSuyog Pawar      */
1738*c83a76b0SSuyog Pawar     WORD32 i4_pu_cnt;
1739*c83a76b0SSuyog Pawar 
1740*c83a76b0SSuyog Pawar     /**
1741*c83a76b0SSuyog Pawar      *  Index of current PU being processed in ps_pu
1742*c83a76b0SSuyog Pawar      */
1743*c83a76b0SSuyog Pawar     /*  Scratch variable set to 0 at the start of any PU processing function */
1744*c83a76b0SSuyog Pawar     WORD32 i4_pu_idx;
1745*c83a76b0SSuyog Pawar 
1746*c83a76b0SSuyog Pawar     /**
1747*c83a76b0SSuyog Pawar      * Vertical Boundary strength
1748*c83a76b0SSuyog Pawar      */
1749*c83a76b0SSuyog Pawar     /* Two bits per edge.
1750*c83a76b0SSuyog Pawar     Stored in format. BS[15] | BS[14] | .. |BS[0]*/
1751*c83a76b0SSuyog Pawar     UWORD32 *pu4_vert_bs;
1752*c83a76b0SSuyog Pawar 
1753*c83a76b0SSuyog Pawar     /**
1754*c83a76b0SSuyog Pawar      * Horizontal Boundary strength
1755*c83a76b0SSuyog Pawar      */
1756*c83a76b0SSuyog Pawar 
1757*c83a76b0SSuyog Pawar     /* Two bits per edge.
1758*c83a76b0SSuyog Pawar     Stored in format. BS[15] | BS[14] | .. |BS[0]*/
1759*c83a76b0SSuyog Pawar     UWORD32 *pu4_horz_bs;
1760*c83a76b0SSuyog Pawar 
1761*c83a76b0SSuyog Pawar     /**
1762*c83a76b0SSuyog Pawar      *  Qp array stored for each 8x8 pixels
1763*c83a76b0SSuyog Pawar      */
1764*c83a76b0SSuyog Pawar     UWORD8 *pu1_qp;
1765*c83a76b0SSuyog Pawar 
1766*c83a76b0SSuyog Pawar     /**
1767*c83a76b0SSuyog Pawar      *  Pointer to current frame's pu_t array
1768*c83a76b0SSuyog Pawar      */
1769*c83a76b0SSuyog Pawar     pu_t *ps_frm_pu;
1770*c83a76b0SSuyog Pawar 
1771*c83a76b0SSuyog Pawar     /**
1772*c83a76b0SSuyog Pawar      * Pointer to current frame's pu_t index array, which stores starting index
1773*c83a76b0SSuyog Pawar      * of pu_t for every CTB
1774*c83a76b0SSuyog Pawar      */
1775*c83a76b0SSuyog Pawar     UWORD32 *pu4_frm_pu_idx;
1776*c83a76b0SSuyog Pawar 
1777*c83a76b0SSuyog Pawar     /**
1778*c83a76b0SSuyog Pawar      *  Pointer to current frame's pu map array
1779*c83a76b0SSuyog Pawar      */
1780*c83a76b0SSuyog Pawar     UWORD8 *pu1_frm_pu_map;
1781*c83a76b0SSuyog Pawar 
1782*c83a76b0SSuyog Pawar     /*************************************************************************/
1783*c83a76b0SSuyog Pawar     /* Need to add encoder specific elements for identifying the order of    */
1784*c83a76b0SSuyog Pawar     /* coding for CU, TU and PU if any                                       */
1785*c83a76b0SSuyog Pawar     /*************************************************************************/
1786*c83a76b0SSuyog Pawar }ctb_t;
1787*c83a76b0SSuyog Pawar 
1788*c83a76b0SSuyog Pawar /*****************************************************************************/
1789*c83a76b0SSuyog Pawar /* The following can be used to typecast coefficient data that is stored     */
1790*c83a76b0SSuyog Pawar /*  per subblock. Note that though i2_level is shown as an array that        */
1791*c83a76b0SSuyog Pawar /*  holds 16 coefficients, only the first few entries will be valid. Next    */
1792*c83a76b0SSuyog Pawar /*  subblocks data starts after the valid number of coefficients. Number     */
1793*c83a76b0SSuyog Pawar /*  of non-zero coefficients will be derived using number of non-zero bits   */
1794*c83a76b0SSuyog Pawar /*  in sig coeff map                                                         */
1795*c83a76b0SSuyog Pawar /*****************************************************************************/
1796*c83a76b0SSuyog Pawar /**
1797*c83a76b0SSuyog Pawar  * Structure to hold coefficient info for a 4x4 subblock
1798*c83a76b0SSuyog Pawar  */
1799*c83a76b0SSuyog Pawar typedef struct
1800*c83a76b0SSuyog Pawar {
1801*c83a76b0SSuyog Pawar     /**
1802*c83a76b0SSuyog Pawar      * sub block position
1803*c83a76b0SSuyog Pawar      */
1804*c83a76b0SSuyog Pawar     UWORD16 u2_subblk_pos;
1805*c83a76b0SSuyog Pawar 
1806*c83a76b0SSuyog Pawar     /**
1807*c83a76b0SSuyog Pawar      * significant coefficient map
1808*c83a76b0SSuyog Pawar      */
1809*c83a76b0SSuyog Pawar     UWORD16 u2_sig_coeff_map;
1810*c83a76b0SSuyog Pawar 
1811*c83a76b0SSuyog Pawar     /**
1812*c83a76b0SSuyog Pawar      * holds 16 coefficients
1813*c83a76b0SSuyog Pawar      */
1814*c83a76b0SSuyog Pawar     WORD16  ai2_level[SUBBLK_COEFF_CNT];
1815*c83a76b0SSuyog Pawar }tu_sblk_coeff_data_t;
1816*c83a76b0SSuyog Pawar 
1817*c83a76b0SSuyog Pawar 
1818*c83a76b0SSuyog Pawar /*************************************************************************/
1819*c83a76b0SSuyog Pawar /* The following describes how each of the CU cases are handled          */
1820*c83a76b0SSuyog Pawar /*************************************************************************/
1821*c83a76b0SSuyog Pawar 
1822*c83a76b0SSuyog Pawar /*************************************************************************/
1823*c83a76b0SSuyog Pawar /* For SKIP CU                                                           */
1824*c83a76b0SSuyog Pawar /* One Inter PU with appropriate MV                                      */
1825*c83a76b0SSuyog Pawar /* One TU which says Y, Cb and Cr CBF is zero with size equal to CB size */
1826*c83a76b0SSuyog Pawar /*************************************************************************/
1827*c83a76b0SSuyog Pawar 
1828*c83a76b0SSuyog Pawar /*************************************************************************/
1829*c83a76b0SSuyog Pawar /* For Inter CU                                                          */
1830*c83a76b0SSuyog Pawar /* M Inter PU with appropriate MVs (M between 1 to 4)                    */
1831*c83a76b0SSuyog Pawar /* N TU (N is number of TU in CU)                                        */
1832*c83a76b0SSuyog Pawar /*************************************************************************/
1833*c83a76b0SSuyog Pawar 
1834*c83a76b0SSuyog Pawar /*************************************************************************/
1835*c83a76b0SSuyog Pawar /* For Intra CU                                                          */
1836*c83a76b0SSuyog Pawar /* N TU (N is number of TU in CU)                                        */
1837*c83a76b0SSuyog Pawar /* N Intra PU with appropriate pred modes for luma and chroma            */
1838*c83a76b0SSuyog Pawar /*************************************************************************/
1839*c83a76b0SSuyog Pawar 
1840*c83a76b0SSuyog Pawar /*************************************************************************/
1841*c83a76b0SSuyog Pawar /* For Intra PCM CU                                                      */
1842*c83a76b0SSuyog Pawar /* One TU which says transquant bypass is 1  with size equal to CB size  */
1843*c83a76b0SSuyog Pawar /* 1 Intra PU with pcm flag set to 1(which ensures no intra pred is done)*/
1844*c83a76b0SSuyog Pawar /*************************************************************************/
1845*c83a76b0SSuyog Pawar 
1846*c83a76b0SSuyog Pawar /*************************************************************************/
1847*c83a76b0SSuyog Pawar /* For a CU where cu_transquant_bypass_flag is 1                         */
1848*c83a76b0SSuyog Pawar /* One TU which says transquant bypass is 1  with size equal to CB size  */
1849*c83a76b0SSuyog Pawar /* N Intra/Inter PUs                                                     */
1850*c83a76b0SSuyog Pawar /*************************************************************************/
1851*c83a76b0SSuyog Pawar 
1852*c83a76b0SSuyog Pawar /*************************************************************************/
1853*c83a76b0SSuyog Pawar /* For a CU where no_residual_syntax_flag is 1                           */
1854*c83a76b0SSuyog Pawar /* One TU which says Y, Cb, Cr CBF is 0  with size equal to CB size      */
1855*c83a76b0SSuyog Pawar /* N Inter PUs                                                           */
1856*c83a76b0SSuyog Pawar /*************************************************************************/
1857*c83a76b0SSuyog Pawar 
1858*c83a76b0SSuyog Pawar 
1859*c83a76b0SSuyog Pawar /**
1860*c83a76b0SSuyog Pawar  * Structure giving information about the tile
1861*c83a76b0SSuyog Pawar  */
1862*c83a76b0SSuyog Pawar typedef struct
1863*c83a76b0SSuyog Pawar {
1864*c83a76b0SSuyog Pawar     /* X position of the tile in the current frame in CTB units */
1865*c83a76b0SSuyog Pawar     UWORD8 u1_pos_x;
1866*c83a76b0SSuyog Pawar 
1867*c83a76b0SSuyog Pawar     /* Y position of the tile in the current frame in CTB units */
1868*c83a76b0SSuyog Pawar     UWORD8 u1_pos_y;
1869*c83a76b0SSuyog Pawar 
1870*c83a76b0SSuyog Pawar     /* Tile width in CTB units */
1871*c83a76b0SSuyog Pawar     UWORD16 u2_wd;
1872*c83a76b0SSuyog Pawar 
1873*c83a76b0SSuyog Pawar     /* Tile height in CTB units */
1874*c83a76b0SSuyog Pawar     UWORD16 u2_ht;
1875*c83a76b0SSuyog Pawar 
1876*c83a76b0SSuyog Pawar }tile_t;
1877*c83a76b0SSuyog Pawar 
1878*c83a76b0SSuyog Pawar /**
1879*c83a76b0SSuyog Pawar  * Structure to hold Profile tier level info for a given layer
1880*c83a76b0SSuyog Pawar  */
1881*c83a76b0SSuyog Pawar 
1882*c83a76b0SSuyog Pawar typedef struct
1883*c83a76b0SSuyog Pawar {
1884*c83a76b0SSuyog Pawar     /**
1885*c83a76b0SSuyog Pawar      *  NAL unit type
1886*c83a76b0SSuyog Pawar      */
1887*c83a76b0SSuyog Pawar     WORD8 i1_nal_unit_type;
1888*c83a76b0SSuyog Pawar 
1889*c83a76b0SSuyog Pawar     /**
1890*c83a76b0SSuyog Pawar      *  NAL temporal id
1891*c83a76b0SSuyog Pawar      */
1892*c83a76b0SSuyog Pawar     WORD8 i1_nuh_temporal_id;
1893*c83a76b0SSuyog Pawar }nal_header_t;
1894*c83a76b0SSuyog Pawar 
1895*c83a76b0SSuyog Pawar /**
1896*c83a76b0SSuyog Pawar  * Structure to hold Profile tier level info for a given layer
1897*c83a76b0SSuyog Pawar  */
1898*c83a76b0SSuyog Pawar 
1899*c83a76b0SSuyog Pawar typedef struct
1900*c83a76b0SSuyog Pawar {
1901*c83a76b0SSuyog Pawar     /**
1902*c83a76b0SSuyog Pawar      *  profile_space
1903*c83a76b0SSuyog Pawar      */
1904*c83a76b0SSuyog Pawar     WORD8 i1_profile_space;
1905*c83a76b0SSuyog Pawar 
1906*c83a76b0SSuyog Pawar     /**
1907*c83a76b0SSuyog Pawar      *  tier_flag
1908*c83a76b0SSuyog Pawar      */
1909*c83a76b0SSuyog Pawar     WORD8 i1_tier_flag;
1910*c83a76b0SSuyog Pawar 
1911*c83a76b0SSuyog Pawar     /**
1912*c83a76b0SSuyog Pawar      *  profile_idc
1913*c83a76b0SSuyog Pawar      */
1914*c83a76b0SSuyog Pawar     WORD8 i1_profile_idc;
1915*c83a76b0SSuyog Pawar 
1916*c83a76b0SSuyog Pawar     /**
1917*c83a76b0SSuyog Pawar      *  profile_compatibility_flag[]
1918*c83a76b0SSuyog Pawar      */
1919*c83a76b0SSuyog Pawar     WORD8 ai1_profile_compatibility_flag[MAX_PROFILE_COMPATBLTY];
1920*c83a76b0SSuyog Pawar 
1921*c83a76b0SSuyog Pawar     /**
1922*c83a76b0SSuyog Pawar      * progressive_source_flag
1923*c83a76b0SSuyog Pawar      */
1924*c83a76b0SSuyog Pawar     WORD8 i1_general_progressive_source_flag;
1925*c83a76b0SSuyog Pawar 
1926*c83a76b0SSuyog Pawar     /**
1927*c83a76b0SSuyog Pawar      * interlaced_source_flag
1928*c83a76b0SSuyog Pawar      */
1929*c83a76b0SSuyog Pawar     WORD8 i1_general_interlaced_source_flag;
1930*c83a76b0SSuyog Pawar 
1931*c83a76b0SSuyog Pawar     /**
1932*c83a76b0SSuyog Pawar      * non_packed_constraint_flag
1933*c83a76b0SSuyog Pawar      */
1934*c83a76b0SSuyog Pawar     WORD8 i1_general_non_packed_constraint_flag;
1935*c83a76b0SSuyog Pawar 
1936*c83a76b0SSuyog Pawar     /**
1937*c83a76b0SSuyog Pawar      * frame_only_constraint_flag
1938*c83a76b0SSuyog Pawar      */
1939*c83a76b0SSuyog Pawar     WORD8 i1_frame_only_constraint_flag;
1940*c83a76b0SSuyog Pawar 
1941*c83a76b0SSuyog Pawar     /**
1942*c83a76b0SSuyog Pawar      * general_max_12bit_constraint_flag
1943*c83a76b0SSuyog Pawar      */
1944*c83a76b0SSuyog Pawar     WORD8 i1_general_max_12bit_constraint_flag;
1945*c83a76b0SSuyog Pawar 
1946*c83a76b0SSuyog Pawar     /**
1947*c83a76b0SSuyog Pawar      * general_max_10bit_constraint_flag
1948*c83a76b0SSuyog Pawar      */
1949*c83a76b0SSuyog Pawar     WORD8 i1_general_max_10bit_constraint_flag;
1950*c83a76b0SSuyog Pawar 
1951*c83a76b0SSuyog Pawar     /**
1952*c83a76b0SSuyog Pawar      * general_max_8bit_constraint_flag
1953*c83a76b0SSuyog Pawar      */
1954*c83a76b0SSuyog Pawar     WORD8 i1_general_max_8bit_constraint_flag;
1955*c83a76b0SSuyog Pawar 
1956*c83a76b0SSuyog Pawar     /**
1957*c83a76b0SSuyog Pawar      * general_max_422chroma_constraint_flag
1958*c83a76b0SSuyog Pawar      */
1959*c83a76b0SSuyog Pawar     WORD8 i1_general_max_422chroma_constraint_flag;
1960*c83a76b0SSuyog Pawar 
1961*c83a76b0SSuyog Pawar     /**
1962*c83a76b0SSuyog Pawar      * general_max_420chroma_constraint_flag
1963*c83a76b0SSuyog Pawar      */
1964*c83a76b0SSuyog Pawar     WORD8 i1_general_max_420chroma_constraint_flag;
1965*c83a76b0SSuyog Pawar 
1966*c83a76b0SSuyog Pawar     /**
1967*c83a76b0SSuyog Pawar      * general_max_monochrome_constraint_flag
1968*c83a76b0SSuyog Pawar      */
1969*c83a76b0SSuyog Pawar     WORD8 i1_general_max_monochrome_constraint_flag;
1970*c83a76b0SSuyog Pawar 
1971*c83a76b0SSuyog Pawar     /**
1972*c83a76b0SSuyog Pawar      * general_intra_constraint_flag
1973*c83a76b0SSuyog Pawar      */
1974*c83a76b0SSuyog Pawar     WORD8 i1_general_intra_constraint_flag;
1975*c83a76b0SSuyog Pawar 
1976*c83a76b0SSuyog Pawar     /**
1977*c83a76b0SSuyog Pawar      * general_one_picture_only_constraint_flag
1978*c83a76b0SSuyog Pawar      */
1979*c83a76b0SSuyog Pawar     WORD8 i1_general_one_picture_only_constraint_flag;
1980*c83a76b0SSuyog Pawar 
1981*c83a76b0SSuyog Pawar     /**
1982*c83a76b0SSuyog Pawar      * general_lower_bit_rate_constraint_flag
1983*c83a76b0SSuyog Pawar      */
1984*c83a76b0SSuyog Pawar     WORD8 i1_general_lower_bit_rate_constraint_flag;
1985*c83a76b0SSuyog Pawar 
1986*c83a76b0SSuyog Pawar     /**
1987*c83a76b0SSuyog Pawar      *  level_idc
1988*c83a76b0SSuyog Pawar      */
1989*c83a76b0SSuyog Pawar     UWORD8 u1_level_idc;
1990*c83a76b0SSuyog Pawar }profile_tier_lvl_t;
1991*c83a76b0SSuyog Pawar 
1992*c83a76b0SSuyog Pawar /**
1993*c83a76b0SSuyog Pawar  * Structure to hold Profile tier level info for all layers
1994*c83a76b0SSuyog Pawar  */
1995*c83a76b0SSuyog Pawar typedef struct
1996*c83a76b0SSuyog Pawar {
1997*c83a76b0SSuyog Pawar     /**
1998*c83a76b0SSuyog Pawar      *  Profile and tier information for general
1999*c83a76b0SSuyog Pawar      */
2000*c83a76b0SSuyog Pawar     profile_tier_lvl_t s_ptl_gen;
2001*c83a76b0SSuyog Pawar 
2002*c83a76b0SSuyog Pawar     /**
2003*c83a76b0SSuyog Pawar      *  sub_layer_profile_present_flag[]
2004*c83a76b0SSuyog Pawar      */
2005*c83a76b0SSuyog Pawar     WORD8 ai1_sub_layer_profile_present_flag[VPS_MAX_SUB_LAYERS - 1];
2006*c83a76b0SSuyog Pawar 
2007*c83a76b0SSuyog Pawar     /**
2008*c83a76b0SSuyog Pawar      *  sub_layer_level_present_flag[]
2009*c83a76b0SSuyog Pawar      */
2010*c83a76b0SSuyog Pawar     WORD8 ai1_sub_layer_level_present_flag[VPS_MAX_SUB_LAYERS - 1];
2011*c83a76b0SSuyog Pawar 
2012*c83a76b0SSuyog Pawar     /**
2013*c83a76b0SSuyog Pawar      *  Profile and tier information for sub layers
2014*c83a76b0SSuyog Pawar      */
2015*c83a76b0SSuyog Pawar     profile_tier_lvl_t as_ptl_sub[VPS_MAX_SUB_LAYERS - 1];
2016*c83a76b0SSuyog Pawar 
2017*c83a76b0SSuyog Pawar }profile_tier_lvl_info_t;
2018*c83a76b0SSuyog Pawar 
2019*c83a76b0SSuyog Pawar /**
2020*c83a76b0SSuyog Pawar  * Structure to hold short term reference picture set info
2021*c83a76b0SSuyog Pawar  */
2022*c83a76b0SSuyog Pawar typedef struct
2023*c83a76b0SSuyog Pawar {
2024*c83a76b0SSuyog Pawar     /**
2025*c83a76b0SSuyog Pawar      *  delta_poc_s0_minus1[ i ] and delta_poc_s1_minus1[ i ]
2026*c83a76b0SSuyog Pawar      */
2027*c83a76b0SSuyog Pawar     WORD16 ai2_delta_poc[MAX_DPB_SIZE];
2028*c83a76b0SSuyog Pawar 
2029*c83a76b0SSuyog Pawar     /**
2030*c83a76b0SSuyog Pawar      *  inter_ref_pic_set_prediction_flag
2031*c83a76b0SSuyog Pawar      */
2032*c83a76b0SSuyog Pawar     WORD8 i1_inter_ref_pic_set_prediction_flag;
2033*c83a76b0SSuyog Pawar 
2034*c83a76b0SSuyog Pawar     /**
2035*c83a76b0SSuyog Pawar      *  num_negative_pics
2036*c83a76b0SSuyog Pawar      */
2037*c83a76b0SSuyog Pawar     WORD8 i1_num_neg_pics;
2038*c83a76b0SSuyog Pawar 
2039*c83a76b0SSuyog Pawar     /**
2040*c83a76b0SSuyog Pawar      *  num_positive_pics
2041*c83a76b0SSuyog Pawar      */
2042*c83a76b0SSuyog Pawar     WORD8 i1_num_pos_pics;
2043*c83a76b0SSuyog Pawar 
2044*c83a76b0SSuyog Pawar     /**
2045*c83a76b0SSuyog Pawar      *  used_by_curr_pic_s0_flag[ i ] and used_by_curr_pic_s1_flag[i]
2046*c83a76b0SSuyog Pawar      */
2047*c83a76b0SSuyog Pawar     WORD8 ai1_used[MAX_DPB_SIZE];
2048*c83a76b0SSuyog Pawar 
2049*c83a76b0SSuyog Pawar     /**
2050*c83a76b0SSuyog Pawar      *  Ref Idc
2051*c83a76b0SSuyog Pawar      */
2052*c83a76b0SSuyog Pawar     WORD8 ai1_ref_idc[MAX_DPB_SIZE];
2053*c83a76b0SSuyog Pawar 
2054*c83a76b0SSuyog Pawar     /**
2055*c83a76b0SSuyog Pawar      *  Sum of positive and negative pics for each refence
2056*c83a76b0SSuyog Pawar      */
2057*c83a76b0SSuyog Pawar     WORD8 i1_num_delta_pocs;
2058*c83a76b0SSuyog Pawar 
2059*c83a76b0SSuyog Pawar     /**
2060*c83a76b0SSuyog Pawar      *  Number of ref_idc
2061*c83a76b0SSuyog Pawar      */
2062*c83a76b0SSuyog Pawar     WORD8 i1_num_ref_idc;
2063*c83a76b0SSuyog Pawar }stref_picset_t;
2064*c83a76b0SSuyog Pawar 
2065*c83a76b0SSuyog Pawar /**
2066*c83a76b0SSuyog Pawar  * Structure to hold weighted prediction info such as weights and offsets
2067*c83a76b0SSuyog Pawar  */
2068*c83a76b0SSuyog Pawar typedef struct
2069*c83a76b0SSuyog Pawar {
2070*c83a76b0SSuyog Pawar     /** luma_log2_weight_denom */
2071*c83a76b0SSuyog Pawar     WORD8 i1_luma_log2_weight_denom;
2072*c83a76b0SSuyog Pawar 
2073*c83a76b0SSuyog Pawar     /** delta_chroma_log2_weight_denom */
2074*c83a76b0SSuyog Pawar     WORD8 i1_chroma_log2_weight_denom;
2075*c83a76b0SSuyog Pawar 
2076*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE
2077*c83a76b0SSuyog Pawar     /** WpOffsetBdShiftY */
2078*c83a76b0SSuyog Pawar     WORD8 i1_wp_ofst_bd_shift_luma;
2079*c83a76b0SSuyog Pawar 
2080*c83a76b0SSuyog Pawar     /** WpOffsetBdShiftC */
2081*c83a76b0SSuyog Pawar     WORD8 i1_wp_ofst_bd_shift_chroma;
2082*c83a76b0SSuyog Pawar 
2083*c83a76b0SSuyog Pawar     /** WpOffsetHalfRangeY */
2084*c83a76b0SSuyog Pawar     WORD32 i4_wp_ofst_half_rng_luma;
2085*c83a76b0SSuyog Pawar 
2086*c83a76b0SSuyog Pawar     /** WpOffsetHalfRangeC */
2087*c83a76b0SSuyog Pawar     WORD32 i4_wp_ofst_half_rng_chroma;
2088*c83a76b0SSuyog Pawar #endif
2089*c83a76b0SSuyog Pawar 
2090*c83a76b0SSuyog Pawar     /** luma_weight_l0_flag[ i ] */
2091*c83a76b0SSuyog Pawar     WORD8 i1_luma_weight_l0_flag[MAX_DPB_SIZE];
2092*c83a76b0SSuyog Pawar 
2093*c83a76b0SSuyog Pawar     /** chroma_weight_l0_flag[ i ] */
2094*c83a76b0SSuyog Pawar     WORD8 i1_chroma_weight_l0_flag[MAX_DPB_SIZE];
2095*c83a76b0SSuyog Pawar 
2096*c83a76b0SSuyog Pawar     /** delta_luma_weight_l0[ i ] */
2097*c83a76b0SSuyog Pawar     WORD16 i2_luma_weight_l0[MAX_DPB_SIZE];
2098*c83a76b0SSuyog Pawar 
2099*c83a76b0SSuyog Pawar     /** luma_offset_l0[ i ] */
2100*c83a76b0SSuyog Pawar     WORD16 i2_luma_offset_l0[MAX_DPB_SIZE];
2101*c83a76b0SSuyog Pawar 
2102*c83a76b0SSuyog Pawar     /** delta_chroma_weight_l0[ i ][ j ] */
2103*c83a76b0SSuyog Pawar     WORD16 i2_chroma_weight_l0_cb[MAX_DPB_SIZE];
2104*c83a76b0SSuyog Pawar 
2105*c83a76b0SSuyog Pawar     /** delta_chroma_offset_l0[ i ][ j ] */
2106*c83a76b0SSuyog Pawar     WORD16 i2_chroma_offset_l0_cb[MAX_DPB_SIZE];
2107*c83a76b0SSuyog Pawar 
2108*c83a76b0SSuyog Pawar     /** delta_chroma_weight_l0[ i ][ j ] */
2109*c83a76b0SSuyog Pawar     WORD16 i2_chroma_weight_l0_cr[MAX_DPB_SIZE];
2110*c83a76b0SSuyog Pawar 
2111*c83a76b0SSuyog Pawar     /** delta_chroma_offset_l0[ i ][ j ] */
2112*c83a76b0SSuyog Pawar     WORD16 i2_chroma_offset_l0_cr[MAX_DPB_SIZE];
2113*c83a76b0SSuyog Pawar 
2114*c83a76b0SSuyog Pawar     /** luma_weight_l1_flag[ i ] */
2115*c83a76b0SSuyog Pawar     WORD8 i1_luma_weight_l1_flag[MAX_DPB_SIZE];
2116*c83a76b0SSuyog Pawar 
2117*c83a76b0SSuyog Pawar     /** chroma_weight_l1_flag[ i ] */
2118*c83a76b0SSuyog Pawar     WORD8 i1_chroma_weight_l1_flag[MAX_DPB_SIZE];
2119*c83a76b0SSuyog Pawar 
2120*c83a76b0SSuyog Pawar     /** delta_luma_weight_l1[ i ] */
2121*c83a76b0SSuyog Pawar     WORD16 i2_luma_weight_l1[MAX_DPB_SIZE];
2122*c83a76b0SSuyog Pawar 
2123*c83a76b0SSuyog Pawar     /** luma_offset_l1[ i ] */
2124*c83a76b0SSuyog Pawar     WORD16 i2_luma_offset_l1[MAX_DPB_SIZE];
2125*c83a76b0SSuyog Pawar 
2126*c83a76b0SSuyog Pawar     /** delta_chroma_weight_l1[ i ][ j ] */
2127*c83a76b0SSuyog Pawar     WORD16 i2_chroma_weight_l1_cb[MAX_DPB_SIZE];
2128*c83a76b0SSuyog Pawar 
2129*c83a76b0SSuyog Pawar     /** delta_chroma_offset_l1[ i ][ j ] */
2130*c83a76b0SSuyog Pawar     WORD16 i2_chroma_offset_l1_cb[MAX_DPB_SIZE];
2131*c83a76b0SSuyog Pawar 
2132*c83a76b0SSuyog Pawar     /** delta_chroma_weight_l1[ i ][ j ] */
2133*c83a76b0SSuyog Pawar     WORD16 i2_chroma_weight_l1_cr[MAX_DPB_SIZE];
2134*c83a76b0SSuyog Pawar 
2135*c83a76b0SSuyog Pawar     /** delta_chroma_offset_l1[ i ][ j ] */
2136*c83a76b0SSuyog Pawar     WORD16 i2_chroma_offset_l1_cr[MAX_DPB_SIZE];
2137*c83a76b0SSuyog Pawar 
2138*c83a76b0SSuyog Pawar }pred_wt_ofst_t;
2139*c83a76b0SSuyog Pawar 
2140*c83a76b0SSuyog Pawar 
2141*c83a76b0SSuyog Pawar /**
2142*c83a76b0SSuyog Pawar  * Structure to hold Reference picture list modification info
2143*c83a76b0SSuyog Pawar  */
2144*c83a76b0SSuyog Pawar typedef struct
2145*c83a76b0SSuyog Pawar {
2146*c83a76b0SSuyog Pawar     /* ref_pic_list_modification_flag_l0 */
2147*c83a76b0SSuyog Pawar     WORD8 i1_ref_pic_list_modification_flag_l0;
2148*c83a76b0SSuyog Pawar 
2149*c83a76b0SSuyog Pawar     /* list_entry_l0[ i ] */
2150*c83a76b0SSuyog Pawar     WORD8 i1_list_entry_l0[16];
2151*c83a76b0SSuyog Pawar 
2152*c83a76b0SSuyog Pawar     /* ref_pic_list_modification_flag_l1 */
2153*c83a76b0SSuyog Pawar     WORD8 i1_ref_pic_list_modification_flag_l1;
2154*c83a76b0SSuyog Pawar 
2155*c83a76b0SSuyog Pawar     /* list_entry_l1[ i ] */
2156*c83a76b0SSuyog Pawar     WORD8 i1_list_entry_l1[16];
2157*c83a76b0SSuyog Pawar 
2158*c83a76b0SSuyog Pawar     /* Reference POC values for L0,L1 */
2159*c83a76b0SSuyog Pawar     WORD32 i4_ref_poc_l0[16];
2160*c83a76b0SSuyog Pawar     WORD32 i4_ref_poc_l1[16];
2161*c83a76b0SSuyog Pawar }rplm_t;
2162*c83a76b0SSuyog Pawar 
2163*c83a76b0SSuyog Pawar 
2164*c83a76b0SSuyog Pawar /**
2165*c83a76b0SSuyog Pawar  * Structure to hold VPS info
2166*c83a76b0SSuyog Pawar  */
2167*c83a76b0SSuyog Pawar typedef struct
2168*c83a76b0SSuyog Pawar {
2169*c83a76b0SSuyog Pawar     /**
2170*c83a76b0SSuyog Pawar      *  video_parameter_set_id
2171*c83a76b0SSuyog Pawar      */
2172*c83a76b0SSuyog Pawar     WORD8 i1_vps_id;
2173*c83a76b0SSuyog Pawar 
2174*c83a76b0SSuyog Pawar     /**
2175*c83a76b0SSuyog Pawar      *  vps_temporal_id_nesting_flag
2176*c83a76b0SSuyog Pawar      */
2177*c83a76b0SSuyog Pawar     WORD8 i1_vps_temporal_id_nesting_flag;
2178*c83a76b0SSuyog Pawar     /**
2179*c83a76b0SSuyog Pawar      * sub_layer_ordering_info_present_flag
2180*c83a76b0SSuyog Pawar      */
2181*c83a76b0SSuyog Pawar     WORD8 i1_sub_layer_ordering_info_present_flag;
2182*c83a76b0SSuyog Pawar     /**
2183*c83a76b0SSuyog Pawar      *  vps_max_sub_layers_minus1
2184*c83a76b0SSuyog Pawar      */
2185*c83a76b0SSuyog Pawar     WORD8 i1_vps_max_sub_layers;
2186*c83a76b0SSuyog Pawar 
2187*c83a76b0SSuyog Pawar     /**
2188*c83a76b0SSuyog Pawar      *  vps_max_dec_pic_buffering
2189*c83a76b0SSuyog Pawar      */
2190*c83a76b0SSuyog Pawar     WORD8 ai1_vps_max_dec_pic_buffering[VPS_MAX_SUB_LAYERS];
2191*c83a76b0SSuyog Pawar 
2192*c83a76b0SSuyog Pawar     /**
2193*c83a76b0SSuyog Pawar      *  vps_max_num_reorder_pics
2194*c83a76b0SSuyog Pawar      */
2195*c83a76b0SSuyog Pawar     WORD8 ai1_vps_max_num_reorder_pics[VPS_MAX_SUB_LAYERS];
2196*c83a76b0SSuyog Pawar 
2197*c83a76b0SSuyog Pawar     /**
2198*c83a76b0SSuyog Pawar      *  vps_max_latency_increase
2199*c83a76b0SSuyog Pawar      */
2200*c83a76b0SSuyog Pawar     WORD8 ai1_vps_max_latency_increase[VPS_MAX_SUB_LAYERS];
2201*c83a76b0SSuyog Pawar 
2202*c83a76b0SSuyog Pawar     /**
2203*c83a76b0SSuyog Pawar      *  vps_num_hrd_parameters
2204*c83a76b0SSuyog Pawar      */
2205*c83a76b0SSuyog Pawar     WORD8 i1_vps_num_hrd_parameters;
2206*c83a76b0SSuyog Pawar 
2207*c83a76b0SSuyog Pawar     /**
2208*c83a76b0SSuyog Pawar      * vps_max_nuh_reserved_zero_layer_id
2209*c83a76b0SSuyog Pawar      */
2210*c83a76b0SSuyog Pawar     WORD8 i1_vps_max_nuh_reserved_zero_layer_id;
2211*c83a76b0SSuyog Pawar 
2212*c83a76b0SSuyog Pawar     /**
2213*c83a76b0SSuyog Pawar      * vps_num_op_sets
2214*c83a76b0SSuyog Pawar      */
2215*c83a76b0SSuyog Pawar     WORD8 i1_vps_num_op_sets;
2216*c83a76b0SSuyog Pawar 
2217*c83a76b0SSuyog Pawar     /**
2218*c83a76b0SSuyog Pawar      * layer_id_included_flag
2219*c83a76b0SSuyog Pawar      */
2220*c83a76b0SSuyog Pawar     //WORD8 ai1_layer_id_included_flag[2][MAX_NUH_LAYERS];
2221*c83a76b0SSuyog Pawar     /**
2222*c83a76b0SSuyog Pawar      *  Profile, Tier and Level info
2223*c83a76b0SSuyog Pawar      */
2224*c83a76b0SSuyog Pawar     profile_tier_lvl_info_t s_ptl;
2225*c83a76b0SSuyog Pawar 
2226*c83a76b0SSuyog Pawar     /**
2227*c83a76b0SSuyog Pawar      * bit_rate_info_present_flag[i]
2228*c83a76b0SSuyog Pawar      */
2229*c83a76b0SSuyog Pawar     WORD8 ai1_bit_rate_info_present_flag[VPS_MAX_SUB_LAYERS];
2230*c83a76b0SSuyog Pawar 
2231*c83a76b0SSuyog Pawar     /**
2232*c83a76b0SSuyog Pawar      * pic_rate_info_present_flag[i]
2233*c83a76b0SSuyog Pawar      */
2234*c83a76b0SSuyog Pawar     WORD8 ai1_pic_rate_info_present_flag[VPS_MAX_SUB_LAYERS];
2235*c83a76b0SSuyog Pawar 
2236*c83a76b0SSuyog Pawar     /**
2237*c83a76b0SSuyog Pawar      * avg_bit_rate[i]
2238*c83a76b0SSuyog Pawar      */
2239*c83a76b0SSuyog Pawar     UWORD16 au2_avg_bit_rate[VPS_MAX_SUB_LAYERS];
2240*c83a76b0SSuyog Pawar 
2241*c83a76b0SSuyog Pawar     /**
2242*c83a76b0SSuyog Pawar      * max_bit_rate[i]
2243*c83a76b0SSuyog Pawar      */
2244*c83a76b0SSuyog Pawar     UWORD16 au2_max_bit_rate[VPS_MAX_SUB_LAYERS];
2245*c83a76b0SSuyog Pawar 
2246*c83a76b0SSuyog Pawar     /**
2247*c83a76b0SSuyog Pawar      * constant_pic_rate_idc[i]
2248*c83a76b0SSuyog Pawar      */
2249*c83a76b0SSuyog Pawar     WORD8 ai1_constant_pic_rate_idc[VPS_MAX_SUB_LAYERS];
2250*c83a76b0SSuyog Pawar 
2251*c83a76b0SSuyog Pawar     /**
2252*c83a76b0SSuyog Pawar      * avg_pic_rate[i]
2253*c83a76b0SSuyog Pawar      */
2254*c83a76b0SSuyog Pawar     UWORD16 au2_avg_pic_rate[VPS_MAX_SUB_LAYERS];
2255*c83a76b0SSuyog Pawar }vps_t;
2256*c83a76b0SSuyog Pawar 
2257*c83a76b0SSuyog Pawar 
2258*c83a76b0SSuyog Pawar /**
2259*c83a76b0SSuyog Pawar  * Structure to hold SPS info
2260*c83a76b0SSuyog Pawar  */
2261*c83a76b0SSuyog Pawar typedef struct
2262*c83a76b0SSuyog Pawar {
2263*c83a76b0SSuyog Pawar     /**
2264*c83a76b0SSuyog Pawar      * pic_width_in_luma_samples
2265*c83a76b0SSuyog Pawar      */
2266*c83a76b0SSuyog Pawar     WORD16 i2_pic_width_in_luma_samples;
2267*c83a76b0SSuyog Pawar 
2268*c83a76b0SSuyog Pawar     /**
2269*c83a76b0SSuyog Pawar      *  pic_height_in_luma_samples
2270*c83a76b0SSuyog Pawar      */
2271*c83a76b0SSuyog Pawar     WORD16 i2_pic_height_in_luma_samples;
2272*c83a76b0SSuyog Pawar 
2273*c83a76b0SSuyog Pawar     /**
2274*c83a76b0SSuyog Pawar      *  pic_crop_left_offset
2275*c83a76b0SSuyog Pawar      */
2276*c83a76b0SSuyog Pawar     WORD16 i2_pic_crop_left_offset;
2277*c83a76b0SSuyog Pawar 
2278*c83a76b0SSuyog Pawar     /**
2279*c83a76b0SSuyog Pawar      *  pic_crop_right_offset
2280*c83a76b0SSuyog Pawar      */
2281*c83a76b0SSuyog Pawar     WORD16 i2_pic_crop_right_offset;
2282*c83a76b0SSuyog Pawar 
2283*c83a76b0SSuyog Pawar     /**
2284*c83a76b0SSuyog Pawar      *  pic_crop_top_offset
2285*c83a76b0SSuyog Pawar      */
2286*c83a76b0SSuyog Pawar     WORD16 i2_pic_crop_top_offset;
2287*c83a76b0SSuyog Pawar 
2288*c83a76b0SSuyog Pawar     /**
2289*c83a76b0SSuyog Pawar      *  pic_crop_bottom_offset
2290*c83a76b0SSuyog Pawar      */
2291*c83a76b0SSuyog Pawar     WORD16 i2_pic_crop_bottom_offset;
2292*c83a76b0SSuyog Pawar 
2293*c83a76b0SSuyog Pawar     /**
2294*c83a76b0SSuyog Pawar      *  seq_parameter_set_id
2295*c83a76b0SSuyog Pawar      */
2296*c83a76b0SSuyog Pawar     WORD8 i1_sps_id;
2297*c83a76b0SSuyog Pawar 
2298*c83a76b0SSuyog Pawar     /**
2299*c83a76b0SSuyog Pawar      *  video_parameter_set_id
2300*c83a76b0SSuyog Pawar      */
2301*c83a76b0SSuyog Pawar     WORD8 i1_vps_id;
2302*c83a76b0SSuyog Pawar 
2303*c83a76b0SSuyog Pawar     /**
2304*c83a76b0SSuyog Pawar      *  sps_max_sub_layers_minus1
2305*c83a76b0SSuyog Pawar      */
2306*c83a76b0SSuyog Pawar     WORD8 i1_sps_max_sub_layers;
2307*c83a76b0SSuyog Pawar 
2308*c83a76b0SSuyog Pawar     /**
2309*c83a76b0SSuyog Pawar      *  chroma_format_idc
2310*c83a76b0SSuyog Pawar      */
2311*c83a76b0SSuyog Pawar     WORD8 i1_chroma_format_idc;
2312*c83a76b0SSuyog Pawar 
2313*c83a76b0SSuyog Pawar     /**
2314*c83a76b0SSuyog Pawar      * Bit depth of luma samples
2315*c83a76b0SSuyog Pawar      */
2316*c83a76b0SSuyog Pawar     WORD8 i1_bit_depth_luma_minus8;
2317*c83a76b0SSuyog Pawar 
2318*c83a76b0SSuyog Pawar     /**
2319*c83a76b0SSuyog Pawar      * Bit depth of chrma samples
2320*c83a76b0SSuyog Pawar      */
2321*c83a76b0SSuyog Pawar     WORD8 i1_bit_depth_chroma_minus8;
2322*c83a76b0SSuyog Pawar 
2323*c83a76b0SSuyog Pawar     /* separate_colour_plane_flag */
2324*c83a76b0SSuyog Pawar     WORD8 i1_separate_colour_plane_flag;
2325*c83a76b0SSuyog Pawar 
2326*c83a76b0SSuyog Pawar     /**
2327*c83a76b0SSuyog Pawar      *  pic_cropping_flag
2328*c83a76b0SSuyog Pawar      */
2329*c83a76b0SSuyog Pawar     WORD8 i1_pic_cropping_flag;
2330*c83a76b0SSuyog Pawar 
2331*c83a76b0SSuyog Pawar     /**
2332*c83a76b0SSuyog Pawar      *  pcm_enabled_flag
2333*c83a76b0SSuyog Pawar      */
2334*c83a76b0SSuyog Pawar     WORD8 i1_pcm_enabled_flag;
2335*c83a76b0SSuyog Pawar 
2336*c83a76b0SSuyog Pawar     /**
2337*c83a76b0SSuyog Pawar      *  pcm_sample_bit_depth_luma
2338*c83a76b0SSuyog Pawar      */
2339*c83a76b0SSuyog Pawar     WORD8 i1_pcm_sample_bit_depth_luma;
2340*c83a76b0SSuyog Pawar 
2341*c83a76b0SSuyog Pawar     /**
2342*c83a76b0SSuyog Pawar      *  pcm_sample_bit_depth_chroma
2343*c83a76b0SSuyog Pawar      */
2344*c83a76b0SSuyog Pawar     WORD8 i1_pcm_sample_bit_depth_chroma;
2345*c83a76b0SSuyog Pawar 
2346*c83a76b0SSuyog Pawar     /**
2347*c83a76b0SSuyog Pawar      *  log2_max_pic_order_cnt_lsb_minus4
2348*c83a76b0SSuyog Pawar      */
2349*c83a76b0SSuyog Pawar     WORD8 i1_log2_max_pic_order_cnt_lsb;
2350*c83a76b0SSuyog Pawar     /**
2351*c83a76b0SSuyog Pawar      * sps_sub_layer_ordering_info_present_flag
2352*c83a76b0SSuyog Pawar      */
2353*c83a76b0SSuyog Pawar     WORD8 i1_sps_sub_layer_ordering_info_present_flag;
2354*c83a76b0SSuyog Pawar     /**
2355*c83a76b0SSuyog Pawar      *  sps_max_dec_pic_buffering
2356*c83a76b0SSuyog Pawar      */
2357*c83a76b0SSuyog Pawar     WORD8 ai1_sps_max_dec_pic_buffering[SPS_MAX_SUB_LAYERS];
2358*c83a76b0SSuyog Pawar 
2359*c83a76b0SSuyog Pawar     /**
2360*c83a76b0SSuyog Pawar      *  sps_max_num_reorder_pics
2361*c83a76b0SSuyog Pawar      */
2362*c83a76b0SSuyog Pawar     WORD8 ai1_sps_max_num_reorder_pics[SPS_MAX_SUB_LAYERS];
2363*c83a76b0SSuyog Pawar 
2364*c83a76b0SSuyog Pawar     /**
2365*c83a76b0SSuyog Pawar      *  sps_max_latency_increase
2366*c83a76b0SSuyog Pawar      */
2367*c83a76b0SSuyog Pawar     WORD8 ai1_sps_max_latency_increase[SPS_MAX_SUB_LAYERS];
2368*c83a76b0SSuyog Pawar 
2369*c83a76b0SSuyog Pawar     /**
2370*c83a76b0SSuyog Pawar      *  log2_min_coding_block_size_minus3
2371*c83a76b0SSuyog Pawar      */
2372*c83a76b0SSuyog Pawar     WORD8 i1_log2_min_coding_block_size;
2373*c83a76b0SSuyog Pawar 
2374*c83a76b0SSuyog Pawar     /**
2375*c83a76b0SSuyog Pawar      *  log2_diff_max_min_coding_block_size
2376*c83a76b0SSuyog Pawar      */
2377*c83a76b0SSuyog Pawar     WORD8 i1_log2_diff_max_min_coding_block_size;
2378*c83a76b0SSuyog Pawar 
2379*c83a76b0SSuyog Pawar     /**
2380*c83a76b0SSuyog Pawar      *  log2_min_transform_block_size_minus2
2381*c83a76b0SSuyog Pawar      */
2382*c83a76b0SSuyog Pawar     WORD8 i1_log2_min_transform_block_size;
2383*c83a76b0SSuyog Pawar 
2384*c83a76b0SSuyog Pawar     /**
2385*c83a76b0SSuyog Pawar      *  log2_diff_max_min_transform_block_size
2386*c83a76b0SSuyog Pawar      */
2387*c83a76b0SSuyog Pawar     WORD8 i1_log2_diff_max_min_transform_block_size;
2388*c83a76b0SSuyog Pawar 
2389*c83a76b0SSuyog Pawar     /**
2390*c83a76b0SSuyog Pawar      *  log2_min_pcm_coding_block_size_minus3
2391*c83a76b0SSuyog Pawar      */
2392*c83a76b0SSuyog Pawar     WORD8 i1_log2_min_pcm_coding_block_size;
2393*c83a76b0SSuyog Pawar 
2394*c83a76b0SSuyog Pawar     /**
2395*c83a76b0SSuyog Pawar      *  log2_diff_max_min_pcm_coding_block_size
2396*c83a76b0SSuyog Pawar      */
2397*c83a76b0SSuyog Pawar     WORD8 i1_log2_diff_max_min_pcm_coding_block_size;
2398*c83a76b0SSuyog Pawar 
2399*c83a76b0SSuyog Pawar     /**
2400*c83a76b0SSuyog Pawar      *  max_transform_hierarchy_depth_inter
2401*c83a76b0SSuyog Pawar      */
2402*c83a76b0SSuyog Pawar     WORD8 i1_max_transform_hierarchy_depth_inter;
2403*c83a76b0SSuyog Pawar 
2404*c83a76b0SSuyog Pawar     /**
2405*c83a76b0SSuyog Pawar      *  max_transform_hierarchy_depth_intra
2406*c83a76b0SSuyog Pawar      */
2407*c83a76b0SSuyog Pawar     WORD8 i1_max_transform_hierarchy_depth_intra;
2408*c83a76b0SSuyog Pawar 
2409*c83a76b0SSuyog Pawar     /**
2410*c83a76b0SSuyog Pawar      *  scaling_list_enable_flag
2411*c83a76b0SSuyog Pawar      */
2412*c83a76b0SSuyog Pawar     WORD8 i1_scaling_list_enable_flag;
2413*c83a76b0SSuyog Pawar 
2414*c83a76b0SSuyog Pawar     /**
2415*c83a76b0SSuyog Pawar      *  sps_scaling_list_data_present_flag
2416*c83a76b0SSuyog Pawar      */
2417*c83a76b0SSuyog Pawar     WORD8 i1_sps_scaling_list_data_present_flag;
2418*c83a76b0SSuyog Pawar 
2419*c83a76b0SSuyog Pawar     /**
2420*c83a76b0SSuyog Pawar      *  amp_enabled_flag
2421*c83a76b0SSuyog Pawar      */
2422*c83a76b0SSuyog Pawar     WORD8 i1_amp_enabled_flag;
2423*c83a76b0SSuyog Pawar 
2424*c83a76b0SSuyog Pawar     /**
2425*c83a76b0SSuyog Pawar      *  sample_adaptive_offset_enabled_flag
2426*c83a76b0SSuyog Pawar      */
2427*c83a76b0SSuyog Pawar     WORD8 i1_sample_adaptive_offset_enabled_flag;
2428*c83a76b0SSuyog Pawar 
2429*c83a76b0SSuyog Pawar     /**
2430*c83a76b0SSuyog Pawar      *  pcm_loop_filter_disable_flag
2431*c83a76b0SSuyog Pawar      */
2432*c83a76b0SSuyog Pawar     WORD8 i1_pcm_loop_filter_disable_flag;
2433*c83a76b0SSuyog Pawar 
2434*c83a76b0SSuyog Pawar     /**
2435*c83a76b0SSuyog Pawar      *  sps_temporal_id_nesting_flag
2436*c83a76b0SSuyog Pawar      */
2437*c83a76b0SSuyog Pawar     WORD8 i1_sps_temporal_id_nesting_flag;
2438*c83a76b0SSuyog Pawar 
2439*c83a76b0SSuyog Pawar     /**
2440*c83a76b0SSuyog Pawar      *  num_short_term_ref_pic_sets
2441*c83a76b0SSuyog Pawar      */
2442*c83a76b0SSuyog Pawar     WORD8 i1_num_short_term_ref_pic_sets;
2443*c83a76b0SSuyog Pawar 
2444*c83a76b0SSuyog Pawar     /**
2445*c83a76b0SSuyog Pawar      *  long_term_ref_pics_present_flag
2446*c83a76b0SSuyog Pawar      */
2447*c83a76b0SSuyog Pawar     WORD8 i1_long_term_ref_pics_present_flag;
2448*c83a76b0SSuyog Pawar 
2449*c83a76b0SSuyog Pawar     /**
2450*c83a76b0SSuyog Pawar      *  num_long_term_ref_pics_sps
2451*c83a76b0SSuyog Pawar      */
2452*c83a76b0SSuyog Pawar     WORD8 i1_num_long_term_ref_pics_sps;
2453*c83a76b0SSuyog Pawar 
2454*c83a76b0SSuyog Pawar     /**
2455*c83a76b0SSuyog Pawar      *  lt_ref_pic_poc_lsb_sps[]
2456*c83a76b0SSuyog Pawar      */
2457*c83a76b0SSuyog Pawar     UWORD16 au2_lt_ref_pic_poc_lsb_sps[MAX_LTREF_PICS_SPS];
2458*c83a76b0SSuyog Pawar 
2459*c83a76b0SSuyog Pawar     /**
2460*c83a76b0SSuyog Pawar      *  used_by_curr_pic_lt_sps_flag[]
2461*c83a76b0SSuyog Pawar      */
2462*c83a76b0SSuyog Pawar     WORD8 ai1_used_by_curr_pic_lt_sps_flag[MAX_LTREF_PICS_SPS];
2463*c83a76b0SSuyog Pawar 
2464*c83a76b0SSuyog Pawar     /**
2465*c83a76b0SSuyog Pawar      *  sps_temporal_mvp_enable_flag
2466*c83a76b0SSuyog Pawar      */
2467*c83a76b0SSuyog Pawar     WORD8 i1_sps_temporal_mvp_enable_flag;
2468*c83a76b0SSuyog Pawar 
2469*c83a76b0SSuyog Pawar     /**
2470*c83a76b0SSuyog Pawar      * strong_intra_smoothing_enable_flag
2471*c83a76b0SSuyog Pawar      */
2472*c83a76b0SSuyog Pawar     WORD8 i1_strong_intra_smoothing_enable_flag;
2473*c83a76b0SSuyog Pawar 
2474*c83a76b0SSuyog Pawar     /**
2475*c83a76b0SSuyog Pawar      *  vui_parameters_present_flag
2476*c83a76b0SSuyog Pawar      */
2477*c83a76b0SSuyog Pawar     WORD8 i1_vui_parameters_present_flag;
2478*c83a76b0SSuyog Pawar 
2479*c83a76b0SSuyog Pawar     /**
2480*c83a76b0SSuyog Pawar      * vui parameters Structure info
2481*c83a76b0SSuyog Pawar      */
2482*c83a76b0SSuyog Pawar     vui_t s_vui_parameters;
2483*c83a76b0SSuyog Pawar 
2484*c83a76b0SSuyog Pawar     /**
2485*c83a76b0SSuyog Pawar      *  Log2(CTB Size) in luma units
2486*c83a76b0SSuyog Pawar      */
2487*c83a76b0SSuyog Pawar 
2488*c83a76b0SSuyog Pawar     WORD8 i1_log2_ctb_size;
2489*c83a76b0SSuyog Pawar 
2490*c83a76b0SSuyog Pawar     /**
2491*c83a76b0SSuyog Pawar      * Maximum transform block size
2492*c83a76b0SSuyog Pawar      */
2493*c83a76b0SSuyog Pawar     WORD8 i1_log2_max_transform_block_size;
2494*c83a76b0SSuyog Pawar 
2495*c83a76b0SSuyog Pawar     /**
2496*c83a76b0SSuyog Pawar      *  Picture width in CTB units
2497*c83a76b0SSuyog Pawar      */
2498*c83a76b0SSuyog Pawar 
2499*c83a76b0SSuyog Pawar     WORD16 i2_pic_wd_in_ctb;
2500*c83a76b0SSuyog Pawar 
2501*c83a76b0SSuyog Pawar     /**
2502*c83a76b0SSuyog Pawar      *  Picture height in CTB units
2503*c83a76b0SSuyog Pawar      */
2504*c83a76b0SSuyog Pawar 
2505*c83a76b0SSuyog Pawar     WORD16 i2_pic_ht_in_ctb;
2506*c83a76b0SSuyog Pawar 
2507*c83a76b0SSuyog Pawar     /**
2508*c83a76b0SSuyog Pawar      * Picture width in min CB units
2509*c83a76b0SSuyog Pawar      */
2510*c83a76b0SSuyog Pawar 
2511*c83a76b0SSuyog Pawar     WORD16 i2_pic_wd_in_min_cb;
2512*c83a76b0SSuyog Pawar 
2513*c83a76b0SSuyog Pawar     /**
2514*c83a76b0SSuyog Pawar      *  Picture height in min CB units
2515*c83a76b0SSuyog Pawar      */
2516*c83a76b0SSuyog Pawar 
2517*c83a76b0SSuyog Pawar     WORD16 i2_pic_ht_in_min_cb;
2518*c83a76b0SSuyog Pawar 
2519*c83a76b0SSuyog Pawar     /**
2520*c83a76b0SSuyog Pawar      *  Picture size in CTB units
2521*c83a76b0SSuyog Pawar      */
2522*c83a76b0SSuyog Pawar     WORD32 i4_pic_size_in_ctb;
2523*c83a76b0SSuyog Pawar 
2524*c83a76b0SSuyog Pawar     /**
2525*c83a76b0SSuyog Pawar      *  Profile, Tier and Level info
2526*c83a76b0SSuyog Pawar      */
2527*c83a76b0SSuyog Pawar 
2528*c83a76b0SSuyog Pawar     profile_tier_lvl_info_t s_ptl;
2529*c83a76b0SSuyog Pawar 
2530*c83a76b0SSuyog Pawar     /**
2531*c83a76b0SSuyog Pawar      *  Short term reference pic set
2532*c83a76b0SSuyog Pawar      */
2533*c83a76b0SSuyog Pawar     stref_picset_t as_stref_picset[MAX_STREF_PICS_SPS];
2534*c83a76b0SSuyog Pawar 
2535*c83a76b0SSuyog Pawar     /**
2536*c83a76b0SSuyog Pawar      *  Pointer to scaling matrix
2537*c83a76b0SSuyog Pawar      */
2538*c83a76b0SSuyog Pawar     /*************************************************************************/
2539*c83a76b0SSuyog Pawar     /* Contanis the matrice in the following order in a 1D buffer            */
2540*c83a76b0SSuyog Pawar     /* Intra 4 x 4 Y, 4 x 4 U, 4 x 4 V                                       */
2541*c83a76b0SSuyog Pawar     /* Inter 4 x 4 Y, 4 x 4 U, 4 x 4 V                                       */
2542*c83a76b0SSuyog Pawar     /* Intra 8 x 8 Y, 8 x 8 U, 8 x 8 V                                       */
2543*c83a76b0SSuyog Pawar     /* Inter 8 x 8 Y, 8 x 8 U, 8 x 8 V                                       */
2544*c83a76b0SSuyog Pawar     /* Intra 16x16 Y, 16x16 U, 16x16 V                                       */
2545*c83a76b0SSuyog Pawar     /* Inter 16x16 Y, 16x16 U, 16x16 V                                       */
2546*c83a76b0SSuyog Pawar     /* Intra 32x32 Y                                                         */
2547*c83a76b0SSuyog Pawar     /* Inter 32x32 Y                                                         */
2548*c83a76b0SSuyog Pawar     /*************************************************************************/
2549*c83a76b0SSuyog Pawar     WORD16 *pi2_scaling_mat;
2550*c83a76b0SSuyog Pawar 
2551*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE
2552*c83a76b0SSuyog Pawar 
2553*c83a76b0SSuyog Pawar     /**
2554*c83a76b0SSuyog Pawar      * transform_skip_rotation_enabled_flag
2555*c83a76b0SSuyog Pawar      */
2556*c83a76b0SSuyog Pawar     WORD8 i1_transform_skip_rotation_enabled_flag;
2557*c83a76b0SSuyog Pawar 
2558*c83a76b0SSuyog Pawar     /**
2559*c83a76b0SSuyog Pawar      * transform_skip_context_enabled_flag
2560*c83a76b0SSuyog Pawar      */
2561*c83a76b0SSuyog Pawar     WORD8 i1_transform_skip_context_enabled_flag;
2562*c83a76b0SSuyog Pawar 
2563*c83a76b0SSuyog Pawar     /**
2564*c83a76b0SSuyog Pawar      * implicit_rdpcm_enabled_flag
2565*c83a76b0SSuyog Pawar      */
2566*c83a76b0SSuyog Pawar     WORD8 i1_implicit_rdpcm_enabled_flag;
2567*c83a76b0SSuyog Pawar 
2568*c83a76b0SSuyog Pawar     /**
2569*c83a76b0SSuyog Pawar      * explicit_rdpcm_enabled_flag
2570*c83a76b0SSuyog Pawar      */
2571*c83a76b0SSuyog Pawar     WORD8 i1_explicit_rdpcm_enabled_flag;
2572*c83a76b0SSuyog Pawar 
2573*c83a76b0SSuyog Pawar     /**
2574*c83a76b0SSuyog Pawar      * extended_precision_processing_flag
2575*c83a76b0SSuyog Pawar      */
2576*c83a76b0SSuyog Pawar     WORD8 i1_extended_precision_processing_flag;
2577*c83a76b0SSuyog Pawar 
2578*c83a76b0SSuyog Pawar     /**
2579*c83a76b0SSuyog Pawar      * intra_smoothing_disabled_flag
2580*c83a76b0SSuyog Pawar      */
2581*c83a76b0SSuyog Pawar     WORD8   i1_intra_smoothing_disabled_flag;
2582*c83a76b0SSuyog Pawar 
2583*c83a76b0SSuyog Pawar     /**
2584*c83a76b0SSuyog Pawar      * high_precision_offsets_enabled_flag
2585*c83a76b0SSuyog Pawar      */
2586*c83a76b0SSuyog Pawar     WORD8   i1_use_high_precision_pred_wt;
2587*c83a76b0SSuyog Pawar 
2588*c83a76b0SSuyog Pawar     /**
2589*c83a76b0SSuyog Pawar      * fast_rice_adaptation_enabled_flag
2590*c83a76b0SSuyog Pawar      */
2591*c83a76b0SSuyog Pawar     WORD8   i1_fast_rice_adaptation_enabled_flag;
2592*c83a76b0SSuyog Pawar 
2593*c83a76b0SSuyog Pawar     /**
2594*c83a76b0SSuyog Pawar      * cabac_bypass_alignment_enabled_flag
2595*c83a76b0SSuyog Pawar      */
2596*c83a76b0SSuyog Pawar     WORD8   i1_align_cabac_before_bypass;
2597*c83a76b0SSuyog Pawar #endif
2598*c83a76b0SSuyog Pawar 
2599*c83a76b0SSuyog Pawar     /*
2600*c83a76b0SSuyog Pawar      * Flag indicating if the SPS is parsed
2601*c83a76b0SSuyog Pawar      */
2602*c83a76b0SSuyog Pawar     WORD8 i1_sps_valid;
2603*c83a76b0SSuyog Pawar 
2604*c83a76b0SSuyog Pawar }sps_t;
2605*c83a76b0SSuyog Pawar 
2606*c83a76b0SSuyog Pawar /**
2607*c83a76b0SSuyog Pawar  * Structure to hold PPS info
2608*c83a76b0SSuyog Pawar  */
2609*c83a76b0SSuyog Pawar typedef struct
2610*c83a76b0SSuyog Pawar {
2611*c83a76b0SSuyog Pawar     /**
2612*c83a76b0SSuyog Pawar      *  Pointer to scaling matrix
2613*c83a76b0SSuyog Pawar      */
2614*c83a76b0SSuyog Pawar     /*************************************************************************/
2615*c83a76b0SSuyog Pawar     /* Contanis the matrice in the following order in a 1D buffer            */
2616*c83a76b0SSuyog Pawar     /* Intra 4 x 4 Y, 4 x 4 U, 4 x 4 V                                       */
2617*c83a76b0SSuyog Pawar     /* Inter 4 x 4 Y, 4 x 4 U, 4 x 4 V                                       */
2618*c83a76b0SSuyog Pawar     /* Intra 8 x 8 Y, 8 x 8 U, 8 x 8 V                                       */
2619*c83a76b0SSuyog Pawar     /* Inter 8 x 8 Y, 8 x 8 U, 8 x 8 V                                       */
2620*c83a76b0SSuyog Pawar     /* Intra 16x16 Y, 16x16 U, 16x16 V                                       */
2621*c83a76b0SSuyog Pawar     /* Inter 16x16 Y, 16x16 U, 16x16 V                                       */
2622*c83a76b0SSuyog Pawar     /* Intra 32x32 Y                                                         */
2623*c83a76b0SSuyog Pawar     /* Inter 32x32 Y                                                         */
2624*c83a76b0SSuyog Pawar     /*************************************************************************/
2625*c83a76b0SSuyog Pawar     WORD16 *pi2_scaling_mat;
2626*c83a76b0SSuyog Pawar 
2627*c83a76b0SSuyog Pawar     /**
2628*c83a76b0SSuyog Pawar      *  Pointer to an array containing tile info such as position, width, height
2629*c83a76b0SSuyog Pawar      *  of each tile
2630*c83a76b0SSuyog Pawar      */
2631*c83a76b0SSuyog Pawar 
2632*c83a76b0SSuyog Pawar     /* column_width_minus1[ i ] and row_height_minus1[ i ] */
2633*c83a76b0SSuyog Pawar     tile_t *ps_tile;
2634*c83a76b0SSuyog Pawar 
2635*c83a76b0SSuyog Pawar     /**
2636*c83a76b0SSuyog Pawar      *  pic_parameter_set_id
2637*c83a76b0SSuyog Pawar      */
2638*c83a76b0SSuyog Pawar     WORD8 i1_pps_id;
2639*c83a76b0SSuyog Pawar 
2640*c83a76b0SSuyog Pawar     /**
2641*c83a76b0SSuyog Pawar      *  seq_parameter_set_id
2642*c83a76b0SSuyog Pawar      */
2643*c83a76b0SSuyog Pawar     WORD8 i1_sps_id;
2644*c83a76b0SSuyog Pawar 
2645*c83a76b0SSuyog Pawar     /**
2646*c83a76b0SSuyog Pawar      *  sign_data_hiding_flag
2647*c83a76b0SSuyog Pawar      */
2648*c83a76b0SSuyog Pawar     WORD8 i1_sign_data_hiding_flag;
2649*c83a76b0SSuyog Pawar 
2650*c83a76b0SSuyog Pawar     /**
2651*c83a76b0SSuyog Pawar      *  cabac_init_present_flag
2652*c83a76b0SSuyog Pawar      */
2653*c83a76b0SSuyog Pawar     WORD8 i1_cabac_init_present_flag;
2654*c83a76b0SSuyog Pawar 
2655*c83a76b0SSuyog Pawar     /**
2656*c83a76b0SSuyog Pawar      *  num_ref_idx_l0_default_active_minus1
2657*c83a76b0SSuyog Pawar      */
2658*c83a76b0SSuyog Pawar     WORD8 i1_num_ref_idx_l0_default_active;
2659*c83a76b0SSuyog Pawar 
2660*c83a76b0SSuyog Pawar     /**
2661*c83a76b0SSuyog Pawar      * num_ref_idx_l1_default_active_minus1
2662*c83a76b0SSuyog Pawar      */
2663*c83a76b0SSuyog Pawar     WORD8 i1_num_ref_idx_l1_default_active;
2664*c83a76b0SSuyog Pawar 
2665*c83a76b0SSuyog Pawar     /**
2666*c83a76b0SSuyog Pawar      *  pic_init_qp_minus26
2667*c83a76b0SSuyog Pawar      */
2668*c83a76b0SSuyog Pawar     WORD8 i1_pic_init_qp;
2669*c83a76b0SSuyog Pawar 
2670*c83a76b0SSuyog Pawar     /**
2671*c83a76b0SSuyog Pawar      *  constrained_intra_pred_flag
2672*c83a76b0SSuyog Pawar      */
2673*c83a76b0SSuyog Pawar     WORD8 i1_constrained_intra_pred_flag;
2674*c83a76b0SSuyog Pawar 
2675*c83a76b0SSuyog Pawar     /**
2676*c83a76b0SSuyog Pawar      *  transform_skip_enabled_flag
2677*c83a76b0SSuyog Pawar      */
2678*c83a76b0SSuyog Pawar     WORD8 i1_transform_skip_enabled_flag;
2679*c83a76b0SSuyog Pawar 
2680*c83a76b0SSuyog Pawar     /**
2681*c83a76b0SSuyog Pawar      *  cu_qp_delta_enabled_flag
2682*c83a76b0SSuyog Pawar      */
2683*c83a76b0SSuyog Pawar     WORD8 i1_cu_qp_delta_enabled_flag;
2684*c83a76b0SSuyog Pawar 
2685*c83a76b0SSuyog Pawar     /**
2686*c83a76b0SSuyog Pawar      * diff_cu_qp_delta_depth
2687*c83a76b0SSuyog Pawar      */
2688*c83a76b0SSuyog Pawar     WORD8 i1_diff_cu_qp_delta_depth;
2689*c83a76b0SSuyog Pawar 
2690*c83a76b0SSuyog Pawar     /**
2691*c83a76b0SSuyog Pawar      *  pic_cb_qp_offset
2692*c83a76b0SSuyog Pawar      */
2693*c83a76b0SSuyog Pawar     WORD8 i1_pic_cb_qp_offset;
2694*c83a76b0SSuyog Pawar 
2695*c83a76b0SSuyog Pawar     /**
2696*c83a76b0SSuyog Pawar      *  pic_cr_qp_offset
2697*c83a76b0SSuyog Pawar      */
2698*c83a76b0SSuyog Pawar     WORD8 i1_pic_cr_qp_offset;
2699*c83a76b0SSuyog Pawar 
2700*c83a76b0SSuyog Pawar     /**
2701*c83a76b0SSuyog Pawar      *  pic_slice_level_chroma_qp_offsets_present_flag
2702*c83a76b0SSuyog Pawar      */
2703*c83a76b0SSuyog Pawar     WORD8 i1_pic_slice_level_chroma_qp_offsets_present_flag;
2704*c83a76b0SSuyog Pawar 
2705*c83a76b0SSuyog Pawar     /**
2706*c83a76b0SSuyog Pawar      *  weighted_pred_flag
2707*c83a76b0SSuyog Pawar      */
2708*c83a76b0SSuyog Pawar     WORD8 i1_weighted_pred_flag;
2709*c83a76b0SSuyog Pawar 
2710*c83a76b0SSuyog Pawar     /**
2711*c83a76b0SSuyog Pawar      *  weighted_bipred_flag
2712*c83a76b0SSuyog Pawar      */
2713*c83a76b0SSuyog Pawar     WORD8 i1_weighted_bipred_flag;
2714*c83a76b0SSuyog Pawar 
2715*c83a76b0SSuyog Pawar     /**
2716*c83a76b0SSuyog Pawar      *  output_flag_present_flag
2717*c83a76b0SSuyog Pawar      */
2718*c83a76b0SSuyog Pawar     WORD8 i1_output_flag_present_flag;
2719*c83a76b0SSuyog Pawar 
2720*c83a76b0SSuyog Pawar     /**
2721*c83a76b0SSuyog Pawar      *  transquant_bypass_enable_flag
2722*c83a76b0SSuyog Pawar      */
2723*c83a76b0SSuyog Pawar     WORD8 i1_transquant_bypass_enable_flag;
2724*c83a76b0SSuyog Pawar 
2725*c83a76b0SSuyog Pawar     /**
2726*c83a76b0SSuyog Pawar      *  dependent_slice_enabled_flag
2727*c83a76b0SSuyog Pawar      */
2728*c83a76b0SSuyog Pawar     WORD8 i1_dependent_slice_enabled_flag;
2729*c83a76b0SSuyog Pawar 
2730*c83a76b0SSuyog Pawar     /**
2731*c83a76b0SSuyog Pawar      *  tiles_enabled_flag
2732*c83a76b0SSuyog Pawar      */
2733*c83a76b0SSuyog Pawar     WORD8 i1_tiles_enabled_flag;
2734*c83a76b0SSuyog Pawar 
2735*c83a76b0SSuyog Pawar     /**
2736*c83a76b0SSuyog Pawar      *  entropy_coding_sync_enabled_flag
2737*c83a76b0SSuyog Pawar      */
2738*c83a76b0SSuyog Pawar     WORD8 i1_entropy_coding_sync_enabled_flag;
2739*c83a76b0SSuyog Pawar 
2740*c83a76b0SSuyog Pawar     /**
2741*c83a76b0SSuyog Pawar      * entropy_slice_enabled_flag
2742*c83a76b0SSuyog Pawar      */
2743*c83a76b0SSuyog Pawar     WORD8 i1_entropy_slice_enabled_flag;
2744*c83a76b0SSuyog Pawar 
2745*c83a76b0SSuyog Pawar     /**
2746*c83a76b0SSuyog Pawar      *  num_tile_columns_minus1
2747*c83a76b0SSuyog Pawar      */
2748*c83a76b0SSuyog Pawar     WORD8 i1_num_tile_columns;
2749*c83a76b0SSuyog Pawar 
2750*c83a76b0SSuyog Pawar     /**
2751*c83a76b0SSuyog Pawar      *  num_tile_rows_minus1
2752*c83a76b0SSuyog Pawar      */
2753*c83a76b0SSuyog Pawar     WORD8 i1_num_tile_rows;
2754*c83a76b0SSuyog Pawar 
2755*c83a76b0SSuyog Pawar     /**
2756*c83a76b0SSuyog Pawar      *  uniform_spacing_flag
2757*c83a76b0SSuyog Pawar      */
2758*c83a76b0SSuyog Pawar     WORD8 i1_uniform_spacing_flag;
2759*c83a76b0SSuyog Pawar 
2760*c83a76b0SSuyog Pawar     /**
2761*c83a76b0SSuyog Pawar      *  loop_filter_across_tiles_enabled_flag
2762*c83a76b0SSuyog Pawar      */
2763*c83a76b0SSuyog Pawar     WORD8 i1_loop_filter_across_tiles_enabled_flag;
2764*c83a76b0SSuyog Pawar 
2765*c83a76b0SSuyog Pawar     /**
2766*c83a76b0SSuyog Pawar      *  loop_filter_across_slices_enabled_flag
2767*c83a76b0SSuyog Pawar      */
2768*c83a76b0SSuyog Pawar     WORD8 i1_loop_filter_across_slices_enabled_flag;
2769*c83a76b0SSuyog Pawar 
2770*c83a76b0SSuyog Pawar     /**
2771*c83a76b0SSuyog Pawar      *  deblocking_filter_control_present_flag
2772*c83a76b0SSuyog Pawar      */
2773*c83a76b0SSuyog Pawar     WORD8 i1_deblocking_filter_control_present_flag;
2774*c83a76b0SSuyog Pawar 
2775*c83a76b0SSuyog Pawar     /**
2776*c83a76b0SSuyog Pawar      *  deblocking_filter_override_enabled_flag
2777*c83a76b0SSuyog Pawar      */
2778*c83a76b0SSuyog Pawar     WORD8 i1_deblocking_filter_override_enabled_flag;
2779*c83a76b0SSuyog Pawar 
2780*c83a76b0SSuyog Pawar     /**
2781*c83a76b0SSuyog Pawar      *  pic_disable_deblocking_filter_flag
2782*c83a76b0SSuyog Pawar      */
2783*c83a76b0SSuyog Pawar     WORD8 i1_pic_disable_deblocking_filter_flag;
2784*c83a76b0SSuyog Pawar 
2785*c83a76b0SSuyog Pawar     /**
2786*c83a76b0SSuyog Pawar      *  beta_offset_div2
2787*c83a76b0SSuyog Pawar      */
2788*c83a76b0SSuyog Pawar     WORD8 i1_beta_offset_div2;
2789*c83a76b0SSuyog Pawar 
2790*c83a76b0SSuyog Pawar     /**
2791*c83a76b0SSuyog Pawar      *  tc_offset_div2
2792*c83a76b0SSuyog Pawar      */
2793*c83a76b0SSuyog Pawar     WORD8 i1_tc_offset_div2;
2794*c83a76b0SSuyog Pawar 
2795*c83a76b0SSuyog Pawar     /**
2796*c83a76b0SSuyog Pawar      *  pps_scaling_list_data_present_flag
2797*c83a76b0SSuyog Pawar      */
2798*c83a76b0SSuyog Pawar     WORD8 i1_pps_scaling_list_data_present_flag;
2799*c83a76b0SSuyog Pawar 
2800*c83a76b0SSuyog Pawar     /**
2801*c83a76b0SSuyog Pawar      * lists_modification_present_flag
2802*c83a76b0SSuyog Pawar      */
2803*c83a76b0SSuyog Pawar     WORD8 i1_lists_modification_present_flag;
2804*c83a76b0SSuyog Pawar 
2805*c83a76b0SSuyog Pawar     /**
2806*c83a76b0SSuyog Pawar      * num_extra_slice_header_bits
2807*c83a76b0SSuyog Pawar      */
2808*c83a76b0SSuyog Pawar     WORD8 i1_num_extra_slice_header_bits;
2809*c83a76b0SSuyog Pawar 
2810*c83a76b0SSuyog Pawar     /**
2811*c83a76b0SSuyog Pawar      *  log2_parallel_merge_level_minus2
2812*c83a76b0SSuyog Pawar      */
2813*c83a76b0SSuyog Pawar     WORD8 i1_log2_parallel_merge_level;
2814*c83a76b0SSuyog Pawar 
2815*c83a76b0SSuyog Pawar     /**
2816*c83a76b0SSuyog Pawar      *  slice_header_extension_present_flag
2817*c83a76b0SSuyog Pawar      */
2818*c83a76b0SSuyog Pawar     WORD8 i1_slice_header_extension_present_flag;
2819*c83a76b0SSuyog Pawar 
2820*c83a76b0SSuyog Pawar     /**
2821*c83a76b0SSuyog Pawar      *  slice_extension_present_flag
2822*c83a76b0SSuyog Pawar      */
2823*c83a76b0SSuyog Pawar     WORD8 i1_slice_extension_present_flag;
2824*c83a76b0SSuyog Pawar 
2825*c83a76b0SSuyog Pawar     /**
2826*c83a76b0SSuyog Pawar      *  scaling_list_dc_coef_minus8
2827*c83a76b0SSuyog Pawar      */
2828*c83a76b0SSuyog Pawar     /*************************************************************************/
2829*c83a76b0SSuyog Pawar     /* DC value of the scaling list                                          */
2830*c83a76b0SSuyog Pawar     /* Only 16 x 16 and 32 x 32 scaling lists have valid entries.            */
2831*c83a76b0SSuyog Pawar     /* Entries stored for all sizes for uniformity.                          */
2832*c83a76b0SSuyog Pawar     /* Remaining will be initialized to default values if used               */
2833*c83a76b0SSuyog Pawar     /*************************************************************************/
2834*c83a76b0SSuyog Pawar     UWORD8 au1_scaling_list_dc_coef[TOTAL_SCALE_MAT_COUNT];
2835*c83a76b0SSuyog Pawar 
2836*c83a76b0SSuyog Pawar     /**
2837*c83a76b0SSuyog Pawar      * Log2MinCuQpDeltaSize
2838*c83a76b0SSuyog Pawar      */
2839*c83a76b0SSuyog Pawar     WORD8 i1_log2_min_cu_qp_delta_size;
2840*c83a76b0SSuyog Pawar 
2841*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE
2842*c83a76b0SSuyog Pawar     /**
2843*c83a76b0SSuyog Pawar      * log2_max_transform_skip_block_size_minus2
2844*c83a76b0SSuyog Pawar      */
2845*c83a76b0SSuyog Pawar     WORD32 i4_log2_max_transform_skip_block_size_minus2;
2846*c83a76b0SSuyog Pawar 
2847*c83a76b0SSuyog Pawar     /**
2848*c83a76b0SSuyog Pawar      * cross_component_prediction_enabled_flag
2849*c83a76b0SSuyog Pawar      */
2850*c83a76b0SSuyog Pawar     WORD8 i1_cross_component_prediction_enabled_flag;
2851*c83a76b0SSuyog Pawar 
2852*c83a76b0SSuyog Pawar     /**
2853*c83a76b0SSuyog Pawar      * chroma_qp_offset_list_enabled_flag
2854*c83a76b0SSuyog Pawar      */
2855*c83a76b0SSuyog Pawar     WORD8 i1_chroma_qp_offset_list_enabled_flag;
2856*c83a76b0SSuyog Pawar 
2857*c83a76b0SSuyog Pawar     /**
2858*c83a76b0SSuyog Pawar      * diff_cu_chroma_qp_offset_depth
2859*c83a76b0SSuyog Pawar      */
2860*c83a76b0SSuyog Pawar     WORD32 i4_diff_cu_chroma_qp_offset_depth;
2861*c83a76b0SSuyog Pawar 
2862*c83a76b0SSuyog Pawar     /**
2863*c83a76b0SSuyog Pawar      * chroma_qp_offset_list_len_minus1
2864*c83a76b0SSuyog Pawar      */
2865*c83a76b0SSuyog Pawar     WORD32 i4_chroma_qp_offset_list_len_minus1;
2866*c83a76b0SSuyog Pawar 
2867*c83a76b0SSuyog Pawar     /**
2868*c83a76b0SSuyog Pawar      * cb_qp_offset_list[]
2869*c83a76b0SSuyog Pawar      */
2870*c83a76b0SSuyog Pawar     WORD32 i4_cb_qp_offset_list[6];
2871*c83a76b0SSuyog Pawar 
2872*c83a76b0SSuyog Pawar     /**
2873*c83a76b0SSuyog Pawar      * cr_qp_offset_list[]
2874*c83a76b0SSuyog Pawar      */
2875*c83a76b0SSuyog Pawar     WORD32 i4_cr_qp_offset_list[6];
2876*c83a76b0SSuyog Pawar 
2877*c83a76b0SSuyog Pawar     /**
2878*c83a76b0SSuyog Pawar      * log2_sao_offset_scale_luma
2879*c83a76b0SSuyog Pawar      */
2880*c83a76b0SSuyog Pawar     WORD8 i1_log2_sao_ofst_scale_luma;
2881*c83a76b0SSuyog Pawar 
2882*c83a76b0SSuyog Pawar     /**
2883*c83a76b0SSuyog Pawar      * log2_sao_offset_scale_chroma
2884*c83a76b0SSuyog Pawar      */
2885*c83a76b0SSuyog Pawar     WORD8 i1_log2_sao_ofst_scale_chroma;
2886*c83a76b0SSuyog Pawar 
2887*c83a76b0SSuyog Pawar #endif
2888*c83a76b0SSuyog Pawar 
2889*c83a76b0SSuyog Pawar     /*
2890*c83a76b0SSuyog Pawar      * Flag indicating if the PPS is parsed
2891*c83a76b0SSuyog Pawar      */
2892*c83a76b0SSuyog Pawar     WORD8 i1_pps_valid;
2893*c83a76b0SSuyog Pawar 
2894*c83a76b0SSuyog Pawar }pps_t;
2895*c83a76b0SSuyog Pawar 
2896*c83a76b0SSuyog Pawar 
2897*c83a76b0SSuyog Pawar /**
2898*c83a76b0SSuyog Pawar  * Structure to hold slice header info
2899*c83a76b0SSuyog Pawar  */
2900*c83a76b0SSuyog Pawar typedef struct
2901*c83a76b0SSuyog Pawar {
2902*c83a76b0SSuyog Pawar     /**
2903*c83a76b0SSuyog Pawar      *  entry_point_offset[ i ]
2904*c83a76b0SSuyog Pawar      */
2905*c83a76b0SSuyog Pawar     WORD32 *pi4_entry_point_offset;
2906*c83a76b0SSuyog Pawar 
2907*c83a76b0SSuyog Pawar     /**
2908*c83a76b0SSuyog Pawar      *  poc_lsb_lt[ i ]
2909*c83a76b0SSuyog Pawar      */
2910*c83a76b0SSuyog Pawar     WORD32 ai4_poc_lsb_lt[MAX_DPB_SIZE];
2911*c83a76b0SSuyog Pawar 
2912*c83a76b0SSuyog Pawar     /**
2913*c83a76b0SSuyog Pawar      *  slice_header_extension_length
2914*c83a76b0SSuyog Pawar      */
2915*c83a76b0SSuyog Pawar     WORD16 i2_slice_header_extension_length;
2916*c83a76b0SSuyog Pawar 
2917*c83a76b0SSuyog Pawar     /**
2918*c83a76b0SSuyog Pawar      *  slice_address
2919*c83a76b0SSuyog Pawar      */
2920*c83a76b0SSuyog Pawar     WORD16 i2_slice_address;
2921*c83a76b0SSuyog Pawar 
2922*c83a76b0SSuyog Pawar     /**
2923*c83a76b0SSuyog Pawar      *  first_slice_in_pic_flag
2924*c83a76b0SSuyog Pawar      */
2925*c83a76b0SSuyog Pawar     WORD8 i1_first_slice_in_pic_flag;
2926*c83a76b0SSuyog Pawar 
2927*c83a76b0SSuyog Pawar     /* PPS id */
2928*c83a76b0SSuyog Pawar     WORD8 i1_pps_id;
2929*c83a76b0SSuyog Pawar     /**
2930*c83a76b0SSuyog Pawar      *  no_output_of_prior_pics_flag
2931*c83a76b0SSuyog Pawar      */
2932*c83a76b0SSuyog Pawar     WORD8 i1_no_output_of_prior_pics_flag;
2933*c83a76b0SSuyog Pawar 
2934*c83a76b0SSuyog Pawar     /**
2935*c83a76b0SSuyog Pawar      *  dependent_slice_flag
2936*c83a76b0SSuyog Pawar      */
2937*c83a76b0SSuyog Pawar     WORD8 i1_dependent_slice_flag;
2938*c83a76b0SSuyog Pawar 
2939*c83a76b0SSuyog Pawar     /**
2940*c83a76b0SSuyog Pawar      *  slice_type
2941*c83a76b0SSuyog Pawar      */
2942*c83a76b0SSuyog Pawar     WORD8 i1_slice_type;
2943*c83a76b0SSuyog Pawar 
2944*c83a76b0SSuyog Pawar     /**
2945*c83a76b0SSuyog Pawar      *  pic_output_flag
2946*c83a76b0SSuyog Pawar      */
2947*c83a76b0SSuyog Pawar     WORD8 i1_pic_output_flag;
2948*c83a76b0SSuyog Pawar 
2949*c83a76b0SSuyog Pawar     /**
2950*c83a76b0SSuyog Pawar      *  colour_plane_id
2951*c83a76b0SSuyog Pawar      */
2952*c83a76b0SSuyog Pawar     WORD8 i1_colour_plane_id;
2953*c83a76b0SSuyog Pawar 
2954*c83a76b0SSuyog Pawar     /**
2955*c83a76b0SSuyog Pawar      *  pic_order_cnt_lsb
2956*c83a76b0SSuyog Pawar      */
2957*c83a76b0SSuyog Pawar     WORD32 i4_pic_order_cnt_lsb;
2958*c83a76b0SSuyog Pawar 
2959*c83a76b0SSuyog Pawar     /**
2960*c83a76b0SSuyog Pawar      *  absolute pic_order_cnt
2961*c83a76b0SSuyog Pawar      */
2962*c83a76b0SSuyog Pawar     WORD32 i4_abs_pic_order_cnt;
2963*c83a76b0SSuyog Pawar 
2964*c83a76b0SSuyog Pawar     /**
2965*c83a76b0SSuyog Pawar      *  short_term_ref_pic_set_sps_flag
2966*c83a76b0SSuyog Pawar      */
2967*c83a76b0SSuyog Pawar     WORD8 i1_short_term_ref_pic_set_sps_flag;
2968*c83a76b0SSuyog Pawar 
2969*c83a76b0SSuyog Pawar     /**
2970*c83a76b0SSuyog Pawar      *  short_term_ref_pic_set_idx
2971*c83a76b0SSuyog Pawar      */
2972*c83a76b0SSuyog Pawar     WORD8 i1_short_term_ref_pic_set_idx;
2973*c83a76b0SSuyog Pawar 
2974*c83a76b0SSuyog Pawar     /**
2975*c83a76b0SSuyog Pawar      *  num_long_term_sps
2976*c83a76b0SSuyog Pawar      */
2977*c83a76b0SSuyog Pawar     WORD8 i1_num_long_term_sps;
2978*c83a76b0SSuyog Pawar 
2979*c83a76b0SSuyog Pawar     /**
2980*c83a76b0SSuyog Pawar      *  num_long_term_pics
2981*c83a76b0SSuyog Pawar      */
2982*c83a76b0SSuyog Pawar     WORD8 i1_num_long_term_pics;
2983*c83a76b0SSuyog Pawar 
2984*c83a76b0SSuyog Pawar     /**
2985*c83a76b0SSuyog Pawar      *  lt_idx_sps[ i ]
2986*c83a76b0SSuyog Pawar      */
2987*c83a76b0SSuyog Pawar     WORD8 ai1_lt_idx_sps[MAX_DPB_SIZE];
2988*c83a76b0SSuyog Pawar 
2989*c83a76b0SSuyog Pawar     /**
2990*c83a76b0SSuyog Pawar      *  used_by_curr_pic_lt_flag[ i ]
2991*c83a76b0SSuyog Pawar      */
2992*c83a76b0SSuyog Pawar     WORD8 ai1_used_by_curr_pic_lt_flag[MAX_DPB_SIZE];
2993*c83a76b0SSuyog Pawar 
2994*c83a76b0SSuyog Pawar     /**
2995*c83a76b0SSuyog Pawar      *  delta_poc_msb_present_flag[ i ]
2996*c83a76b0SSuyog Pawar      */
2997*c83a76b0SSuyog Pawar     WORD8 ai1_delta_poc_msb_present_flag[MAX_DPB_SIZE];
2998*c83a76b0SSuyog Pawar 
2999*c83a76b0SSuyog Pawar     /**
3000*c83a76b0SSuyog Pawar      *  delta_poc_msb_cycle_lt[ i ]
3001*c83a76b0SSuyog Pawar      */
3002*c83a76b0SSuyog Pawar     WORD8 ai1_delta_poc_msb_cycle_lt[MAX_DPB_SIZE];
3003*c83a76b0SSuyog Pawar 
3004*c83a76b0SSuyog Pawar     /**
3005*c83a76b0SSuyog Pawar      *  slice_sao_luma_flag
3006*c83a76b0SSuyog Pawar      */
3007*c83a76b0SSuyog Pawar     WORD8 i1_slice_sao_luma_flag;
3008*c83a76b0SSuyog Pawar 
3009*c83a76b0SSuyog Pawar     /**
3010*c83a76b0SSuyog Pawar      *  slice_sao_chroma_flag
3011*c83a76b0SSuyog Pawar      */
3012*c83a76b0SSuyog Pawar     WORD8 i1_slice_sao_chroma_flag;
3013*c83a76b0SSuyog Pawar 
3014*c83a76b0SSuyog Pawar     /**
3015*c83a76b0SSuyog Pawar      *  slice_temporal_mvp_enable_flag
3016*c83a76b0SSuyog Pawar      */
3017*c83a76b0SSuyog Pawar     WORD8 i1_slice_temporal_mvp_enable_flag;
3018*c83a76b0SSuyog Pawar 
3019*c83a76b0SSuyog Pawar     /**
3020*c83a76b0SSuyog Pawar      *  num_ref_idx_active_override_flag
3021*c83a76b0SSuyog Pawar      */
3022*c83a76b0SSuyog Pawar     WORD8 i1_num_ref_idx_active_override_flag;
3023*c83a76b0SSuyog Pawar 
3024*c83a76b0SSuyog Pawar     /**
3025*c83a76b0SSuyog Pawar      *  num_ref_idx_l0_active_minus1
3026*c83a76b0SSuyog Pawar      */
3027*c83a76b0SSuyog Pawar     WORD8 i1_num_ref_idx_l0_active;
3028*c83a76b0SSuyog Pawar 
3029*c83a76b0SSuyog Pawar     /**
3030*c83a76b0SSuyog Pawar      *  num_ref_idx_l1_active_minus1
3031*c83a76b0SSuyog Pawar      */
3032*c83a76b0SSuyog Pawar     WORD8 i1_num_ref_idx_l1_active;
3033*c83a76b0SSuyog Pawar 
3034*c83a76b0SSuyog Pawar     /**
3035*c83a76b0SSuyog Pawar      *  mvd_l1_zero_flag
3036*c83a76b0SSuyog Pawar      */
3037*c83a76b0SSuyog Pawar     WORD8 i1_mvd_l1_zero_flag;
3038*c83a76b0SSuyog Pawar 
3039*c83a76b0SSuyog Pawar     /**
3040*c83a76b0SSuyog Pawar      *  cabac_init_flag
3041*c83a76b0SSuyog Pawar      */
3042*c83a76b0SSuyog Pawar     WORD8 i1_cabac_init_flag;
3043*c83a76b0SSuyog Pawar 
3044*c83a76b0SSuyog Pawar     /**
3045*c83a76b0SSuyog Pawar      *  collocated_from_l0_flag
3046*c83a76b0SSuyog Pawar      */
3047*c83a76b0SSuyog Pawar     WORD8 i1_collocated_from_l0_flag;
3048*c83a76b0SSuyog Pawar 
3049*c83a76b0SSuyog Pawar     /**
3050*c83a76b0SSuyog Pawar      *  collocated_ref_idx
3051*c83a76b0SSuyog Pawar      */
3052*c83a76b0SSuyog Pawar     WORD8 i1_collocated_ref_idx;
3053*c83a76b0SSuyog Pawar 
3054*c83a76b0SSuyog Pawar     /**
3055*c83a76b0SSuyog Pawar      * five_minus_max_num_merge_cand
3056*c83a76b0SSuyog Pawar      */
3057*c83a76b0SSuyog Pawar     WORD8 i1_max_num_merge_cand;
3058*c83a76b0SSuyog Pawar 
3059*c83a76b0SSuyog Pawar     /**
3060*c83a76b0SSuyog Pawar      *  slice_qp_delta
3061*c83a76b0SSuyog Pawar      */
3062*c83a76b0SSuyog Pawar     WORD8 i1_slice_qp_delta;
3063*c83a76b0SSuyog Pawar 
3064*c83a76b0SSuyog Pawar     /**
3065*c83a76b0SSuyog Pawar      *  slice_cb_qp_offset
3066*c83a76b0SSuyog Pawar      */
3067*c83a76b0SSuyog Pawar     WORD8 i1_slice_cb_qp_offset;
3068*c83a76b0SSuyog Pawar 
3069*c83a76b0SSuyog Pawar     /**
3070*c83a76b0SSuyog Pawar      *  slice_cr_qp_offset
3071*c83a76b0SSuyog Pawar      */
3072*c83a76b0SSuyog Pawar     WORD8 i1_slice_cr_qp_offset;
3073*c83a76b0SSuyog Pawar 
3074*c83a76b0SSuyog Pawar     /**
3075*c83a76b0SSuyog Pawar      *  deblocking_filter_override_flag
3076*c83a76b0SSuyog Pawar      */
3077*c83a76b0SSuyog Pawar     WORD8 i1_deblocking_filter_override_flag;
3078*c83a76b0SSuyog Pawar 
3079*c83a76b0SSuyog Pawar     /**
3080*c83a76b0SSuyog Pawar      *  slice_disable_deblocking_filter_flag
3081*c83a76b0SSuyog Pawar      */
3082*c83a76b0SSuyog Pawar     WORD8 i1_slice_disable_deblocking_filter_flag;
3083*c83a76b0SSuyog Pawar 
3084*c83a76b0SSuyog Pawar     /**
3085*c83a76b0SSuyog Pawar      *  beta_offset_div2
3086*c83a76b0SSuyog Pawar      */
3087*c83a76b0SSuyog Pawar     WORD8 i1_beta_offset_div2;
3088*c83a76b0SSuyog Pawar 
3089*c83a76b0SSuyog Pawar     /**
3090*c83a76b0SSuyog Pawar      *  tc_offset_div2
3091*c83a76b0SSuyog Pawar      */
3092*c83a76b0SSuyog Pawar     WORD8 i1_tc_offset_div2;
3093*c83a76b0SSuyog Pawar 
3094*c83a76b0SSuyog Pawar     /**
3095*c83a76b0SSuyog Pawar      *  slice_loop_filter_across_slices_enabled_flag
3096*c83a76b0SSuyog Pawar      */
3097*c83a76b0SSuyog Pawar     WORD8 i1_slice_loop_filter_across_slices_enabled_flag;
3098*c83a76b0SSuyog Pawar 
3099*c83a76b0SSuyog Pawar     /**
3100*c83a76b0SSuyog Pawar      *  NUmber of entry point offsets
3101*c83a76b0SSuyog Pawar      */
3102*c83a76b0SSuyog Pawar     WORD32 i4_num_entry_point_offsets;
3103*c83a76b0SSuyog Pawar 
3104*c83a76b0SSuyog Pawar     /**
3105*c83a76b0SSuyog Pawar      *  offset_len_minus1
3106*c83a76b0SSuyog Pawar      */
3107*c83a76b0SSuyog Pawar     WORD8 i1_offset_len;
3108*c83a76b0SSuyog Pawar 
3109*c83a76b0SSuyog Pawar     /**
3110*c83a76b0SSuyog Pawar      *  Entry point offsets
3111*c83a76b0SSuyog Pawar      */
3112*c83a76b0SSuyog Pawar     WORD32 *pu4_entry_point_offset;
3113*c83a76b0SSuyog Pawar 
3114*c83a76b0SSuyog Pawar     /**
3115*c83a76b0SSuyog Pawar      * Short term reference picture set
3116*c83a76b0SSuyog Pawar      */
3117*c83a76b0SSuyog Pawar     stref_picset_t s_stref_picset;
3118*c83a76b0SSuyog Pawar 
3119*c83a76b0SSuyog Pawar     /**
3120*c83a76b0SSuyog Pawar      *  Weight and offset info for Weighted prediction
3121*c83a76b0SSuyog Pawar      */
3122*c83a76b0SSuyog Pawar     pred_wt_ofst_t s_wt_ofst;
3123*c83a76b0SSuyog Pawar 
3124*c83a76b0SSuyog Pawar     /**
3125*c83a76b0SSuyog Pawar      *  Reference prediction list modification
3126*c83a76b0SSuyog Pawar      */
3127*c83a76b0SSuyog Pawar     rplm_t s_rplm;
3128*c83a76b0SSuyog Pawar 
3129*c83a76b0SSuyog Pawar     /**
3130*c83a76b0SSuyog Pawar      *  First CTB' X pos : slice_address % i2_pic_wd_in_ctb
3131*c83a76b0SSuyog Pawar      */
3132*c83a76b0SSuyog Pawar     WORD16 i2_ctb_x;
3133*c83a76b0SSuyog Pawar 
3134*c83a76b0SSuyog Pawar     /**
3135*c83a76b0SSuyog Pawar      *  First CTB' Y pos : slice_address / i2_pic_wd_in_ctb
3136*c83a76b0SSuyog Pawar      */
3137*c83a76b0SSuyog Pawar     WORD16 i2_ctb_y;
3138*c83a76b0SSuyog Pawar 
3139*c83a76b0SSuyog Pawar     /**
3140*c83a76b0SSuyog Pawar      * L0 Reference pic lists
3141*c83a76b0SSuyog Pawar      */
3142*c83a76b0SSuyog Pawar     ref_list_t as_ref_pic_list0[MAX_DPB_SIZE];
3143*c83a76b0SSuyog Pawar 
3144*c83a76b0SSuyog Pawar     /**
3145*c83a76b0SSuyog Pawar      * L1 Reference pic lists
3146*c83a76b0SSuyog Pawar      */
3147*c83a76b0SSuyog Pawar     ref_list_t as_ref_pic_list1[MAX_DPB_SIZE];
3148*c83a76b0SSuyog Pawar 
3149*c83a76b0SSuyog Pawar     /**
3150*c83a76b0SSuyog Pawar      * NAL unit type of the slice
3151*c83a76b0SSuyog Pawar      */
3152*c83a76b0SSuyog Pawar     WORD8 i1_nal_unit_type;
3153*c83a76b0SSuyog Pawar 
3154*c83a76b0SSuyog Pawar     /**
3155*c83a76b0SSuyog Pawar      * Low delay check flag
3156*c83a76b0SSuyog Pawar      */
3157*c83a76b0SSuyog Pawar     WORD8 i1_low_delay_flag;
3158*c83a76b0SSuyog Pawar 
3159*c83a76b0SSuyog Pawar     /**
3160*c83a76b0SSuyog Pawar      * The last independent slice's start ctb_x
3161*c83a76b0SSuyog Pawar      * If the current slice is independent, it is the same as the current CTBs ctb_x
3162*c83a76b0SSuyog Pawar      */
3163*c83a76b0SSuyog Pawar     WORD16 i2_independent_ctb_x;
3164*c83a76b0SSuyog Pawar 
3165*c83a76b0SSuyog Pawar     /**
3166*c83a76b0SSuyog Pawar      * The last independent slice's start ctb_y
3167*c83a76b0SSuyog Pawar      * If the current slice is independent, it is the same as the current CTBs ctb_y
3168*c83a76b0SSuyog Pawar      */
3169*c83a76b0SSuyog Pawar     WORD16 i2_independent_ctb_y;
3170*c83a76b0SSuyog Pawar 
3171*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE
3172*c83a76b0SSuyog Pawar     /**
3173*c83a76b0SSuyog Pawar      * cu_chroma_qp_offset_enabled_flag
3174*c83a76b0SSuyog Pawar      */
3175*c83a76b0SSuyog Pawar     WORD8 i1_cu_chroma_qp_offset_enabled_flag;
3176*c83a76b0SSuyog Pawar #endif
3177*c83a76b0SSuyog Pawar 
3178*c83a76b0SSuyog Pawar     UWORD8 u1_parse_data_init_done;
3179*c83a76b0SSuyog Pawar 
3180*c83a76b0SSuyog Pawar     /**
3181*c83a76b0SSuyog Pawar      * Temporal ID in NAL header
3182*c83a76b0SSuyog Pawar      */
3183*c83a76b0SSuyog Pawar     WORD32 u4_nuh_temporal_id;
3184*c83a76b0SSuyog Pawar }slice_header_t;
3185*c83a76b0SSuyog Pawar 
3186*c83a76b0SSuyog Pawar 
3187*c83a76b0SSuyog Pawar 
3188*c83a76b0SSuyog Pawar 
3189*c83a76b0SSuyog Pawar 
3190*c83a76b0SSuyog Pawar 
3191*c83a76b0SSuyog Pawar 
3192*c83a76b0SSuyog Pawar 
3193*c83a76b0SSuyog Pawar #endif /* _IHEVC_STRUCTS_H_ */
3194