1/*
2 * Copyright (c) 2010, Texas Instruments Incorporated
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * *  Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 *
12 * *  Redistributions in binary form must reproduce the above copyright
13 *    notice, this list of conditions and the following disclaimer in the
14 *    documentation and/or other materials provided with the distribution.
15 *
16 * *  Neither the name of Texas Instruments Incorporated nor the names of
17 *    its contributors may be used to endorse or promote products derived
18 *    from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33/* -------------------------------------------------------------------------- */
34/*
35 * @file:Omx_ti_video.h
36 * This header defines the structures specific to the param or config indices of Openmax Video Component.
37 *
38 * @path:
39 * \WTSD_DucatiMMSW\ omx\omx_il_1_x\omx_core\
40
41 * -------------------------------------------------------------------------- */
42
43/* =========================================================================
44 *!
45 *! Revision History
46 *! =====================================================================
47 *! 24-Dec-2008  Navneet         navneet@ti.com          Initial Version
48 *! 14-Jul-2009  Radha Purnima   radhapurnima@ti.com
49 *! 25-Aug-2009  Radha Purnima   radhapurnima@ti.com
50 *! 16-May-2009  Shivaraj Shetty shettyshivaraj@ti.com
51 * =========================================================================*/
52
53
54#ifndef OMX_TI_VIDEO_H
55#define OMX_TI_VIDEO_H
56#define H264ENC_MAXNUMSLCGPS 2
57#define OMXH264E_MAX_SLICE_SUPPORTED 64
58#include <OMX_Core.h>
59
60/**
61 *	@brief	mode selection for the data that is given to the Codec
62 */
63
64typedef enum OMX_VIDEO_DATASYNCMODETYPE {
65    OMX_Video_FixedLength,	//!<  Interms of multiples of 4K
66    OMX_Video_SliceMode,		//!<  Slice mode
67    OMX_Video_NumMBRows,	//!< Number of rows, each row is 16 lines of video
68    OMX_Video_EntireFrame  	//!< Processing of entire frame data
69} OMX_VIDEO_DATASYNCMODETYPE;
70
71
72/* ========================================================================== */
73/*!
74 @brief OMX_TI_VIDEO_PARAM_DATAMODE  :to configure how the input and output data is fed to the Codec
75 @param  nPortIndex  to specify the index of the port
76 @param  eDataMode 	to specify the data mode
77 						@sa  OMX_VIDEO_DATASYNCMODETYPE
78 @param  nNumDataUnits	 to specify the number of data units (where units are of type defined by eDataMode)
79 */
80/* ==========================================================================*/
81typedef struct OMX_VIDEO_PARAM_DATASYNCMODETYPE{
82	OMX_U32 nSize;
83	OMX_VERSIONTYPE nVersion;
84	OMX_U32 nPortIndex;
85	OMX_VIDEO_DATASYNCMODETYPE eDataMode;
86	OMX_U32 nNumDataUnits;
87} OMX_VIDEO_PARAM_DATASYNCMODETYPE;
88
89/**
90 *	@brief	Aspect Ratio type selection for the encoded bit stream
91 */
92typedef enum OMX_VIDEO_ASPECTRATIOTYPE{
93	OMX_Video_AR_Unspecified,  //!< Unspecified aspect ratio
94	OMX_Video_AR_Square ,  //!< 1:1 (square) aspect ratio
95	OMX_Video_AR_12_11  ,  //!<  12:11  aspect ratio
96	OMX_Video_AR_10_11  ,  //!<  10:11  aspect ratio
97	OMX_Video_AR_16_11  ,  //!<  16:11  aspect ratio
98	OMX_Video_AR_40_33  ,  //!<  40:33  aspect ratio
99	OMX_Video_AR_24_11  ,  //!<  24:11  aspect ratio
100	OMX_Video_AR_20_11  ,  //!<  20:11  aspect ratio
101	OMX_Video_AR_32_11  ,  //!<  32:11  aspect ratio
102	OMX_Video_AR_80_33  ,  //!<  80:33  aspect ratio
103	OMX_Video_AR_18_11  ,  //!<  18:11  aspect ratio
104	OMX_Video_AR_15_15  ,  //!<  15:15  aspect ratio
105	OMX_Video_AR_64_33  ,  //!<  64:33  aspect ratio
106	OMX_Video_AR_160_99 ,  //!<  160:99 aspect ratio
107	OMX_Video_AR_4_3    ,  //!<  4:3    aspect ratio
108	OMX_Video_AR_3_2    ,  //!<  3:2    aspect ratio
109	OMX_Video_AR_2_1    ,  //!<  2:1    aspect ratio
110	OMX_Video_AR_Extended = 255,       //!<  Extended aspect ratio
111   	OMX_Video_AR_Extended_MAX =  0X7FFFFFFF
112}OMX_VIDEO_ASPECTRATIOTYPE;
113
114
115/* ========================================================================== */
116/*!
117 @brief OMX_TI_VIDEO_PARAM_VUI_SELECT  :to select the VUI Settings
118 @param  bAspectRatioPresent flag to indicate the insertion of aspect ratio information in VUI part of bit-stream
119 @param  ePixelAspectRatio to specify the Aspect Ratio
120 @param  bFullRange to indicate whether pixel value range is specified as full range or not (0 to 255)
121*/
122/* ==========================================================================*/
123typedef struct OMX_VIDEO_PARAM_VUIINFOTYPE {
124	OMX_U32	 nSize;
125	OMX_VERSIONTYPE nVersion;
126	OMX_U32	 nPortIndex;
127	OMX_BOOL bAspectRatioPresent;
128	OMX_VIDEO_ASPECTRATIOTYPE ePixelAspectRatio;
129	OMX_BOOL bFullRange;
130}OMX_VIDEO_PARAM_VUIINFOTYPE;
131
132/* ========================================================================== */
133/*!
134 @brief OMX_VIDEO_CONFIG_PIXELINFOTYPE  :to specify the information related to the input pixel data (aspect ratio & range) to the Codec
135 										so that codec can incorporate this info in the coded bit stream
136 @param  nWidth 	 to specify the Aspect ratio: width of the pixel
137 @param  nHeight 	 to specify the Aspect ratio: height of the pixel
138 */
139/* ==========================================================================*/
140typedef struct OMX_VIDEO_CONFIG_PIXELINFOTYPE  {
141	OMX_U32 nSize;
142	OMX_VERSIONTYPE nVersion;
143	OMX_U32 nPortIndex;
144	OMX_U32 nWidth;
145	OMX_U32 nHeight;
146} OMX_VIDEO_CONFIG_PIXELINFOTYPE;
147
148/* ========================================================================== */
149/*!
150 @brief OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE : to configure what NALU  need to send along the frames of different types (Intra,IDR...etc)
151 @param  nStartofSequence 	to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the Start of sequence frame
152 @param  nEndofSequence	 	to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the End of sequence frame
153 @param  nIDR 				to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the IDR frame
154 @param  nIntraPicture	  		to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the Intra frame
155 @param  nNonIntraPicture	  	to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the Non Intra frame
156
157Bit Position:   13|       12|      11|           10|      9|    8|    7|   6|      5|         4|              3|              2|              1|          0
158NALU TYPE:  SPS_VUI|FILLER|EOSTREAM|EOSEQ|AUD|PPS|SPS|SEI|IDR_SLICE|SLICE_DP_C|SLICE_DP_B|SLICE_DP_A|SLICE|UNSPECIFIED \n
159*/
160/* ==========================================================================*/
161typedef struct OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE {
162	OMX_U32	 nSize;
163	OMX_VERSIONTYPE nVersion;
164	OMX_U32	 	nPortIndex;
165	OMX_U32 	nStartofSequence;
166	OMX_U32 	nEndofSequence;
167	OMX_U32 	nIDR;
168	OMX_U32 	nIntraPicture;
169	OMX_U32 	nNonIntraPicture;
170}OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE;
171
172
173/* ========================================================================== */
174/*!
175 @brief OMX_VIDEO_CONFIG_MESEARCHRANGETYPE : to configure Motion Estimation Parameters
176 @param  eMVAccuracy 		to specify the Motion Vector Accuracy
177 							@sa OMX_VIDEO_MOTIONVECTORTYPE
178 @param  sHorSearchRangeP	 	to Specify the Horizontal Search range for P Frame
179 @param  sVerSearchRangeP		to Specify the Vertical Search range for P Frame
180 @param  sHorSearchRangeB	  	to Specify the Horizontal Search range for B Frame
181 @param  sVerSearchRangeB	  	to Specify the Vertical Search range for B Frame
182*/
183/* ==========================================================================*/
184typedef struct OMX_VIDEO_CONFIG_MESEARCHRANGETYPE{
185	OMX_U32	 nSize;
186	OMX_VERSIONTYPE nVersion;
187	OMX_U32	 nPortIndex;
188	OMX_VIDEO_MOTIONVECTORTYPE eMVAccuracy;
189	OMX_U32	 nHorSearchRangeP;
190	OMX_U32	 nVerSearchRangeP;
191	OMX_U32	 nHorSearchRangeB;
192	OMX_U32	 nVerSearchRangeB;
193}OMX_VIDEO_CONFIG_MESEARCHRANGETYPE;
194
195/**
196 *	@brief	Block size specification
197 */
198typedef enum OMX_VIDEO_BLOCKSIZETYPE {
199	OMX_Video_Block_Size_16x16=0,
200	OMX_Video_Block_Size_8x8,
201	OMX_Video_Block_Size_8x4,
202	OMX_Video_Block_Size_4x8,
203	OMX_Video_Block_Size_4x4,
204   	OMX_Video_Block_Size_MAX =  0X7FFFFFFF
205}OMX_VIDEO_BLOCKSIZETYPE;
206
207/* ========================================================================== */
208/*!
209 @brief OMX_VIDEO_PARAM_MEBLOCKSIZETYPE : to configure the Min Motion Estimation block size for P and B frames
210 @param  eMinBlockSizeP 		to specify the Min Block size used for Motion Estimation incase of P Frames
211 							@sa OMX_VIDEO_BLOCKSIZETYPE
212 @param  eMinBlockSizeB	 	to specify the Min Block size used for Motion Estimation incase of B Frames
213*/
214/* ==========================================================================*/
215typedef struct OMX_VIDEO_PARAM_MEBLOCKSIZETYPE{
216	OMX_U32	 nSize;
217	OMX_VERSIONTYPE nVersion;
218	OMX_U32	 nPortIndex;
219	OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeP;
220	OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeB;
221}OMX_VIDEO_PARAM_MEBLOCKSIZETYPE;
222
223/**
224 *	@brief	to select the chroma component used for Intra Prediction
225 */
226typedef enum OMX_VIDEO_CHROMACOMPONENTTYPE {
227	OMX_Video_Chroma_Component_Cr_Only=0,	//!< consider only Cr chroma component for Intra prediction
228	OMX_Video_Chroma_Component_Cb_Cr_Both,  //!< consider both (Cb & Cr) chroma components for Intra prediction
229     OMX_Video_Chroma_Component_MAX =  0X7FFFFFFF
230}OMX_VIDEO_CHROMACOMPONENTTYPE;
231
232/* ========================================================================== */
233/*!
234 @brief OMX_VIDEO_PARAM_INTRAPREDTYPE : to configure the Modes for the different block sizes during Intra Prediction
235 @param  nLumaIntra4x4Enable 	 	to configure the Modes for 4x4 block size during luma intra prediction: bit position specifies the modes that are enabled/disabled
236								 HOR_UP|VERT_LEFT|HOR_DOWN|VERT_RIGHT|DIAG_DOWN_RIGHT|DIAG_DOWN_LEFT|DC|HOR|VER
237 @param  nLumaIntra8x8Enable	 	to configure the Modes for 4x4 block size during luma intra prediction
238 								HOR_UP|VERT_LEFT|HOR_DOWN|VERT_RIGHT|DIAG_DOWN_RIGHT|DIAG_DOWN_LEFT|DC|HOR|VER
239 @param  nLumaIntra16x16Enable	 	to configure the Modes for 4x4 block size during luma intra prediction
240								 PLANE|DC|HOR|VER
241 @param  nChromaIntra8x8Enable	 	to configure the Modes for 4x4 block size during luma intra prediction
242								 PLANE|DC|HOR|VER
243 @param  eChromaComponentEnable	to select the chroma components used for the intra prediction
244 								@sa OMX_VIDEO_CHROMACOMPONENTTYPE
245*/
246/* ==========================================================================*/
247typedef struct OMX_VIDEO_PARAM_INTRAPREDTYPE{
248	OMX_U32	 nSize;
249	OMX_VERSIONTYPE nVersion;
250	OMX_U32	 nPortIndex;
251	OMX_U32	 nLumaIntra4x4Enable;
252	OMX_U32 nLumaIntra8x8Enable;
253	OMX_U32 nLumaIntra16x16Enable;
254	OMX_U32 nChromaIntra8x8Enable;
255	OMX_VIDEO_CHROMACOMPONENTTYPE eChromaComponentEnable;
256}OMX_VIDEO_PARAM_INTRAPREDTYPE;
257
258
259/**
260 *	@brief	Encoding Mode Preset
261 */
262typedef enum OMX_VIDEO_ENCODING_MODE_PRESETTYPE {
263	OMX_Video_Enc_Default=0, 	//!<  for all the params default values are taken
264	OMX_Video_Enc_High_Quality, //!<  todo: mention the parameters that takes specific values depending on this selection
265	OMX_Video_Enc_User_Defined,
266	OMX_Video_Enc_High_Speed_Med_Quality,
267	OMX_Video_Enc_Med_Speed_Med_Quality,
268	OMX_Video_Enc_Med_Speed_High_Quality,
269	OMX_Video_Enc_High_Speed,
270   	OMX_Video_Enc_Preset_MAX =  0X7FFFFFFF
271}OMX_VIDEO_ENCODING_MODE_PRESETTYPE;
272
273/**
274 *	@brief	Rate Control Preset
275 */
276typedef enum OMX_VIDEO_RATECONTROL_PRESETTYPE {
277	OMX_Video_RC_Low_Delay,	//!<todo:  mention the parameters that takes specific values depending on this selection
278	OMX_Video_RC_Storage,
279	OMX_Video_RC_Twopass,
280	OMX_Video_RC_None,
281	OMX_Video_RC_User_Defined,
282   	OMX_Video_RC_MAX =  0X7FFFFFFF
283}OMX_VIDEO_RATECONTROL_PRESETTYPE;
284
285/* ========================================================================== */
286/*!
287 @brief OMX_VIDEO_PARAM_ENCODER_PRESETTYPE : to select the preset for Encoding Mode & Rate Control
288 @param  eEncodingModePreset		to specify Encoding Mode Preset
289 							@sa OMX_VIDEO_ENCODING_MODE_PRESETTYPE
290 @param  eRateControlPreset	to specify Rate Control Preset
291 							@sa OMX_VIDEO_RATECONTROL_PRESETTYPE
292*/
293/* ==========================================================================*/
294typedef struct OMX_VIDEO_PARAM_ENCODER_PRESETTYPE{
295	OMX_U32	 nSize;
296	OMX_VERSIONTYPE nVersion;
297	OMX_U32	 nPortIndex;
298	OMX_VIDEO_ENCODING_MODE_PRESETTYPE eEncodingModePreset;
299	OMX_VIDEO_RATECONTROL_PRESETTYPE eRateControlPreset;
300}OMX_VIDEO_PARAM_ENCODER_PRESETTYPE;
301
302
303/**
304 *	@brief	 input content type
305 */
306typedef enum OMX_TI_VIDEO_FRAMECONTENTTYPE {
307	OMX_TI_Video_Progressive = 0,			//!<Progressive frame
308	OMX_TI_Video_Interlace_BothFieldsTogether = 1,	//!<Interlaced frame
309	OMX_TI_Video_Interlace_OneField = 2,
310	OMX_TI_Video_AVC_2004_StereoInfoType = 3,
311	OMX_TI_Video_AVC_2010_StereoFramePackingType = 4,
312	OMX_TI_Video_FrameContentType_MAX = 0x7FFFFFFF
313}OMX_TI_VIDEO_FRAMECONTENTTYPE;
314
315/**
316 *	@brief	 Specifies the type of interlace content
317 */
318typedef enum OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE {
319	OMX_TI_Video_Interlace_PICAFF = 0,	//!< PicAFF type of interlace coding
320	OMX_TI_Video_Interlace_MBAFF,		//!< MBAFF type of interlace coding
321	OMX_TI_Video_Interlace_Fieldonly,	//!< Field only coding
322	OMX_TI_Video_Interlace_Fieldonly_MRF=OMX_TI_Video_Interlace_Fieldonly,
323	OMX_TI_Video_Interlace_Fieldonly_ARF,
324	OMX_TI_Video_Interlace_Fieldonly_SPF,	//!< Field only coding where codec decides the partiy of the field to be used based upon content
325	OMX_Video_Interlace_MAX = 0x7FFFFFFF
326}OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE;
327
328/* ========================================================================== */
329/*!
330 @brief OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE : to configure the data content
331 @param  eContentType		to specify Content type
332 							@sa OMX_VIDEO_FRAMECONTENTTYPE
333*/
334/* ==========================================================================*/
335typedef struct OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE{
336	OMX_U32	 nSize;
337	OMX_VERSIONTYPE nVersion;
338	OMX_U32	 nPortIndex;
339	OMX_TI_VIDEO_FRAMECONTENTTYPE eContentType;
340}OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE;
341
342/* ========================================================================== */
343/*!
344 @brief OMX_TI_VIDEO_PARAM_AVCINTERLACECODING : to configure the interlace encoding related settings
345 @param  eInterlaceCodingType	to specify the settings of interlace content
346 							@sa OMX_VIDEO_INTERLACE_CODINGTYPE
347 @param  bTopFieldFirst				to specify the first field sent is top or bottom
348 @param  bBottomFieldIntra		to specify codec that encode bottomfield also as intra or not
349*/
350/* ==========================================================================*/
351typedef struct OMX_TI_VIDEO_PARAM_AVCINTERLACECODING{
352	OMX_U32	 nSize;
353	OMX_VERSIONTYPE nVersion;
354	OMX_U32	 nPortIndex;
355	OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE eInterlaceCodingType;
356	OMX_BOOL bTopFieldFirst;
357	OMX_BOOL bBottomFieldIntra;
358}OMX_TI_VIDEO_PARAM_AVCINTERLACECODING;
359/* ========================================================================== */
360/*!
361 @brief OMX_TI_VIDEO_PARAM_AVCENC_STEREOINFO2004  : to configure the 2004 related stereo information type
362*/
363/* ==========================================================================*/
364
365typedef struct OMX_TI_VIDEO_PARAM_AVCENC_STEREOINFO2004
366{
367	OMX_U32          nSize;
368	OMX_VERSIONTYPE  nVersion;
369	OMX_U32          nPortIndex;
370	OMX_BOOL         btopFieldIsLeftViewFlag;
371	OMX_BOOL         bViewSelfContainedFlag;
372} OMX_TI_VIDEO_AVCENC_STEREOINFO2004;
373
374typedef enum OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE{
375	OMX_TI_Video_FRAMEPACK_CHECKERBOARD        = 0,
376	OMX_TI_Video_FRAMEPACK_COLUMN_INTERLEAVING = 1,
377	OMX_TI_Video_FRAMEPACK_ROW_INTERLEAVING    = 2,
378	OMX_TI_Video_FRAMEPACK_SIDE_BY_SIDE        = 3,
379	OMX_TI_Video_FRAMEPACK_TOP_BOTTOM          = 4,
380	OMX_TI_Video_FRAMEPACK_TYPE_DEFAULT        = OMX_TI_Video_FRAMEPACK_SIDE_BY_SIDE,
381	OMX_TI_Video_FRAMEPACK_TYPE_MAX = 0x7FFFFFFF
382} OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE;
383
384/* ========================================================================== */
385/*!
386 @brief OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010 : to configure the 2010 related stereo information type
387*/
388/* ==========================================================================*/
389
390typedef struct OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010
391{
392	OMX_U32          nSize;
393	OMX_VERSIONTYPE nVersion;
394	OMX_U32          nPortIndex;
395	OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE eFramePackingType;
396	OMX_U8         nFrame0PositionX;
397	OMX_U8         nFrame0PositionY;
398	OMX_U8         nFrame1PositionX;
399	OMX_U8         nFrame1PositionY;
400}OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010;
401
402/**
403 *	@brief	 Specifies Transform Block Size
404 */
405typedef enum OMX_VIDEO_TRANSFORMBLOCKSIZETYPE {
406	OMX_Video_Transform_Block_Size_4x4 =0,	//!< Transform blocks size is 8x8 : Valid for only High Profile
407	OMX_Video_Transform_Block_Size_8x8,	//!< Transform blocks size is 4x4
408	OMX_Video_Transform_Block_Size_Adaptive, //!< Adaptive transform block size : encoder decides as per content
409    OMX_Video_Transform_Block_Size_MAX =  0X7FFFFFFF
410}OMX_VIDEO_TRANSFORMBLOCKSIZETYPE;
411
412/* ========================================================================== */
413/*!
414 @brief OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE : to select the Block Size used for transformation
415 @param  eTransformBlocksize	to specify Block size used for transformation
416 							@sa OMX_VIDEO_TRANSFORMBLOCKSIZETYPE
417*/
418/* ==========================================================================*/
419
420typedef struct OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE{
421	OMX_U32	 nSize;
422	OMX_VERSIONTYPE nVersion;
423	OMX_U32	 nPortIndex;
424	OMX_VIDEO_TRANSFORMBLOCKSIZETYPE eTransformBlocksize;
425}OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE;
426
427
428/* ========================================================================== */
429/*!
430 @brief OMX_VIDEO_CONFIG_SLICECODINGTYPE : to configure the Slice Settings
431 @param  eSliceMode	to specify the Slice mode
432 							@sa OMX_VIDEO_AVCSLICEMODETYPE
433 @param  nSlicesize to specify the sliceSize
434*/
435/* ==========================================================================*/
436
437typedef struct OMX_VIDEO_CONFIG_SLICECODINGTYPE{
438	OMX_U32	 nSize;
439	OMX_VERSIONTYPE nVersion;
440	OMX_U32	 nPortIndex;
441	OMX_VIDEO_AVCSLICEMODETYPE eSliceMode;
442	OMX_U32	 nSlicesize;
443}OMX_VIDEO_CONFIG_SLICECODINGTYPE;
444
445/**
446 *	@brief	 Specifies Slice Group Change Direction Flag
447 */
448typedef enum OMX_VIDEO_SLIGRPCHANGEDIRTYPE{
449  OMX_Video_Raster_Scan             = 0 , //!< 0 : Raster scan order
450  OMX_Video_Clockwise              = 0 , //!< 0 : Clockwise (used for BOX OUT FMO Params)
451  OMX_Video_Right                   = 0 , //!< 0 : RIGHT (Used for Wipe FMO type)
452  OMX_Video_Reverse_Raster_Scan= 1 , //!< 1 : Reverse Raster Scan Order
453  OMX_Video_Counter_Clockwise       = 1 , //!< 1 : Counter Clockwise (used for BOX OUT FMO Params)
454  OMX_Video_Left                    = 1,  //!< 1 : LEFT (Used for Wipe FMO type)
455  OMX_Video_Left_MAX =  0X7FFFFFFF
456} OMX_VIDEO_SLICEGRPCHANGEDIRTYPE;
457
458/* ========================================================================== */
459/*!
460 @brief OMX_TI_VIDEO_PARAM_FMO_ADVANCEDSETTINGS : to configure the FMO Settings
461 @param
462*/
463/* ==========================================================================*/
464typedef struct OMX_VIDEO_PARAM_AVCADVANCEDFMOTYPE{
465	OMX_U32	 nSize;
466	OMX_VERSIONTYPE nVersion;
467	OMX_U32 nPortIndex;
468	OMX_U8 nNumSliceGroups;
469	OMX_U8 nSliceGroupMapType;
470	OMX_VIDEO_SLICEGRPCHANGEDIRTYPE eSliceGrpChangeDir;
471	OMX_U32 nSliceGroupChangeRate;
472	OMX_U32 nSliceGroupChangeCycle;
473	OMX_U32 nSliceGroupParams[H264ENC_MAXNUMSLCGPS] ;
474}OMX_VIDEO_PARAM_AVCADVANCEDFMOTYPE;
475
476/* ========================================================================== */
477/*!
478 @brief OMX_TI_VIDEO_CONFIG_QPSETTINGS : to configure the Qp Settings of I, P &B Frames
479 @param  nQpI
480*/
481/* ==========================================================================*/
482
483typedef struct OMX_VIDEO_CONFIG_QPSETTINGSTYPE{
484	OMX_U32	 nSize;
485	OMX_VERSIONTYPE nVersion;
486	OMX_U32	 nPortIndex;
487	OMX_U32	 nQpI;
488	OMX_U32	 nQpMaxI;
489	OMX_U32	 nQpMinI;
490	OMX_U32	 nQpP;
491	OMX_U32	 nQpMaxP;
492	OMX_U32	 nQpMinP;
493	OMX_U32	 nQpOffsetB;
494	OMX_U32	 nQpMaxB;
495	OMX_U32	 nQpMinB;
496}OMX_VIDEO_CONFIG_QPSETTINGSTYPE;
497
498/* ========================================================================== */
499/*!
500 @brief OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING : to configure the HRD
501	(Hypothetical Reference Decoder) related params
502 @param  nInitialBufferLevel	Initial buffer level for HRD compliance
503 @param  nHRDBufferSize		Hypothetical Reference Decoder buffer size
504 @param  nTargetBitrate		Target bitrate to encode with
505*/
506/* ==========================================================================*/
507
508typedef struct OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING {
509	OMX_U32     nSize;
510	OMX_VERSIONTYPE     nVersion;
511	OMX_U32    nPortIndex;
512	OMX_U32    nInitialBufferLevel;
513	OMX_U32    nHRDBufferSize;
514	OMX_U32    nTargetBitrate;
515} OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING;
516
517/* ========================================================================== */
518/*!
519 @brief OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING : to configure the HRD
520	(Hypothetical Reference Decoder) related params
521 @param  nHRDBufferSize		Hypothetical Reference Decoder Buffer Size
522 @param  nEncodeBitrate		Target bitrate to encode with
523
524*/
525/* ==========================================================================*/
526
527typedef struct OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING {
528	OMX_U32    nSize;
529	OMX_VERSIONTYPE     nVersion;
530	OMX_U32     nPortIndex;
531	OMX_U32     nHRDBufferSize;
532	OMX_U32     nEncodeBitrate;
533} OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING;
534
535/* ========================================================================= */
536/*!
537 @brief OMX_TI_VIDEO_CODINGTYPE :
538	Extension to video coding type enum for VP6 and VP7
539 @param
540*/
541/* ==========================================================================*/
542
543typedef enum OMX_TI_VIDEO_CODINGTYPE {
544	OMX_VIDEO_CodingVP6 =
545		(OMX_VIDEO_CODINGTYPE) OMX_VIDEO_CodingVendorStartUnused +1,  /* VP6 */
546	OMX_VIDEO_CodingVP7, /* VP7 */
547        OMX_TI_VIDEO_CodingSORENSONSPK, /* Sorenson spark*/
548        OMX_VIDEO_CodingSVC,    /**< H.264/SVC */
549	OMX_VIDEO_CodingVP8 /* VP8 */
550}OMX_TI_VIDEO_CODINGTYPE;
551
552
553/* ========================================================================= */
554/*!
555 @brief OMX_TI_VIDEO_MPEG4LEVELTYPE:
556        Extension to MPEG-4 level to cater to level 6
557 @param
558*/
559/* ==========================================================================*/
560typedef enum OMX_TI_VIDEO_MPEG4LEVELTYPE {
561        OMX_TI_VIDEO_MPEG4Level6  =
562            (OMX_VIDEO_MPEG4LEVELTYPE) OMX_VIDEO_MPEG4LevelVendorStartUnused + 1
563} OMX_TI_VIDEO_MPEG4LEVELTYPE;
564
565
566
567/**
568 *	@brief	 Specifies various intra refresh methods
569 */
570typedef enum OMX_TI_VIDEO_INTRAREFRESHTYPE {
571    OMX_TI_VIDEO_IntraRefreshNone = 0,
572    OMX_TI_VIDEO_IntraRefreshCyclicMbs,
573    OMX_TI_VIDEO_IntraRefreshCyclicRows,
574    OMX_TI_VIDEO_IntraRefreshMandatory,
575    OMX_TI_VIDEO_IntraRefreshMax = 0x7FFFFFFF
576} OMX_TI_VIDEO_INTRAREFRESHTYPE;
577
578
579/* ========================================================================== */
580/*!
581 @brief OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE  : Configuration parameters for
582                                               intra refresh settings
583 @param  eRefreshMode		Various refresh modes supported
584 @param  nIntraRefreshRate 	Intra refresh rate
585*/
586/* ==========================================================================*/
587
588typedef struct OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE {
589    OMX_U32 nSize;
590    OMX_VERSIONTYPE nVersion;
591    OMX_U32 nPortIndex;
592    OMX_TI_VIDEO_INTRAREFRESHTYPE eRefreshMode;
593    OMX_U32 nIntraRefreshRate;
594} OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE;
595
596
597/* ============================================================================= */
598/*!
599 @brief OMX_TI_STEREODECINFO : Structure to access 2004 SEI message generated by
600 H264 decoder as metatadata on its output port.
601 */
602/* ============================================================================= */
603
604typedef struct OMX_TI_STEREODECINFO {
605	OMX_U32 nFieldViewsFlag;
606	OMX_U32 nTopFieldIsLeftViewFlag;
607	OMX_U32 nCurrentFrameIsLeftViewFlag;
608	OMX_U32 nNextFrameIsSecondViewFlag;
609	OMX_U32 nLeftViewSelfContainedFlag;
610	OMX_U32 nRightViewSelfContainedFlag;
611} OMX_TI_STEREODECINFO;
612
613typedef struct OMX_TI_FRAMEPACKINGDECINFO {
614	OMX_U32 nFramePackingArrangementId;
615	OMX_U32 nFramePackingArrangementRepetitionPeriod;
616	OMX_U8  nFramePackingArrangementCancelFlag;
617	OMX_U8  nFramePackingArrangementType;
618	OMX_U8  nQuincunxSamplingFlag;
619	OMX_U8  nContentInterpretationType;
620	OMX_U8  nSpatialFlippingFlag;
621	OMX_U8  nFrame0FlippedFlag;
622	OMX_U8  nFieldViewsFlag;
623	OMX_U8  nCurrentFrameIsFrame0Flag;
624	OMX_U8  nFrame0SelfContainedFlag;
625	OMX_U8  nFrame1SelfContainedFlag;
626	OMX_U8  nFrame0GridPositionX;
627	OMX_U8  nFrame0GridPositionY;
628	OMX_U8  nFrame1GridPositionX;
629	OMX_U8  nFrame1GridPositionY;
630	OMX_U8  nFramePackingArrangementReservedByte;
631	OMX_U8  nFramePackingArrangementExtensionFlag;
632} OMX_TI_FRAMEPACKINGDECINFO;
633
634/* ============================================================================= */
635/*!
636 @brief OMX_TI_VIDEO_RANGEMAPPING : Structure to access luma and chroma range
637                                    mapping generated by decoders as
638                                    metatadata on its output port.
639 @param nRangeMappingLuma     Luma scale factor for range mapping.
640 @param nRangeMappingChroma   Chroma scale factor for range mapping.
641*/
642/* ============================================================================= */
643
644typedef struct OMX_TI_VIDEO_RANGEMAPPING {
645	OMX_U32 nRangeMappingLuma;
646	OMX_U32 nRangeMappingChroma;
647} OMX_TI_VIDEO_RANGEMAPPING;
648
649/* ============================================================================= */
650/*!
651 @brief OMX_TI_VIDEO_RESCALINGMATRIX : Structure to access rescaled
652                                       width/height generated by decoders
653                                       as metatadata on its output port.
654 @param nScaledHeight   Scaled image width for post processing for decoder.
655 @param nScaledWidth    Scaled image height for post processing for decoder.
656*/
657/* ============================================================================= */
658
659typedef struct OMX_TI_VIDEO_RESCALINGMATRIX {
660	OMX_U32 nScaledHeight;
661	OMX_U32 nScaledWidth;
662} OMX_TI_VIDEO_RESCALINGMATRIX;
663
664
665/*==========================================================================*/
666/*!
667 @brief OMX_TI_PARAM_PAYLOADHEADERFLAG : To specify the payload headerflag
668                                         for VP6/VP7 decoder.
669 @param bPayloadHeaderFlag      Flag - TRUE indicates that frame length and
670                                timestamp(for IVF format) will be part of
671                                frame input buffer.
672                                Flag - FALSE indecates that frame length and
673                                timestamp(for IVF format) will not be part of
674                                the input buffer.
675*/
676/*==========================================================================*/
677
678typedef struct OMX_TI_PARAM_PAYLOADHEADERFLAG {
679	OMX_U32 nSize;
680	OMX_VERSIONTYPE nVersion;
681	OMX_BOOL bPayloadHeaderFlag;
682} OMX_TI_PARAM_PAYLOADHEADERFLAG;
683
684
685/*==========================================================================*/
686/*!
687@brief OMX_TI_PARAM_IVFFLAG : Suport added to handle IVF header Decoding Mode
688@param bIvfFlag               TRUE enables IVF decoding mode.
689                              FALSE indicates bitstream format is non-IVF.
690*/
691/*==========================================================================*/
692
693typedef struct OMX_TI_PARAM_IVFFLAG {
694	OMX_U32 nSize;
695	OMX_VERSIONTYPE nVersion;
696	OMX_BOOL bIvfFlag;
697} OMX_TI_PARAM_IVFFLAG;
698
699// A pointer to this struct is passed to OMX_SetParameter() when the extension
700// index "OMX.google.android.index.storeMetaDataInBuffers"
701// is given.
702//
703// When meta data is stored in the video buffers passed between OMX clients
704// and OMX components, interpretation of the buffer data is up to the
705// buffer receiver, and the data may or may not be the actual video data, but
706// some information helpful for the receiver to locate the actual data.
707// The buffer receiver thus needs to know how to interpret what is stored
708// in these buffers, with mechanisms pre-determined externally. How to
709// interpret the meta data is outside of the scope of this method.
710//
711// Currently, this is specifically used to pass meta data from video source
712// (camera component, for instance) to video encoder to avoid memcpying of
713// input video frame data. To do this, bStoreMetaDta is set to OMX_TRUE.
714// If bStoreMetaData is set to false, real YUV frame data will be stored
715// in the buffers. In addition, if no OMX_SetParameter() call is made
716// with the corresponding extension index, real YUV data is stored
717// in the buffers.
718typedef struct OMX_VIDEO_STOREMETADATAINBUFFERSPARAMS {
719    OMX_U32 nSize;
720    OMX_VERSIONTYPE nVersion;
721    OMX_U32 nPortIndex;
722    OMX_BOOL bStoreMetaData;
723} OMX_VIDEO_STOREMETADATAINBUFFERSPARAMS;
724
725
726/**
727 * Interlaced Video Content format
728 *
729 * STRUCT MEMBERS:
730 *  nSize      : Size of the structure in bytes
731 *  nVersion   : OMX specification version information
732 *  nPortIndex : Port that this structure applies to
733 *  nFormat    : bitmapped value indentifying the interlaced formats supported by component
734 *  nTimeStamp : temporal timestamp information for the second field
735 */
736typedef struct OMX_TI_INTERLACEFORMATTYPE {
737	OMX_U32 nSize;
738	OMX_VERSIONTYPE nVersion;
739	OMX_U32 nPortIndex;
740	OMX_U32 nFormat;
741	OMX_TICKS nTimeStamp;
742} OMX_TI_INTERLACEFORMATTYPE;
743
744/**
745 * Interlace format types
746 */
747typedef enum OMX_TI_INTERLACETYPE {
748	OMX_InterlaceFrameProgressive= 0x00,
749	OMX_InterlaceInterleaveFrameTopFieldFirst= 0x01,
750	OMX_InterlaceInterleaveFrameBottomFieldFirst= 0x02,
751	OMX_InterlaceFrameTopFieldFirst= 0x04,
752	OMX_InterlaceFrameBottomFieldFirst= 0x08,
753	OMX_InterlaceInterleaveFieldTop= 0x10,
754	OMX_InterlaceInterleaveFieldBottom= 0x20,
755	OMX_InterlaceFmtMask= 0x7FFFFFFF
756} OMX_TI_INTERLACETYPE;
757
758/**
759 * To query if the stream contains interlaced or progressive conten
760 *
761 * STRUCT MEMBERS:
762 *  nSize             : Size of the structure in bytes
763 *  nVersion          : OMX specification version information
764 *  nPortIndex        : Port that this structure applies to
765 *  bInterlaceFormat  : whether the stream contains interlace or progressive content
766 *                        OMX_TRUE indicates interlace and OMX_FALSE indicates progressive
767 *  nInterlaceFormats : bitmapped value identifying the interlace formats detected within the stream
768 */
769typedef struct OMX_TI_STREAMINTERLACEFORMATTYPE {
770	OMX_U32 nSize;
771	OMX_VERSIONTYPE nVersion;
772	OMX_U32 nPortIndex;
773	OMX_BOOL bInterlaceFormat;
774	OMX_U32 nInterlaceFormats;
775} OMX_TI_STREAMINTERLACEFORMAT;
776
777/*
778@brief OMX_TI_VIDEO_CONFIG_PICSIZECONTROLINFO : Structure to provide the configuration to compute min and max picture size
779@param minPicSizeRatio : This ratio is used to compute minimum picture size in the following manner,
780minPicSize = averagePicSize >> minPicSizeRatio. Allowed values are 1 to 4. Setting this to 0 will enable encoder chosen ratio.
781@param maxPicSizeRatio : This ratio is used to compute maximum picture size in the following manner,
782maxPicSize = averagePicSize * maxPicSizeRatio. Allowed values are 2 to 30. Setting this to 0 or 1 will enable encoder chosen ratio.
783*/
784/* ============================================================================= */
785typedef struct OMX_TI_VIDEO_CONFIG_PICSIZECONTROLINFO {
786    OMX_U32         nSize;
787    OMX_VERSIONTYPE nVersion;
788    OMX_U32         nPortIndex;
789    OMX_U16         minPicSizeRatio;
790    OMX_U16         maxPicSizeRatio;
791} OMX_TI_VIDEO_CONFIG_PICSIZECONTROLINFO;
792
793
794/*!====================================================================!
795
796    Currently we only support SVC baseline profile
797
798 * !====================================================================!*/
799    typedef enum OMX_TI_VIDEO_SVCPROFILETYPE {
800        OMX_VIDEO_SVCProfileBaseline            = 0x01,     /**< Baseline profile */
801        OMX_VIDEO_SVCProfileHigh                = 0x02,     /**< High profile */
802        OMX_VIDEO_SVCProfileHighIntra           = 0x03,     /**< High Intra profile */
803        OMX_VIDEO_SVCProfileMax                 = 0x7FFFFFFF
804    } OMX_TI_VIDEO_SVCPROFILETYPE;
805
806
807/*!====================================================================!
808
809    Currently we support only SVC baseline profile upto level 4 for SVC encoder.
810
811 * !====================================================================!*/
812    typedef enum OMX_TI_VIDEO_SVCLEVELTYPE {
813        OMX_VIDEO_SVCLevel1                     = 0x01,     /**< Level 1 */
814        OMX_VIDEO_SVCLevel1b                    = 0x02,     /**< Level 1b */
815        OMX_VIDEO_SVCLevel11                    = 0x04,     /**< Level 1.1 */
816        OMX_VIDEO_SVCLevel12                    = 0x08,     /**< Level 1.2 */
817        OMX_VIDEO_SVCLevel13                    = 0x10,     /**< Level 1.3 */
818        OMX_VIDEO_SVCLevel2                     = 0x20,     /**< Level 2 */
819        OMX_VIDEO_SVCLevel21                    = 0x40,     /**< Level 2.1 */
820        OMX_VIDEO_SVCLevel22                    = 0x80,     /**< Level 2.2 */
821        OMX_VIDEO_SVCLevel3                     = 0x100,    /**< Level 3 */
822        OMX_VIDEO_SVCLevel31                    = 0x200,    /**< Level 3.1 */
823        OMX_VIDEO_SVCLevel32                    = 0x400,    /**< Level 3.2 */
824        OMX_VIDEO_SVCLevel4                     = 0x800,    /**< Level 4 */
825        OMX_VIDEO_SVCLevel41                    = 0x1000,   /**< Level 4.1 */
826        OMX_VIDEO_SVCLevel42                    = 0x2000,   /**< Level 4.2 */
827        OMX_VIDEO_SVCLevel5                     = 0x4000,   /**< Level 5 */
828        OMX_VIDEO_SVCLevel51                    = 0x8000,   /**< Level 5.1 */
829        OMX_VIDEO_SVCLevelMax                   = 0x7FFFFFFF
830    } OMX_TI_VIDEO_SVCLEVELTYPE;
831
832
833    typedef struct OMX_VIDEO_SVC_STD_PARAMS {
834        OMX_U32  nSliceHeaderSpacing;
835        OMX_U32  nPFrames;
836        OMX_U32  nBFrames;
837        OMX_BOOL bUseHadamard;
838        OMX_U32  nRefFrames;
839        OMX_U32  nRefIdx10ActiveMinus1;
840        OMX_U32  nRefIdx11ActiveMinus1;
841        OMX_BOOL bEnableUEP;
842        /* Not needed as per SVC encoder requirements
843        OMX_BOOL                                bEnableFMO;
844        OMX_BOOL                                bEnableASO;
845        OMX_BOOL                                bEnableRS;
846        */
847        OMX_VIDEO_AVCLOOPFILTERTYPE eLoopFilterMode;
848        OMX_U32                     nAllowedPictureTypes;
849        OMX_BOOL                    bFrameMBsOnly;
850        OMX_BOOL                    bMBAFF;
851        OMX_BOOL                    bEntropyCodingCABAC;
852        OMX_BOOL                    bWeightedPPrediction;
853        OMX_U32                     nWeightedBipredicitonMode;
854        OMX_BOOL                    bconstIpred;
855        OMX_BOOL                    bDirect8x8Inference;
856        OMX_BOOL                    bDirectSpatialTemporal;
857        OMX_U32                     nCabacInitIdc;
858    } OMX_VIDEO_SVC_STD_PARAMS;
859
860
861    typedef struct OMX_VIDEO_SVC_RECTTYPE {
862        OMX_S32 nLeft;
863        OMX_S32 nTop;
864        OMX_U32 nWidth;
865        OMX_U32 nHeight;
866    } OMX_VIDEO_SVC_RECTTYPE;
867
868
869    typedef struct OMX_VIDEO_SVC_BITRATETYPE {
870        OMX_VIDEO_CONTROLRATETYPE eControlRate;
871        OMX_U32                   nTargetBitrate;
872    } OMX_VIDEO_SVC_BITRATETYPE;
873
874
875    typedef struct OMX_VIDEO_SVC_MOTIONVECTORTYPE {
876        OMX_VIDEO_MOTIONVECTORTYPE eAccuracy;
877        OMX_BOOL                   bUnrestrictedMVs;
878        OMX_BOOL                   bFourMV;
879        OMX_S32                    sXSearchRange;
880        OMX_S32                    sYSearchRange;
881    } OMX_VIDEO_SVC_MOTIONVECTORTYPE;
882
883
884    typedef struct OMX_VIDEO_SVC_QUANTIZATIONTYPE {
885        OMX_U32 nQpI;
886        OMX_U32 nQpP;
887        OMX_U32 nQpB;
888    } OMX_VIDEO_SVC_QUANTIZATIONTYPE;
889
890
891    typedef struct OMX_VIDEO_SVC_INTRAREFRESHTYPE {
892        OMX_VIDEO_INTRAREFRESHTYPE eRefreshMode;
893        OMX_U32                    nAirMBs;
894        OMX_U32                    nAirRef;
895        OMX_U32                    nCirMBs;
896    } OMX_VIDEO_SVC_INTRAREFRESHTYPE;
897
898
899    typedef struct OMX_VIDEO_SVC_VBSMCTYPE {
900        OMX_BOOL b16x16;
901        OMX_BOOL b16x8;
902        OMX_BOOL b8x16;
903        OMX_BOOL b8x8;
904        OMX_BOOL b8x4;
905        OMX_BOOL b4x8;
906        OMX_BOOL b4x4;
907    } OMX_VIDEO_SVC_VBSMCTYPE;
908
909
910    typedef struct OMX_VIDEO_SVC_NALUCONTROLTYPE {
911        OMX_U32 nStartofSequence;
912        OMX_U32 nEndofSequence;
913        OMX_U32 nIDR;
914        OMX_U32 nIntraPicture;
915        OMX_U32 nNonIntraPicture;
916    }OMX_VIDEO_SVC_NALUCONTROLTYPE;
917
918
919    typedef struct OMX_VIDEO_SVC_MEBLOCKSIZETYPE {
920        OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeP;
921        OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeB;
922    }OMX_VIDEO_SVC_MEBLOCKSIZETYPE;
923
924
925    typedef struct OMX_VIDEO_SVC_INTRAPREDTYPE {
926        OMX_U32                       nLumaIntra4x4Enable;
927        OMX_U32                       nLumaIntra8x8Enable;
928        OMX_U32                       nLumaIntra16x16Enable;
929        OMX_U32                       nChromaIntra8x8Enable;
930        OMX_VIDEO_CHROMACOMPONENTTYPE eChromaComponentEnable;
931    }OMX_VIDEO_SVC_INTRAPREDTYPE;
932
933
934    typedef struct OMX_VIDEO_SVC_ENCODER_PRESETTYPE {
935        OMX_VIDEO_ENCODING_MODE_PRESETTYPE eEncodingModePreset;
936        OMX_VIDEO_RATECONTROL_PRESETTYPE   eRateControlPreset;
937    }OMX_VIDEO_SVC_ENCODER_PRESETTYPE;
938
939
940    typedef struct OMX_VIDEO_SVC_VUIINFOTYPE {
941        OMX_BOOL                  bAspectRatioPresent;
942        OMX_VIDEO_ASPECTRATIOTYPE ePixelAspectRatio;
943        OMX_BOOL                  bFullRange;
944    }OMX_VIDEO_SVC_VUIINFOTYPE;
945
946
947    typedef struct OMX_VIDEO_SVC_HRDBUFFERSETTING {
948        OMX_U32 nInitialBufferLevel;
949        OMX_U32 nHRDBufferSize;
950        OMX_U32 nTargetBitrate;
951    }OMX_VIDEO_SVC_HRDBUFFERSETTING;
952
953
954    typedef struct OMX_VIDEO_SVC_INTRAPERIOD {
955        OMX_U32 nIDRPeriod;
956        OMX_U32 nPFrames;
957    } OMX_VIDEO_SVC_INTRAPERIOD;
958
959
960    typedef struct OMX_VIDEO_SVC_PIXELINFOTYPE {
961        OMX_U32 nWidth;
962        OMX_U32 nHeight;
963    } OMX_VIDEO_SVC_PIXELINFOTYPE;
964
965
966    typedef struct OMX_VIDEO_SVC_MESEARCHRANGETYPE {
967        OMX_VIDEO_MOTIONVECTORTYPE eMVAccuracy;
968        OMX_U32                    nHorSearchRangeP;
969        OMX_U32                    nVerSearchRangeP;
970        OMX_U32                    nHorSearchRangeB;
971        OMX_U32                    nVerSearchRangeB;
972    }OMX_VIDEO_SVC_MESEARCHRANGETYPE;
973
974
975    typedef struct OMX_VIDEO_SVC_QPSETTINGSTYPE {
976        OMX_U32 nQpI;
977        OMX_U32 nQpMaxI;
978        OMX_U32 nQpMinI;
979        OMX_U32 nQpP;
980        OMX_U32 nQpMaxP;
981        OMX_U32 nQpMinP;
982        OMX_U32 nQpOffsetB;
983        OMX_U32 nQpMaxB;
984        OMX_U32 nQpMinB;
985    }OMX_VIDEO_SVC_QPSETTINGSTYPE;
986
987
988    typedef struct OMX_VIDEO_SVC_SLICECODINGTYPE {
989        OMX_VIDEO_AVCSLICEMODETYPE eSliceMode;
990        OMX_U32                    nSlicesize;
991    }OMX_VIDEO_SVC_SLICECODINGTYPE;
992
993
994    typedef struct OMX_VIDEO_EXEC_SVC_HRDBUFFERSETTING {
995        OMX_U32 nHRDBufferSize;
996        OMX_U32 nEncodeBitrate;
997    }OMX_VIDEO_EXEC_SVC_HRDBUFFERSETTING;
998
999/**
1000 * SVC params
1001 *
1002 * STRUCT MEMBERS:
1003 *  nSize                     : Size of the structure in bytes
1004 *  nVersion                  : OMX specification version information
1005 *  nPortIndex                : Port that this structure applies to
1006 *  nSliceHeaderSpacing       : Number of macroblocks between slice header, put
1007 *                              zero if not used
1008 *  nPFrames                  : Number of P frames between each I frame
1009 *  nBFrames                  : Number of B frames between each I frame
1010 *  bUseHadamard              : Enable/disable Hadamard transform
1011 *  nRefFrames                : Max number of reference frames to use for inter
1012 *                              motion search (1-16)
1013 *  nRefIdxTrailing           : Pic param set ref frame index (index into ref
1014 *                              frame buffer of trailing frames list), B frame
1015 *                              support
1016 *  nRefIdxForward            : Pic param set ref frame index (index into ref
1017 *                              frame buffer of forward frames list), B frame
1018 *                              support
1019 *  bEnableUEP                : Enable/disable unequal error protection. This
1020 *                              is only valid of data partitioning is enabled.
1021 *  bEnableFMO                : Enable/disable flexible macroblock ordering
1022 *  bEnableASO                : Enable/disable arbitrary slice ordering
1023 *  bEnableRS                 : Enable/disable sending of redundant slices
1024 *  eProfile                  : AVC profile(s) to use
1025 *  eLevel                    : AVC level(s) to use
1026 *  nAllowedPictureTypes      : Specifies the picture types allowed in the
1027 *                              bitstream
1028 *  bFrameMBsOnly             : specifies that every coded picture of the
1029 *                              coded video sequence is a coded frame
1030 *                              containing only frame macroblocks
1031 *  bMBAFF                    : Enable/disable switching between frame and
1032 *                              field macroblocks within a picture
1033 *  bEntropyCodingCABAC       : Entropy decoding method to be applied for the
1034 *                              syntax elements for which two descriptors appear
1035 *                              in the syntax tables
1036 *  bWeightedPPrediction      : Enable/disable weighted prediction shall not
1037 *                              be applied to P and SP slices
1038 *  nWeightedBipredicitonMode : Default weighted prediction is applied to B
1039 *                              slices
1040 *  bconstIpred               : Enable/disable intra prediction
1041 *  bDirect8x8Inference       : Specifies the method used in the derivation
1042 *                              process for luma motion vectors for B_Skip,
1043 *                              B_Direct_16x16 and B_Direct_8x8 as specified
1044 *                              in subclause 8.4.1.2 of the AVC spec
1045 *  bDirectSpatialTemporal    : Flag indicating spatial or temporal direct
1046 *                              mode used in B slice coding (related to
1047 *                              bDirect8x8Inference) . Spatial direct mode is
1048 *                              more common and should be the default.
1049 *  nCabacInitIdx             : Index used to init CABAC contexts
1050 *  eLoopFilterMode           : Enable/disable loop filter
1051 */
1052    typedef struct OMX_TI_VIDEO_PARAM_SVCTYPE {
1053        OMX_U32         nSize;
1054        OMX_VERSIONTYPE nVersion;
1055        OMX_U32         nPortIndex;
1056
1057        OMX_U32                nActualFrameWidth;
1058        OMX_U32                nActualFrameHeight;
1059        OMX_S32                nStride;
1060        OMX_U32                xFramerate;
1061        OMX_COLOR_FORMATTYPE   eColorFormat;
1062        OMX_VIDEO_SVC_RECTTYPE sRecType;
1063
1064        OMX_VIDEO_SVC_STD_PARAMS sBasicParams;
1065
1066        OMX_U32                     nRefFrames;
1067        OMX_TI_VIDEO_SVCPROFILETYPE eProfile;
1068        OMX_TI_VIDEO_SVCLEVELTYPE   eLevel;
1069
1070        OMX_U32                   xEncodeFramerate;
1071        OMX_VIDEO_SVC_BITRATETYPE sBitRateParams;
1072
1073        OMX_VIDEO_SVC_MOTIONVECTORTYPE sMotionVectorParams;
1074        OMX_VIDEO_SVC_QUANTIZATIONTYPE sQuantizationParams;
1075        OMX_VIDEO_SVC_INTRAREFRESHTYPE sIntraRefreshParams;
1076        OMX_VIDEO_SVC_VBSMCTYPE        sVBSMCParams;
1077
1078        //OMX_NALUFORMATSTYPE               eNaluFormat;
1079        OMX_VIDEO_SVC_NALUCONTROLTYPE sNalUnitParams;
1080
1081        OMX_VIDEO_SVC_MEBLOCKSIZETYPE    sMEBlockSizeParams;
1082        OMX_VIDEO_SVC_INTRAPREDTYPE      sIntraPredParams;
1083        OMX_VIDEO_SVC_ENCODER_PRESETTYPE sEncPresetParams;
1084        OMX_VIDEO_TRANSFORMBLOCKSIZETYPE eTransformBlocksize;
1085        OMX_VIDEO_SVC_VUIINFOTYPE        sVUIInfoParams;
1086        OMX_VIDEO_SVC_HRDBUFFERSETTING   sHRDBufferParams;
1087
1088        OMX_U32 nNumTemporalLayers;
1089        OMX_S32 nDependencyID;
1090        OMX_S32 nQualityID;
1091        //OMX_VIDEO_SVC_ENCODE_MODE         eModeOfEncode;
1092
1093        OMX_U32 nErrorConcealmentMode;
1094        OMX_U32 nDeblockFilterMode;
1095    } OMX_TI_VIDEO_PARAM_SVCTYPE;
1096
1097 typedef struct OMX_TI_VIDEO_CONFIG_SVCLAYERDETAILS {
1098    OMX_U32         nSize;
1099    OMX_VERSIONTYPE nVersion;
1100    OMX_U32         nPortIndex;
1101
1102    OMX_U32 nNumLayers;
1103    OMX_U32 nLayerId;
1104    OMX_U8  nPriorityId;
1105    OMX_U8  nDependencyId;
1106    OMX_U8  nQualityId;
1107    OMX_U8  nTemporalId;
1108    OMX_U8  nBitrateInfoPresentFlag;
1109    OMX_U8  nFramerateInfoPresentFlag;
1110    OMX_U8  nFramesizeInfoPresentFlag;
1111    OMX_U16 nAvgBitrate;
1112    OMX_U16 nMaxBitrate;
1113    OMX_U16 nAvgFramerate;
1114    OMX_U32 nFrameWidth;
1115    OMX_U32 nFrameHeight;
1116
1117    OMX_U32 nLayerIndex;     /* Used to query for individual layer details */
1118
1119} OMX_TI_VIDEO_CONFIG_SVCLAYERDETAILS;
1120
1121typedef struct OMX_TI_VIDEO_CONFIG_SVCTARGETLAYER {
1122    OMX_U32         nSize;
1123    OMX_VERSIONTYPE nVersion;
1124    OMX_U32         nPortIndex;
1125
1126    OMX_U32 nSvcTargetLayerDID;
1127    OMX_U32 nSvcTargetLayerTID;
1128    OMX_U32 nSvcTargetLayerQID;
1129
1130} OMX_TI_VIDEO_CONFIG_SVCTARGETLAYER;
1131/* ========================================================================== */
1132/*!
1133@brief OMX_TI_VIDEO_SLICEDATAINFO : to configure the Slice Settings
1134@param  nNumofSlices   number of validfields to be read
1135@param  nSliceSizeConfigured   variable that indicates the MaxSlice configured
1136                               & (n*nSliceSizeConfigured) gives the buff offset
1137                               for nth slice in the o/p buffer
1138@param  nSliceSize   gives the SliceSize
1139*/
1140/* ==========================================================================*/
1141typedef struct OMX_TI_VIDEO_SLICEDATAINFO {
1142    OMX_U32 nNumofSlices;
1143    OMX_U32 nSliceSizeConfigured;
1144    OMX_U32 nSliceSize[OMXH264E_MAX_SLICE_SUPPORTED];
1145} OMX_TI_VIDEO_SLICEDATAINFO;
1146/**
1147*	@brief	mode selection for the data that is given to the Codec
1148 */
1149
1150typedef enum _OMX_VIDEO_AVCLTRMODE {
1151  OMX_H264ENC_LTRP_NONE = 0,
1152        /**< No longterm refernce frame in the sequnce
1153           */
1154  OMX_H264ENC_LTRP_REFERTOIDR = 1,
1155          /**< Mark all the I frames as long term-reference frames and
1156           * based on the frame control IH264ENC_Control, refere to
1157           * a long-term reference frame (I frame).
1158           */
1159  OMX_H264ENC_LTRP_REFERTOP_PROACTIVE =2,
1160          /**< Two long term frames are supported in this schme and
1161           * long-term index marking and refernce frame update is done based
1162           * the IH264ENC_Control values
1163           */
1164  OMX_H264ENC_LTRP_REFERTOP_REACTIVE = 3
1165          /**< This is not supported in the current version of encoder
1166           */
1167} OMX_VIDEO_AVCLTRMODE;
1168
1169
1170/* ============================================================================= */
1171/*
1172@brief OMX_TI_VIDEO_PARAM_AVC_LTRP : Structure to enable the configuration of Long Term reference Picture feature in H264 Encoder for the session
1173Enabling this parameter will instruct encoder to keep its recent I/IDR frame in its reference buffer list.
1174So it increases the DDR foot print by one frame buffer
1175@param eLTRMode	: enables the LongTerm Reference Picture, possible modes: 0, 1, 2
1176@param nLTRInterval : interval of the write indicating to codec interms of the frame number
1177*/
1178/* ============================================================================= */
1179typedef struct OMX_TI_VIDEO_PARAM_AVC_LTRP{
1180	OMX_U32 nSize;
1181	OMX_VERSIONTYPE nVersion;
1182	OMX_U32 nPortIndex;
1183	OMX_VIDEO_AVCLTRMODE eLTRMode;
1184	OMX_U32 nLTRInterval;
1185} OMX_TI_VIDEO_PARAM_AVC_LTRP;
1186
1187/*
1188@brief OMX_TI_VIDEO_CONFIG_AVC_LTRP : Structure to provide the configuration to acknowledge successful decode of previous LTR
1189@param eLTRFrameDecoded	: tells the decoder that the LTR has been decoded successfully when set to TRUE
1190*/
1191/* ============================================================================= */
1192typedef struct OMX_TI_VIDEO_CONFIG_AVC_LTRP{
1193    OMX_U32 nSize;
1194    OMX_VERSIONTYPE nVersion;
1195    OMX_U32 nPortIndex;
1196    OMX_BOOL bEnableNextLTR;
1197} OMX_TI_VIDEO_CONFIG_AVC_LTRP;
1198
1199/* ============================================================================= */
1200/*
1201@brief OMX_TI_VIDEO_CONFIG_AVC_LTRP_INTERVAL : Structure to enable the update of the LTRP
1202Interval during runtime
1203@param nLTRInterval : interval of the write indicating to codec interms of the frame number
1204*/
1205/* ============================================================================= */
1206typedef struct OMX_TI_VIDEO_CONFIG_AVC_LTRP_INTERVAL{
1207	OMX_U32 nSize;
1208	OMX_VERSIONTYPE nVersion;
1209	OMX_U32 nPortIndex;
1210	OMX_U32 nLTRInterval;
1211} OMX_TI_VIDEO_CONFIG_AVC_LTRP_INTERVAL;
1212
1213/* ============================================================================= */
1214/*
1215@brief OMX_TI_VIDEO_CONFIG_AVC_LTRP_INTERVAL : Structure to enable timestamps in decode order
1216            at i/p of decoders.
1217*/
1218/* ============================================================================= */
1219typedef struct OMX_TI_PARAM_TIMESTAMP_IN_DECODE_ORDER{
1220	OMX_U32 nSize;
1221	OMX_VERSIONTYPE nVersion;
1222        OMX_BOOL bEnabled;
1223} OMX_TI_PARAM_TIMESTAMP_IN_DECODE_ORDER;
1224
1225/* ============================================================================= */
1226/*
1227@brief OMX_TI_VIDEO_PARAM_AUTO_FRAMERATE_UPDATE : Structure to enable dynamic update of frame rate
1228*/
1229/* ============================================================================= */
1230typedef struct OMX_TI_VIDEO_PARAM_AUTO_FRAMERATE_UPDATE {
1231    OMX_U32         nSize;
1232    OMX_VERSIONTYPE nVersion;
1233    OMX_U32         nPortIndex;
1234    OMX_BOOL        bEnableAutoVFRUpdate;
1235    OMX_U32         nDiffThresholdtoUpdate;
1236    OMX_U32         nMaxSessionFrameRate;
1237} OMX_TI_VIDEO_PARAM_AUTO_FRAMERATE_UPDATE;
1238
1239/* ============================================================================= */
1240/*
1241@brief OMX_TI_PARAM_SKIP_GREY_OUTPUT_FRAMES : Structure to enable feature to skip grey output
1242           frames which doesn't have proper reference.
1243*/
1244/* ============================================================================= */
1245typedef struct OMX_TI_PARAM_SKIP_GREY_OUTPUT_FRAMES {
1246    OMX_U32         nSize;
1247    OMX_VERSIONTYPE nVersion;
1248    OMX_BOOL        bEnabled;
1249} OMX_TI_PARAM_SKIP_GREY_OUTPUT_FRAMES;
1250
1251/* ============================================================================= */
1252/*
1253@brief OMX_TI_PARAM_DECMETADATA : Structure to enable different codec metadata
1254           for video decoders.
1255*/
1256/* ============================================================================= */
1257typedef struct OMX_TI_PARAM_DECMETADATA {
1258    OMX_U32         nSize;
1259    OMX_VERSIONTYPE nVersion;
1260    OMX_U32         nPortIndex;
1261    OMX_BOOL        bEnableMBInfo;
1262    OMX_BOOL        bEnableTranscodeMode;
1263    OMX_BOOL        bEnableSEIInfo;
1264    OMX_BOOL        bEnableVUIInfo;
1265} OMX_TI_PARAM_DECMETADATA;
1266
1267/**
1268 ******************************************************************************
1269 *  @enum       OMX_TI_VIDEO_MBERRSTATUS
1270 *  @brief      This enum indicates if a MB was in error or not
1271 *
1272 ******************************************************************************
1273*/
1274typedef enum {
1275    OMX_TI_VIDEO_MB_NOERROR = 0,
1276    /**
1277    *  MB was non-erroneous
1278    */
1279    OMX_TI_VIDEO_MB_ERROR = 1
1280                            /**
1281                            * MB was erroneous
1282                            */
1283} OMX_TI_VIDEO_MBERRSTATUS;
1284
1285
1286/**
1287 *  Macro definitions required for SEI support: HRD sequence parameter set
1288 */
1289#define OMX_TI_VIDEO_H264VDEC_MAXCPBCNT        32
1290
1291/**
1292 *  Macro definitions required for SEI support: HRD sequence parameter set
1293 */
1294#define OMX_TI_VIDEO_H264VDEC_MAXUSERDATA_PAYLOAD 300
1295
1296/**
1297 ******************************************************************************
1298 *  @struct OMX_TI_VIDEO_H264VDEC_HrdParams
1299 *
1300 *  @brief  This structure contains the HRD parameter elements.
1301 *
1302 *  @param  cpb_cnt_minus1 : Number of alternative CPB specifications in the
1303 *                           bit-stream
1304 *  @param  bit_rate_scale : Together with bit_rate_value[i], it specifies the
1305 *                           maximum input bit-rate for the ith CPB.
1306 *  @param  cpb_size_scale : Together with cpb_size_value[i], specifies the
1307 *                           maximum CPB size for the ith CPB.
1308 *  @param  bit_rate_value_minus1[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT] :Maximum input bitrate
1309 *                                                     for the ith CPB
1310 *  @param  cpb_size_value_minus1[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT] :Maximum CPB size for the
1311 *                                                     ith CPB
1312 *  @param  vbr_cbr_flag[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT] :Specifies the ith CPB is operated
1313 *                          in Constant Bit-rate mode or variable bit-rate mode
1314 *  @param  initial_cpb_removal_delay_length_minus1 :Length in bits of
1315 *                                   initial_cpb_removal_length syntax element
1316 *  @param  cpb_removal_delay_length_minus1 :Length in bits of
1317 *                                      cpb_removal_delay_length syntax element
1318 *  @param  dpb_output_delay_length_minus1 :Length in bits of
1319 *                                       dpb_output_delay_length syntax element
1320 *  @param  time_offset_length : Length in bits of time_offset syntax element
1321 ******************************************************************************
1322*/
1323typedef struct OMX_TI_VIDEO_H264VDEC_HrdParams {
1324    OMX_U32 cpb_cnt_minus1;
1325    OMX_U8  bit_rate_scale;
1326    OMX_U8  cpb_size_scale;
1327    OMX_U32 bit_rate_value_minus1[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
1328    OMX_U32 cpb_size_value_minus1[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
1329    OMX_U8  vbr_cbr_flag[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
1330    OMX_U8  initial_cpb_removal_delay_length_minus1;
1331    OMX_U8  cpb_removal_delay_length_minus1;
1332    OMX_U8  dpb_output_delay_length_minus1;
1333    OMX_U8  time_offset_length;
1334} OMX_TI_VIDEO_H264VDEC_HrdParams;
1335
1336/**
1337 ******************************************************************************
1338 *  @struct OMX_TI_VIDEO_H264VDEC_SVCVuiParams
1339 *
1340 *  @brief   This structure contains VUI  message syntax elements for scalable
1341 *           video stream
1342 *
1343 *  @param  parsed_flag :1 - Indicates that in the current process call, c
1344 *                            contents of the structure is updated
1345 *                       0 - Indicates contents of the structure is not updated
1346 *
1347 *  @param  svc_vui_ext_num_entries_minus1:(svc_vui_ext_num_entries_minus1 + 1)
1348 *                      specifies the number of information
1349 *                        entries that are present in the SVC
1350 *                      VUI parameters extension syntax
1351 *                        structure
1352 *  @param  svc_vui_ext_dependency_id:indicate the max value of DId for the
1353 *                    i-th subset of coded video sequences
1354 *  @param  svc_vui_ext_quality_id:indicate the max value of QId for the
1355 *                    i-th subset of coded video sequences
1356 *  @param  svc_vui_ext_temporal_id: indicate the max value of TId for the
1357 *                    i-th subset of coded video sequences
1358 *  @param  svc_vui_ext_timing_info_present_flag: Flag to tells that
1359 *                          svc_vui_ext_num_units_in_tick,
1360 *                          svc_vui_ext_time_scale,
1361 *                          svc_vui_ext_fixed_frame_rate_flag
1362 *                          are present for current coded
1363 *                          sequence or not.
1364 *  @param  svc_vui_ext_num_units_in_tick: specifies the value of num_units_in_tick
1365 *  @param  svc_vui_ext_time_scale: specifies the value of time_scale
1366 *  @param  svc_vui_ext_fixed_frame_rate_flag: specifies the value of
1367 *                         fixed_frame_rate_flag
1368 *  @param  svc_vui_ext_nal_hrd_parameters_present_flag:specifies the
1369 *                value of nal_hrd_parameters_present_flag
1370 *  @param  svc_vui_ext_vcl_hrd_parameters_present_flag: ] specifies the
1371 *                value of vcl_hrd_parameters_present_flag
1372 *  @param  svc_vui_ext_low_delay_hrd_flag: specifies the value
1373 *          of low_delay_hrd_flag
1374 *  @param  svc_vui_ext_pic_struct_present_flag: specifies the value
1375 *           of pic_struct_present_flag
1376 *
1377 ******************************************************************************
1378*/
1379
1380typedef struct sOMX_TI_VIDEO_H264VDEC_SVCVuiParams {
1381    OMX_U32 parsed_flag;
1382    OMX_U16 svc_vui_ext_num_entries_minus1;
1383    OMX_U16 svc_vui_ext_dependency_id;
1384    OMX_U16 svc_vui_ext_quality_id;
1385    OMX_U16 svc_vui_ext_temporal_id;
1386    OMX_U16 svc_vui_ext_timing_info_present_flag;
1387    OMX_U32 svc_vui_ext_num_units_in_tick;
1388    OMX_U32 svc_vui_ext_time_scale;
1389    OMX_U16 svc_vui_ext_fixed_frame_rate_flag;
1390    OMX_U16 svc_vui_ext_nal_hrd_parameters_present_flag;
1391    OMX_U16 svc_vui_ext_vcl_hrd_parameters_present_flag;
1392    OMX_U16 svc_vui_ext_low_delay_hrd_flag;
1393    OMX_U16 svc_vui_ext_pic_struct_present_flag;
1394} OMX_TI_VIDEO_H264VDEC_SVCVuiParams;
1395
1396/**
1397 ******************************************************************************
1398 *  @struct OMX_TI_VIDEO_H264VDEC_VuiParams
1399 *
1400 *  @brief  This structure contains the VUI Sequence Parameter elements.
1401 *
1402 *  @param  parsed_flag :1 - Indicates that in the current process call, c
1403 *                            contents of the structure is updated
1404 *                       0 - Indicates contents of the structure is not updated
1405 *  @param  aspect_ratio_info_present_flag :Indicates whether aspect ratio idc
1406 *                                          is present or not.
1407 *  @param  aspect_ratio_idc : Aspect ratio of Luma samples
1408 *  @param  sar_width : Horizontal size of sample aspect ratio
1409 *  @param  sar_height : Vertical size of sample aspect ratio
1410 *  @param  overscan_info_present_flag : Cropped decoded pictures are suitable
1411 *                                       for display or not.
1412 *  @param  overscan_appropriate_flag : Overscan_appropriate_flag
1413 *  @param  video_signal_type_present_flag : Flag indicates whether
1414 *          video_format, video_full_range_flag and colour_description_present_
1415 *          flag are present or not
1416 *  @param  video_format :Video format indexed by a table. For example,PAL/NTSC
1417 *  @param  video_full_range_flag : Black level, luma and chroma ranges. It
1418 *                                  should be used for BT.601 compliance
1419 *  @param  colour_description_present_flag:Indicates whether colour_primaries,
1420 *                transfer_characteristics and matrix_coefficients are present.
1421 *  @param  colour_primaries :Chromaticity co-ordinates of source primaries
1422 *  @param  transfer_characteristics :Opto-electronic transfer characteristics
1423 *          of the source picture
1424 *  @param  matrix_coefficients :Matrix coefficients for deriving Luma and
1425 *          chroma data from RGB components.
1426 *  @param  chroma_location_info_present_flag : Flag indicates whether
1427 *          chroma_sample_loc_type_top field and chroma_sample_loctype
1428 *          bottom_field are present.
1429 *  @param  chroma_sample_loc_type_top_field : Location of chroma_sample top
1430 *          field
1431 *  @param  chroma_sample_loc_type_bottom_field :Location of chroma_sample
1432 *          bottom field
1433 *  @param  timing_info_present_flag :Indicates whether num_units_in_tick,
1434 *          time_scale, and fixed_frame_rate_flag are present.
1435 *  @param  num_units_in_tick :Number of units of a clock that corresponds to 1
1436 *          increment of a clock tick counter
1437 *  @param  time_scale :Indicates actual increase in time for 1 increment of a
1438 *          clock tick counter
1439 *  @param  fixed_frame_rate_flag :Indicates how the temporal distance between
1440 *          HRD output times of any two output pictures is constrained
1441 *  @param  nal_hrd_parameters_present_flag :Indicates whether
1442 *          nal_hrd_parameters are present
1443 *  @param  nal_hrd_pars : NAL HRD Parameters
1444 *  @param  vcl_hrd_parameters_present_flag :Indicates whether
1445 *          vcl_hrd_parameters are present
1446 *  @param  vcl_hrd_pars : VCL HRD Parameters
1447 *  @param  low_delay_hrd_flag :HRD operational mode as in Annex C of the
1448 *          standard
1449 *  @param  pic_struct_present_flag :Indicates whether picture timing SEI
1450 *          messages are present
1451 *  @param  bitstream_restriction_flag :Indicates if the bit-stream restriction
1452 *          parameters are present
1453 *  @param  motion_vectors_over_pic_boundaries_flag :Specifies whether motion
1454 *          vectors can point to regions outside the picture boundaries
1455 *  @param  max_bytes_per_pic_denom :Maximum number of bytes not exceeded by
1456 *          the sum of sizes of all VCL NAL units of a single coded picture
1457 *  @param  max_bits_per_mb_denom :Maximum number of bits taken by any coded MB
1458 *  @param  log2_max_mv_length_vertical :Maximum value of any motion vector\u2019s
1459 *          vertical component
1460 *  @param  log2_max_mv_length_horizontal :Maximum value of any motion vector\u2019s
1461 *           horizontal component
1462 *  @param  max_dec_frame_reordering :
1463 *  @param  num_reorder_frames :Maximum number of frames that need to be
1464 *          re-ordered
1465 *  @param  max_dec_frame_buffering :Size of HRD decoded buffer (DPB) in terms
1466 *          of frame buffers
1467 *  @param  svcVuiParams :  struct instance of vui parameters for svc
1468 *
1469 ******************************************************************************
1470*/
1471typedef struct OMX_TI_VIDEO_H264VDEC_VuiParams {
1472    OMX_U32                            parsed_flag;
1473    OMX_U8                             aspect_ratio_info_present_flag;
1474    OMX_U32                            aspect_ratio_idc;
1475    OMX_U32                            sar_width;
1476    OMX_U32                            sar_height;
1477    OMX_U8                             overscan_info_present_flag;
1478    OMX_U8                             overscan_appropriate_flag;
1479    OMX_U8                             video_signal_type_present_flag;
1480    OMX_U8                             video_format;
1481    OMX_U8                             video_full_range_flag;
1482    OMX_U8                             colour_description_present_flag;
1483    OMX_U8                             colour_primaries;
1484    OMX_U8                             transfer_characteristics;
1485    OMX_U8                             matrix_coefficients;
1486    OMX_U8                             chroma_location_info_present_flag;
1487    OMX_U32                            chroma_sample_loc_type_top_field;
1488    OMX_U32                            chroma_sample_loc_type_bottom_field;
1489    OMX_U8                             timing_info_present_flag;
1490    OMX_U32                            num_units_in_tick;
1491    OMX_U32                            time_scale;
1492    OMX_U8                             fixed_frame_rate_flag;
1493    OMX_U8                             nal_hrd_parameters_present_flag;
1494    OMX_TI_VIDEO_H264VDEC_HrdParams    nal_hrd_pars;
1495    OMX_U8                             vcl_hrd_parameters_present_flag;
1496    OMX_TI_VIDEO_H264VDEC_HrdParams    vcl_hrd_pars;
1497    OMX_U8                             low_delay_hrd_flag;
1498    OMX_U8                             pic_struct_present_flag;
1499    OMX_U8                             bitstream_restriction_flag;
1500    OMX_U8                             motion_vectors_over_pic_boundaries_flag;
1501    OMX_U32                            max_bytes_per_pic_denom;
1502    OMX_U32                            max_bits_per_mb_denom;
1503    OMX_U32                            log2_max_mv_length_vertical;
1504    OMX_U32                            log2_max_mv_length_horizontal;
1505    OMX_U32                            max_dec_frame_reordering;
1506    OMX_U32                            num_reorder_frames;
1507    OMX_U32                            max_dec_frame_buffering;
1508    OMX_TI_VIDEO_H264VDEC_SVCVuiParams svcVuiParams;
1509} OMX_TI_VIDEO_H264VDEC_VuiParams;
1510
1511/**
1512 ******************************************************************************
1513 *  @struct OMX_TI_VIDEO_H264VDEC_SeiUserDataRegITUT
1514 *
1515 *  @brief  This structure contains the user data SEI msg elements
1516 *
1517 *  @param  parsed_flag :1 - Indicates that in the current process call,
1518 *                           contents of the structure is updated
1519 *                       0 - Indicates contents of the structure is not updated
1520 *  @param  num_payload_bytes :Specifies the size of the payload
1521 *  @param  itu_t_t35_country_code : A byte having a value specified as a
1522 *                          country code by ITU-T Recommendation T.35 Annex A
1523 *  @param  itu_t_t35_country_code_extension_byte :A byte having a value
1524 *          specified as a country code by ITU-T Recommendation T.35 Annex B
1525 *  @param  itu_t_t35_payload_byte[] : A byte containing data registered as
1526 *          specified by ITU-T Recommendation T.35.
1527 *  @param  dataOverflowFlag: This indicates if pay load data is more than the
1528 *                            array size i.e., OMX_TI_VIDEO_H264VDEC_MAXUSERDATA_PAYLOAD.
1529 ******************************************************************************
1530*/
1531typedef struct OMX_TI_VIDEO_H264VDEC_SeiUserDataRegITUT {
1532    OMX_U32 parsed_flag;
1533    OMX_U32 num_payload_bytes;
1534    OMX_U8  itu_t_t35_country_code;
1535    OMX_U8  itu_t_t35_country_code_extension_byte;
1536    OMX_U8  itu_t_t35_payload_byte[OMX_TI_VIDEO_H264VDEC_MAXUSERDATA_PAYLOAD];
1537    OMX_U8  dataOverflowFlag;
1538} OMX_TI_VIDEO_H264VDEC_SeiUserDataRegITUT;
1539
1540/**
1541 ******************************************************************************
1542 *  @struct OMX_TI_VIDEO_H264VDEC_SeiUserDataUnReg
1543 *
1544 *  @brief  This structure contains the user data SEI msg elements
1545 *
1546 *  @param  parsed_flag :1 - Indicates that in the current process call,
1547 *                           contents of the structure is updated
1548 *                       0 - Indicates contents of the structure is not updated
1549 *  @param  num_payload_bytes :Specifies the size of the payload
1550 *  @param  uuid_iso_iec_11578 :Value specified as a UUID according to the
1551 *                              procedures of ISO/IEC 11578:1996 Annex A.
1552 *  @param  user_data_payload_byte :Byte containing data having syntax and
1553 *                                semantics as specified by the UUID generator.
1554 *  @param  dataOverflowFlag: This indicates if pay load data is more than the
1555 *                            array size i.e., OMX_TI_VIDEO_H264VDEC_MAXUSERDATA_PAYLOAD.
1556 ******************************************************************************
1557*/
1558typedef struct OMX_TI_VIDEO_H264VDEC_SeiUserDataUnReg {
1559    OMX_U32 parsed_flag;
1560    OMX_U32 num_payload_bytes;
1561    OMX_U8  uuid_iso_iec_11578[16];
1562    OMX_U8  user_data_payload_byte[OMX_TI_VIDEO_H264VDEC_MAXUSERDATA_PAYLOAD];
1563    OMX_U8  dataOverflowFlag;
1564} OMX_TI_VIDEO_H264VDEC_SeiUserDataUnReg;
1565
1566
1567/**
1568 ******************************************************************************
1569 *  @struct OMX_TI_VIDEO_H264VDEC_SeiBufferingPeriod
1570 *
1571 *  @brief   This structure contains the buffering period SEI msg elements
1572 *
1573 *  @param  parsed_flag :1 - Indicates that in the current process call,
1574 *                           contents of the structure is updated
1575 *                       0 - Indicates contents of the structure is not updated
1576 *  @param  seq_parameter_set_id :Specifies the sequence parameter set that
1577 *                                contains the sequence HRD attributes
1578 *  @param  nal_cpb_removal_delay :Specifies the delay for the indexed NAL CPB
1579 *          between the time of arrival in the CPB of the first bit of the
1580 *          coded data associated with the access unit associated with the
1581 *          buffering period SEI message and the time of removal from the CPB
1582 *          of the coded data associated with the same access unit, for the
1583 *          first buffering period after HRD initialization.
1584 *  @param  nal_cpb_removal_delay_offset :Used for the indexed NAL CPB in
1585 *          combination with the cpb_removal_delay to specify the initial
1586 *          delivery time of coded access units to the CPB
1587 *  @param  vcl_cpb_removal_delay :Specifies the delay for the indexed VCL CPB
1588 *          between the time of arrival in the CPB of the first bit of the
1589 *          coded data associated with the access unit associated with the
1590 *          buffering period SEI message and the time of removal from the CPB
1591 *          of the coded data associated with the same access unit, for the
1592 *          first buffering period after HRD initialization.
1593 *  @param  vcl_cpb_removal_delay_offset :Used for the indexed VCL CPB in
1594 *          combination with the cpb_removal_delay to specify the initial
1595 *          delivery time of coded access units to the CPB
1596 ******************************************************************************
1597*/
1598typedef struct OMX_TI_VIDEO_H264VDEC_SeiBufferingPeriod {
1599    OMX_U32 parsed_flag;
1600    OMX_U32 seq_parameter_set_id;
1601    OMX_U32 nal_cpb_removal_delay[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
1602    OMX_U32 nal_cpb_removal_delay_offset[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
1603    OMX_U32 vcl_cpb_removal_delay[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
1604    OMX_U32 vcl_cpb_removal_delay_offset[OMX_TI_VIDEO_H264VDEC_MAXCPBCNT];
1605}OMX_TI_VIDEO_H264VDEC_SeiBufferingPeriod;
1606/**
1607 ******************************************************************************
1608 *  @struct OMX_TI_VIDEO_H264VDEC_SeiPanScanRect
1609 *
1610 *  @brief   This structure contains the pan scan rectangle SEI msg elements
1611 *
1612 *  @param  parsed_flag :1 - Indicates that in the current process call,
1613 *                           contents of the structure is updated
1614 *                       0 - Indicates contents of the structure is not updated
1615 *  @param  pan_scan_rect_id :Specifies an identifying number that may be used
1616 *                            to identify the purpose of the pan-scan rectangle
1617 *  @param  pan_scan_rect_cancel_flag :Equal to 1 indicates that the SEI
1618 *                    message cancels the persistence of any previous pan-scan
1619 *                    rectangle SEI message in output order.
1620 *                    pan_scan_rect_cancel_flag equal to 0 indicates that
1621 *                    pan-scan rectangle information follows.
1622 *  @param  pan_scan_cnt_minus1 :Specifies the number of pan-scan rectangles
1623 *          that are present in the SEI message
1624 *  @param  pan_scan_rect_left_offset :Specifies as signed integer quantities
1625 *          in units of one-sixteenth sample spacing relative to the luma
1626 *          sampling grid, the location of the pan-scan rectangle
1627 *  @param  pan_scan_rect_right_offset :Specifies as signed integer quantities
1628 *          in units of one-sixteenth sample spacing relative to the luma
1629 *          sampling grid, the location of the pan-scan rectangle
1630 *  @param  pan_scan_rect_top_offset : Top offset
1631 *  @param  pan_scan_rect_bottom_offset : Bottom offset
1632 *  @param  pan_scan_rect_repetition_period :Specifies the persistence of the
1633 *          pan-scan rectangle SEI message and may specify a picture order
1634 *          count interval within which another pan-scan rectangle SEI message
1635 *          with the same value of pan_scan_rect_id or the end of the coded
1636 *          video sequence shall be present in the bit-stream
1637 ******************************************************************************
1638*/
1639typedef struct OMX_TI_VIDEO_H264VDEC_SeiPanScanRect {
1640    OMX_U32 parsed_flag;
1641    OMX_U32 pan_scan_rect_id;
1642    OMX_U32 pan_scan_rect_cancel_flag;
1643    OMX_U32 pan_scan_cnt_minus1;
1644    OMX_S32 pan_scan_rect_left_offset[3];
1645    OMX_S32 pan_scan_rect_right_offset[3];
1646    OMX_S32 pan_scan_rect_top_offset[3];
1647    OMX_S32 pan_scan_rect_bottom_offset[3];
1648    OMX_U32 pan_scan_rect_repetition_period;
1649} OMX_TI_VIDEO_H264VDEC_SeiPanScanRect;
1650
1651/**
1652 ******************************************************************************
1653 *  @struct OMX_TI_VIDEO_H264VDEC_SeiProgRefineStart
1654 *
1655 *  @brief  This structure contains the progressive refinement start SEI msg
1656 *          elements
1657 *
1658 *  @param  parsed_flag :1 - Indicates that in the current process call,
1659 *                           contents of the structure is updated
1660 *                       0 - Indicates contents of the structure is not updated
1661 *  @param  progressive_refinement_id :Specifies an identification number for
1662 *          the progressive refinement operation.
1663 *  @param  num_refinement_steps_minus1 :Specifies the number of reference
1664 *          frames in the tagged set of consecutive coded pictures
1665 ******************************************************************************
1666*/
1667typedef struct OMX_TI_VIDEO_H264VDEC_SeiProgRefineStart {
1668    OMX_U32 parsed_flag;
1669    OMX_U32 progressive_refinement_id;
1670    OMX_U32 num_refinement_steps_minus1;
1671} OMX_TI_VIDEO_H264VDEC_SeiProgRefineStart;
1672/**
1673 ******************************************************************************
1674 *  @struct OMX_TI_VIDEO_H264VDEC_SeiProgRefineEnd
1675 *
1676 *  @brief  TThis structure contains the progressive refinement end SEI msg
1677 *          elements
1678 *
1679 *  @param  parsed_flag :1 - Indicates that in the current process call,
1680 *                           contents of the structure is updated
1681 *                       0 - Indicates contents of the structure is not updated
1682 *  @param  progressive_refinement_id :Specifies an identification number for
1683 *                    the progressive refinement operation.
1684 ******************************************************************************
1685*/
1686typedef struct OMX_TI_VIDEO_H264VDEC_SeiProgRefineEnd {
1687    OMX_U32 parsed_flag;
1688    OMX_U32 progressive_refinement_id;
1689} OMX_TI_VIDEO_H264VDEC_SeiProgRefineEnd;
1690/**
1691 ******************************************************************************
1692 *  @struct OMX_TI_VIDEO_H264VDEC_SeiRecoveryPointInfo
1693 *
1694 *  @brief  This structure contains the sRecovery Point Info SEI msg elements
1695 *
1696 *  @param  parsed_flag :1 - Indicates that in the current process call,
1697 *                           contents of the structure is updated
1698 *                       0 - Indicates contents of the structure is not updated
1699 *  @param  exact_match_flag :Indicates whether decoded pictures at and
1700 *          subsequent to the specified recovery point in output order derived
1701 *          by starting the decoding process at the access unit associated with
1702 *          the recovery point SEI message, will be an exact match to the
1703 *          pictures that would be produced by starting the decoding process
1704 *        at the location of a previous IDR access unit in the NAL unit stream.
1705 *  @param  recovery_frame_cnt :Specifies the recovery point of output pictures
1706 *          in output order
1707 *  @param  broken_link_flag :Indicates the presence or absence of a broken
1708 *                            link in the NAL unit stream
1709 *  @param  changing_slice_group_idc :Indicates whether decoded pictures are
1710 *          correct or approximately correct in content at and subsequent to
1711 *          the recovery point in output order when all macro-blocks of the
1712 *          primary coded pictures are decoded within the changing slice group
1713 *          period.
1714 ******************************************************************************
1715*/
1716typedef struct OMX_TI_VIDEO_H264VDEC_SeiRecoveryPointInfo {
1717    OMX_U32 parsed_flag;
1718    OMX_U32 recovery_frame_cnt;
1719    OMX_U32 exact_match_flag;
1720    OMX_U32 broken_link_flag;
1721    OMX_U32 changing_slice_group_idc;
1722} OMX_TI_VIDEO_H264VDEC_SeiRecoveryPointInfo;
1723
1724/**
1725 ******************************************************************************
1726 *  @struct OMX_TI_VIDEO_H264VDEC_SeiPictureTiming
1727 *
1728 *  @brief  This structure contains the picture timing SEI msg elements
1729 *
1730 *  @param  parsed_flag :1 - Indicates that in the current process call,
1731 *                           contents of the structure is updated
1732 *                       0 - Indicates contents of the structure is not updated
1733 *  @param     NumClockTs :
1734 *  @param     cpb_removal_delay :Specifies how many clock ticks to wait after
1735 *               removal from the CPB of the access unit associated with the
1736 *               most recent buffering period SEI message before removing from
1737 *               the buffer the access unit data associated with the picture
1738 *               timing SEI message.
1739 *  @param     dpb_output_delay : Used to compute the DPB output time of the
1740 *               picture.
1741 *  @param     pic_struct : Indicates whether a picture  should be displayed as
1742 *               a frame or field
1743 *  @param     clock_time_stamp_flag[4]:1 - Indicates number of clock timestamp
1744 *                            syntax elements present and follow immediately
1745 *                            0 \u2013 Indicates associated clock timestamp syntax
1746 *                                elements not present
1747 *  @param     ct_type[4] : Indicates the scan type(interlaced or progressive)
1748 *                          of the source material
1749 *  @param     nuit_field_based_flag[4] : Used to calculate the clockTimestamp
1750 *  @param     counting_type[4] : Specifies the method of dropping values of
1751 *                                n_frames
1752 *  @param     full_timestamp_flag[4] : 1 - Specifies that the n_frames syntax
1753 *                                      element is followed by seconds_value,
1754 *                                      minutes_value, and hours_value.
1755 *                                      0 - Specifies that the n_frames syntax
1756 *                                      element is followed by seconds_flag
1757 *  @param     discontinuity_flag[4] : Indicates whether the difference between
1758 *               the current value of clockTimestamp and the value of
1759 *               clockTimestamp computed from the previous clockTimestamp in
1760 *               output order can be interpreted as the time difference between
1761 *               the times of origin or capture of the associated frames or
1762 *               fields.
1763 *  @param     cnt_dropped_flag[4] : Specifies the skipping of one or more
1764 *               values of n_frames using the counting method
1765 *  @param     n_frames[4] : Specifies the value of nFrames used to compute
1766 *                            clockTimestamp.
1767 *  @param     seconds_flag[4] : equal to 1 specifies that seconds_value and
1768 *                               minutes_flag are present when
1769 *                               full_timestamp_flag is equal to 0.
1770 *  @param     minutes_flag[4] : equal to 1 specifies that minutes_value and
1771 *                              hours_flag are present when full_timestamp_flag
1772 *                              is equal to 0 and seconds_flag is equal to 1.
1773 *  @param     hours_flag[4] :  equal to 1 specifies that hours_value is
1774 *                              present when full_timestamp_flag is equal to 0
1775 *                              and seconds_flag is equal to 1 and minutes_flag
1776 *                              is equal to 1.
1777 *  @param     seconds_value[4] : Specifies the value of sS used to compute
1778 *                                clockTimestamp.
1779 *  @param     minutes_value[4] : Specifies the value of mM used to compute
1780 *                                clockTimestamp.
1781 *  @param     hours_value[4] : Specifies the value of tOffset used to compute
1782 *                              clockTimestamp
1783 *  @param     time_offset[4] : Specifies the value of tOffset used to compute
1784 *                              clockTimestamp
1785 ******************************************************************************
1786*/
1787typedef struct OMX_TI_VIDEO_H264VDEC_SeiPictureTiming {
1788    OMX_U32 parsed_flag;
1789    OMX_U32 NumClockTs;
1790    OMX_U32 cpb_removal_delay;
1791    OMX_U32 dpb_output_delay;
1792    OMX_U32 pic_struct;
1793    OMX_U32 clock_time_stamp_flag[4];
1794    OMX_U32 ct_type[4];
1795    OMX_U32 nuit_field_based_flag[4];
1796    OMX_U32 counting_type[4];
1797    OMX_U32 full_timestamp_flag[4];
1798    OMX_U32 discontinuity_flag[4];
1799    OMX_U32 cnt_dropped_flag[4];
1800    OMX_U32 n_frames[4];
1801    OMX_U32 seconds_flag[4];
1802    OMX_U32 minutes_flag[4];
1803    OMX_U32 hours_flag[4];
1804    OMX_U32 seconds_value[4];
1805    OMX_U32 minutes_value[4];
1806    OMX_U32 hours_value[4];
1807    OMX_S32 time_offset[4];
1808}OMX_TI_VIDEO_H264VDEC_SeiPictureTiming;
1809/**
1810 ******************************************************************************
1811 *  @struct OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRep
1812 *
1813 *  @brief  This structure contains the full frmae freeze repetition SEI msg
1814 *          elements
1815 *
1816 *  @param  parsed_flag :1 - Indicates that in the current process call,
1817 *                           contents of the structure is updated
1818 *                       0 - Indicates contents of the structure is not updated
1819 *  @param  full_frame_freeze_repetition_period :Specifies the persistence of
1820 *            the full-frame freeze SEI message
1821 ******************************************************************************
1822*/
1823typedef struct OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRep {
1824    OMX_U32 parsed_flag;
1825    OMX_U32 full_frame_freeze_repetition_period;
1826} OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRep;
1827
1828/**
1829 ******************************************************************************
1830 *  @struct OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRel
1831 *
1832 *  @brief   This structure contains frame freeze release SEI msg elements
1833 *
1834 *  @param  parsed_flag :1 - Indicates that in the current process call,
1835 *                           contents of the structure is updated
1836 *                       0 - Indicates contents of the structure is not updated
1837 *  @param  payloadSize : Size of the frame_freeze_release payload
1838 ******************************************************************************
1839*/
1840typedef struct OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRel {
1841    OMX_U32 parsed_flag;
1842    OMX_U32 payloadSize;
1843} OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRel;
1844
1845/**
1846 ******************************************************************************
1847 *  @struct OMX_TI_VIDEO_H264VDEC_SeiStereoVideoInfo
1848 *
1849 *  @brief   This structure contains stereo video information SEI msg elements
1850 *
1851 *  @param  parsed_flag :1 - Indicates that in the current process call,
1852 *                           contents of the structure is updated
1853 *                       0 - Indicates contents of the structure is not updated
1854 *  @param  field_views_flag :   1 - indicates that all pictures in the current
1855 *                  coded video sequence are fields
1856 *                0 - indicates that all pictures in the current
1857 *                  coded video sequence are frames.
1858 *  @param  top_field_is_left_view_flag :
1859 *                1 - top field is a left  view.
1860 *                0 - topfield is right view.
1861 *  @param  current_frame_is_left_view_flag :
1862 *                1 - current frame is left view.
1863 *                0 - current frame is right view.
1864 *  @param  next_frame_is_second_view_flag :
1865 *                1 - current picture and a next picture in
1866 *                  output order form a stereo video pair.
1867 *                0 - current picture and a previous picture in
1868 *                  output order form a stereo video pair.
1869 *  @param  left_view_self_contained_flag :
1870 *                1 - it will not use right view as a reference
1871 *                  picture for inter prediction
1872 *                0 - it may use right view as a reference
1873 *                  picture for inter prediction.
1874 *  @param  right_view_self_contained_flag :
1875 *                1 - it will not use left view as a reference
1876 *                  picture for inter prediction
1877 *                0 - it may use left view as a reference
1878 *                  picture for inter prediction.
1879 ******************************************************************************
1880*/
1881typedef struct OMX_TI_VIDEO_H264VDEC_SeiStereoVideoInfo {
1882    OMX_U32 parsed_flag;
1883    OMX_U32 field_views_flag;
1884    OMX_U32 top_field_is_left_view_flag;
1885    OMX_U32 current_frame_is_left_view_flag;
1886    OMX_U32 next_frame_is_second_view_flag;
1887    OMX_U32 left_view_self_contained_flag;
1888    OMX_U32 right_view_self_contained_flag;
1889} OMX_TI_VIDEO_H264VDEC_SeiStereoVideoInfo;
1890
1891/**
1892 ******************************************************************************
1893 *  @struct OMX_TI_VIDEO_H264VDEC_SeiFramePacking
1894 *
1895 *  @brief  This structure contains frame packing arrangement SEI msg elements
1896 *
1897 *  @param  frame_packing_arrangement_id :
1898 *                contains an identifying number that may be used to identify
1899 *                the usage of the frame packing arrangement SEI message.
1900 *  @param  frame_packing_arrangement_cancel_flag :
1901 *                1 - equal to 1 indicates that the frame packing arrangement
1902 *                    SEI message cancels the persistence of any previous frame
1903 *                    packing arrangement SEI message in output order.
1904 *                0 - indicates that frame packing arrangement info follows
1905 *  @param  frame_packing_arrangement_type :
1906 *                indicates the type of packing arrangement of the frames
1907 *  @param  quincunx_sampling_flag :
1908 *                1 - indicates that each color component plane of each
1909 *                    constituent frame is quincunx sampled
1910 *                0 - indicates that each color component plane of each
1911 *                    constituent frame is not quincunx sampled
1912 *  @param  content_interpretation_type :
1913 *                1 - frame 0 being associated with the left view and frame 1
1914 *                    being associated with the right view
1915 *                2 - frame 0 being associated with the right view and frame 1
1916 *                    being associated with the left view
1917 *  @param  spatial_flipping_flag :
1918 *                1 - spatial flipping is enabled for any one of the frame
1919 *                    constituent, if frame_packing_arrangement_type is 3 or 4.
1920 *                0 - spatial flipping is disabled for any one of the frame
1921 *                    constituent, if frame_packing_arrangement_type is 3 or 4.
1922 *  @param  frame0_flipped_flag :
1923 *                1 - frame 0 is spatially flipped
1924 *                0 - frame 1 is spatially flipped
1925 *  @param  field_views_flag :
1926 *                1 - indicates that all pictures in the current coded video
1927 *                   sequence are coded as complementary field pairs.
1928 *                0 - indicates that all pictures in the current coded video
1929 *                   sequence are coded as frame.
1930 *  @param  current_frame_is_frame0_flag :
1931 *                1 - indicates that the current decoded frame is constituent
1932 *                    frame 0 and the next decoded frame in output order
1933 *                    is constituent frame 1.
1934 *                0 - indicates that the current decoded frame is constituent
1935 *                    frame 1 and the next decoded frame in output order
1936 *                    is constituent frame 0.
1937 *  @param  frame0_self_contained_flag :
1938 *                1 - indicates that the constituent frame 0 is dependent on
1939 *                    constituent frame 1 in decoding process
1940 *                0 - indicates that the constituent frame 0 may dependent on
1941 *                    constituent frame 1 in decoding process
1942 *  @param  frame1_self_contained_flag :
1943 *                1 - indicates that the constituent frame 1 is dependent on
1944 *                    constituent frame 0 in decoding process
1945 *                0 - indicates that the constituent frame 1 may dependent on
1946 *                    constituent frame 0 in decoding process
1947 *  @param  frame0_grid_position_x :
1948 *                specifies the horizontal location of the upper left
1949 *                sample of constituent frame 0 in the units of one
1950 *                sixteenth of the luma samples
1951 *  @param  frame0_grid_position_y :
1952 *                specifies the vertical location of the upper left
1953 *                sample of constituent frame 0 in the units of one
1954 *                sixteenth of the luma samples
1955 *  @param  frame1_grid_position_x :
1956 *                specifies the horizontal location of the upper left
1957 *                sample of constituent frame 1 in the units of one
1958 *                sixteenth of the luma samples
1959 *  @param  frame1_grid_position_y :
1960 *                specifies the vertical location of the upper left
1961 *                sample of constituent frame 1 in the units of one
1962 *                sixteenth of the luma samples
1963 *  @param  frame_packing_arrangement_reserved_byte :
1964 *                reserved for the future use.
1965 *  @param  frame_packing_arrangement_repetition_period :
1966 *                specifies the persistence of the frame packing arrangement
1967 *                SEI message and may specify a frame order count interval
1968 *                within which another frame packing arrangement SEI message
1969 *                with the same value of frame_packing_arrangement_id or the
1970 *                end of the coded video sequence shall be present in the
1971 *                bitstream.
1972 *  @param  frame_packing_arrangement_extension_flag :
1973 *                0 - indicates that no additional data follows within the
1974 *                    frame packing arrangement SEI message.
1975 *                1 - Reserved for the future use.
1976 ******************************************************************************
1977*/
1978typedef struct OMX_TI_VIDEO_H264VDEC_SeiFramePacking {
1979    OMX_U32 parsed_flag;
1980    OMX_U32 frame_packing_arrangement_id;
1981    OMX_U32 frame_packing_arrangement_repetition_period;
1982    OMX_U8  frame_packing_arrangement_cancel_flag;
1983    OMX_U8  frame_packing_arrangement_type;
1984    OMX_U8  quincunx_sampling_flag;
1985    OMX_U8  content_interpretation_type;
1986    OMX_U8  spatial_flipping_flag;
1987    OMX_U8  frame0_flipped_flag;
1988    OMX_U8  field_views_flag;
1989    OMX_U8  current_frame_is_frame0_flag;
1990    OMX_U8  frame0_self_contained_flag;
1991    OMX_U8  frame1_self_contained_flag;
1992    OMX_U8  frame0_grid_position_x;
1993    OMX_U8  frame0_grid_position_y;
1994    OMX_U8  frame1_grid_position_x;
1995    OMX_U8  frame1_grid_position_y;
1996    OMX_U8  frame_packing_arrangement_reserved_byte;
1997    OMX_U8  frame_packing_arrangement_extension_flag;
1998} OMX_TI_VIDEO_H264VDEC_SeiFramePacking;
1999
2000
2001/**
2002 ******************************************************************************
2003 *  @struct OMX_TI_VIDEO_H264VDEC_SeiMessages
2004 *
2005 *  @brief   This structure contains all the supported SEI msg objects
2006 *
2007 *  @param  parsed_flag :1 - Indicates that in the current process call,
2008 *                           contents of the structure is updated
2009 *                       0 - Indicates contents of the structure is not updated
2010 *  @param  full_frame_freeze : Full-frame freeze SEI message
2011 *  @param  full_frame_freeze_release :Cancels the effect of any full-frame
2012 *             freeze SEI message sent with pictures that precede the current
2013 *             picture in the output order.
2014 *  @param  prog_refine_start :Specifies the beginning of a set of consecutive
2015 *             coded pictures that is labeled as the current picture followed
2016 *             by a sequence of one or more pictures of refinement of the
2017 *             quality of the current picture, rather than as a representation
2018 *             of a continually moving scene.
2019 *  @param  prog_refine_end : Specifies end of progressive refinement.
2020 *  @param  user_data_registered :Message contains user data registered as
2021 *            specified by ITU-T Recommendation T.35
2022 *  @param  user_data_unregistered :Message contains unregistered user data
2023 *            identified by a UUID
2024 *  @param  buffering_period_info :Message specifies the buffering period
2025 *  @param  pan_scan_rect :Message specifies the coordinates of a rectangle
2026 *            relative to the cropping rectangle of the sequence parameter set
2027 *  @param  recovery_pt_info :The recovery point SEI message assists a decoder
2028 *            in determining when the decoding process will produce acceptable
2029 *            pictures for display after the decoder initiates random access or
2030 *            after the encoder indicates a broken link in the sequence.
2031 *  @param  pic_timing :Specifies timing information regarding cpb delays, dpb
2032*              output delay, and so on.
2033 *  @param  stereo_video_info :stereo video information SEI message consist of
2034 *      pair of picture forming stereo view content.
2035 ******************************************************************************
2036*/
2037typedef struct OMX_TI_VIDEO_H264VDEC_SeiMessages {
2038    OMX_U32                                     parsed_flag;
2039    OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRep full_frame_freeze;
2040    OMX_TI_VIDEO_H264VDEC_SeiFullFrameFreezeRel full_frame_freeze_release;
2041    OMX_TI_VIDEO_H264VDEC_SeiProgRefineStart    prog_refine_start;
2042    OMX_TI_VIDEO_H264VDEC_SeiProgRefineEnd      prog_refine_end;
2043    OMX_TI_VIDEO_H264VDEC_SeiUserDataRegITUT    user_data_registered;
2044    OMX_TI_VIDEO_H264VDEC_SeiUserDataUnReg      user_data_unregistered;
2045    OMX_TI_VIDEO_H264VDEC_SeiBufferingPeriod    buffering_period_info;
2046    OMX_TI_VIDEO_H264VDEC_SeiPanScanRect        pan_scan_rect;
2047    OMX_TI_VIDEO_H264VDEC_SeiRecoveryPointInfo  recovery_pt_info;
2048    OMX_TI_VIDEO_H264VDEC_SeiPictureTiming      pic_timing;
2049    OMX_TI_VIDEO_H264VDEC_SeiStereoVideoInfo    stereo_video_info;
2050    OMX_TI_VIDEO_H264VDEC_SeiFramePacking       frame_packing;
2051} OMX_TI_VIDEO_H264VDEC_SeiMessages;
2052
2053
2054/**
2055 ******************************************************************************
2056 *  @struct _sErrConcealStr
2057 *  @brief  This str holds up the required Info for implementing the SCV EC,
2058 *          this will get updated by H.264 decoder while decoding the  SVC
2059 *          Base/Target Layers
2060 *
2061 *  @param  CurrMbInfoBufPointer  :Base Address of the current decoded frame
2062 *                                   MB Info buffer
2063 *
2064 *  @param  CurrMbStatusBufPointer: Base Address of the current decoded frame
2065 *                                   MB staus buffer pointer
2066 *
2067 *  @param  currFrameY            : Base Address of the current decoded Luma
2068 *                                  frame buffer pointer (physical pointer)
2069 *
2070 *  @param  currFrameUV           : Base Address of the current decoded Chroma
2071 *                                  frame buffer pointer (physical pointer)
2072 *
2073 *  @param  refConclY             : Base Address of the ref decoded Luma
2074 *                                  frame buffer pointer (virtual pointer)
2075 *
2076 *  @param  refConclUV            : Base Address of the ref decoded Chroma
2077 *                                  frame buffer pointer (virtual pointer)
2078 *
2079 *  @param  TilerBaseAddress      : TBA vaule for the VDMA
2080 *
2081 *  @param  pSliceInfoFlags       : Flag to enable slice info
2082 *
2083 *  @param  ref_width             : Resultant Horizontal LUMA picture size
2084 *                                  after Pad size addition on both Left
2085 *                                  & Right sides. This gets used as
2086 *                                  stride during vDMA programming.
2087 *                                  In case of TILER,the stride is fixed,
2088 *                                  independant of Picture width, and
2089 *                                  only changes with TILER mode.
2090 *
2091 *  @param  ref_width_c           : Resultant Horizontal CHROMA picture size
2092 *                                  after Pad size addition on both Left &
2093 *                                  Right sides.
2094 *
2095 *
2096 *  @param  ref_frame_height      : In case of Interlaced streams,the picure
2097 *                                  store is different i.e., store each field
2098 *                                  by applying PAD on top & bottom lines.
2099 *                                  Hence the picture height will be Height
2100 *                                  plus four times the Pad size. This
2101 *                                  variable holds this resultant value.
2102 *
2103 *  @param  mb_width              : Picture width in terms of Macroblocks
2104 *
2105 *  @param  mb_height             : Picture height in terms of Macroblocks.
2106 *
2107 *  @param  image_width           : Image width of the decoded frame
2108 *
2109 *  @param  image_width           : Image height of the decoded frame
2110 *
2111 *  @param  frameType             : Frame type of the current frame.
2112 *
2113 *  @param  picaff_frame          : Flag to indicate whether current picture
2114 *                                  is of Frame type & referring to Field
2115 *                                  picture as reference.
2116 *
2117 *  @param  mb_aff_frame_flag     : Flag to indicate whether the current
2118 *                                  decoding picture is MBAFF type.
2119 *
2120 *  @param  field_pic_flag        : Flag to indicate whether the current
2121 *                                  decoding picture is field type.
2122 *
2123 *  @param  bottom_field_flag     : This parameter equal to 1 specifies that
2124 *                                  the slice is part of a coded bottom field.
2125 *                                  bottom_field_flag equalto 0 specifies
2126 *                                  that the picture is a coded top field.
2127 *
2128 *  @param  nonPairedFieldPic     : Flag to indicate Non paired field picture.
2129 *
2130 *  @param  prev_pic_bottom_field : this variable Indicates if the previous
2131 *                                  picture was a bottom field or not (a Flag)
2132 ******************************************************************************
2133*/
2134
2135typedef struct OMX_TI_VIDEO_H264VDEC_ErrConcealStr {
2136    OMX_S32 ErrConcealmentEnable;
2137    OMX_S32 CurrMbInfoBufPointer;
2138    OMX_S32 CurrMbStatusBufPointer;
2139    OMX_S32 CurrMbInfoIresBufPointer;
2140    OMX_S32 currFrameY;
2141    OMX_S32 currFrameUV;
2142    OMX_S32 refConclY;
2143    OMX_S32 refConclUV;
2144    OMX_U32 TilerBaseAddress;
2145    OMX_U16 ref_width;
2146    OMX_U16 ref_width_c;
2147    OMX_U16 ref_frame_height;
2148    OMX_U16 mb_width;
2149    OMX_U16 mb_height;
2150    OMX_U16 image_width;
2151    OMX_U16 image_height;
2152    OMX_U8  frameType;
2153    OMX_U8  picaff_frame;
2154    OMX_U8  mb_aff_frame_flag;
2155    OMX_U8  field_pic_flag;
2156    OMX_U8  bottom_field_flag;
2157    OMX_U8  nonPairedFieldPic;
2158    OMX_U8  prev_pic_bottom_field;
2159}OMX_TI_VIDEO_H264VDEC_ErrConcealStr;
2160
2161/**
2162 *  Size of sliceinfo flags - We have two slice info flag arrays in SL2, one
2163 *  for ECD3 and the other for MC3. ECD3 flag is one bit per MB. Since Maximum
2164 *  supported number of MBs in a frame is 128 x 128 = 16384, we need 16384/8 =
2165 *  2048 bytes for the slice info flag array for ECD3. But for the MC3 array,
2166 *  we always make the next bit also as 1 to enable loading into ping and pong
2167 *  memories of MCBUF. So we need an extra bit for the MC3 array, to avoid
2168 *  buffer overflow when the last MB is a new slice. To keep the next SL2 buffer
2169 *  in 16-byte aligned position (some buffers need it) we round the size to next
2170 *  multiple of 16, i.e., 2064.
2171*/
2172#define OMX_TI_VIDEO_SLICEINFO_FLAGSIZE  2064
2173
2174/**
2175 ******************************************************************************
2176 *  @struct _sErrConcealLayerStr
2177 *  @brief  This str holds up the required Info for implementing the SCV EC,
2178 *          this will get updated by H.264 decoder while decoding the  SVC
2179 *          Base/Target Layers
2180 *
2181 *  @param  svcEcStr              : structure instance of sSVCErrConcealStr
2182 *
2183 *  @param  pSliceInfoFlags       : Array to store the sliceInfo flag
2184 *
2185 *
2186 ******************************************************************************
2187*/
2188typedef struct OMX_TI_VIDEO_H264VDEC_ErrConcealLayerStr {
2189    OMX_TI_VIDEO_H264VDEC_ErrConcealStr sECStr;
2190    OMX_U8                              pSliceInfoFlags[OMX_TI_VIDEO_SLICEINFO_FLAGSIZE];
2191}OMX_TI_VIDEO_H264VDEC_ErrConcealLayerStr;
2192
2193
2194/**
2195 ******************************************************************************
2196 *  @struct OMX_TI_VIDEO_H264VDEC_CommonInfo
2197 *
2198 *  @brief
2199 *
2200 ******************************************************************************
2201*/
2202typedef struct OMX_TI_VIDEO_H264VDEC_CommonInfo {
2203    OMX_U32 codec_type : 8;
2204    OMX_U32 fmt_type : 8;
2205    OMX_U32 mb_ll_avail : 1;
2206    OMX_U32 mb_ul_avail : 1;
2207    OMX_U32 mb_uu_avail : 1;
2208    OMX_U32 mb_ur_avail : 1;
2209    OMX_U32 pic_bound_l : 1;
2210    OMX_U32 pic_bound_u : 1;
2211    OMX_U32 pic_bound_r : 1;
2212    OMX_U32 pic_bound_b : 1;
2213    OMX_U32 first_mb_flag : 1;
2214    OMX_U32 error_flag : 1;
2215    OMX_U32 zero : 6;
2216    OMX_U32 zeroes : 16;
2217    OMX_U32 mb_addr : 16;
2218
2219} OMX_TI_VIDEO_H264VDEC_CommonInfo;
2220
2221/**
2222 ******************************************************************************
2223 *  @struct OMX_TI_VIDEO_H264VDEC_MotionVector
2224 *
2225 *  @brief
2226 *
2227 ******************************************************************************
2228*/
2229typedef struct OMX_TI_VIDEO_H264VDEC_MotionVector {
2230    OMX_S16 x;
2231    OMX_S16 y;
2232} OMX_TI_VIDEO_H264VDEC_MotionVector;
2233
2234/**
2235 ******************************************************************************
2236 *  @struct OMX_TI_VIDEO_H264VDEC_CabacContext
2237 *
2238 *  @brief
2239 *
2240 ******************************************************************************
2241*/
2242typedef struct OMX_TI_VIDEO_H264VDEC_CabacContext {
2243    OMX_TI_VIDEO_H264VDEC_MotionVector mvd_l0[4];
2244    OMX_TI_VIDEO_H264VDEC_MotionVector mvd_l1[4];
2245
2246} OMX_TI_VIDEO_H264VDEC_CabacContext;
2247
2248/**
2249 ******************************************************************************
2250 *  @struct OMX_TI_VIDEO_H264VDEC_TotalCoefLuma
2251 *
2252 *  @brief
2253 *
2254 ******************************************************************************
2255*/
2256typedef struct OMX_TI_VIDEO_H264VDEC_TotalCoefLuma {
2257    OMX_U8 right[3];
2258    OMX_U8 bottom_right;
2259    OMX_U8 bottom[3];
2260    OMX_U8 zero;
2261} OMX_TI_VIDEO_H264VDEC_TotalCoefLuma;
2262
2263/**
2264 ******************************************************************************
2265 *  @struct OMX_TI_VIDEO_H264VDEC_TotalCoefChroma
2266 *
2267 *  @brief
2268 *
2269 ******************************************************************************
2270*/
2271typedef struct OMX_TI_VIDEO_H264VDEC_TotalCoefChroma {
2272    OMX_U8 right_cb;
2273    OMX_U8 bottom_right_cb;
2274    OMX_U8 bottom_cb;
2275    OMX_U8 zero;
2276    OMX_U8 right_cr;
2277    OMX_U8 bottom_right_cr;
2278    OMX_U8 bottom_cr;
2279    OMX_U8 zero1;
2280} OMX_TI_VIDEO_H264VDEC_TotalCoefChroma;
2281
2282/**
2283 ******************************************************************************
2284 *  @struct OMX_TI_VIDEO_H264VDEC_CavlcContext
2285 *
2286 *  @brief
2287 *
2288 ******************************************************************************
2289*/
2290typedef struct OMX_TI_VIDEO_H264VDEC_CavlcContext {
2291    unsigned long long                    zeroes[2];
2292    OMX_TI_VIDEO_H264VDEC_TotalCoefLuma   total_coef_luma;
2293    OMX_TI_VIDEO_H264VDEC_TotalCoefChroma total_coef_chroma;
2294
2295} OMX_TI_VIDEO_H264VDEC_CavlcContext;
2296
2297/**
2298 ******************************************************************************
2299 *  @struct OMX_TI_VIDEO_H264VDEC_IntraPredMode
2300 *
2301 *  @brief
2302 *
2303 ******************************************************************************
2304*/
2305typedef struct OMX_TI_VIDEO_H264VDEC_IntraPredMode {
2306    OMX_U32 ipred_mode0 : 4;
2307    OMX_U32 ipred_mode1 : 4;
2308    OMX_U32 ipred_mode2 : 4;
2309    OMX_U32 ipred_mode3 : 4;
2310    OMX_U32 ipred_mode4 : 4;
2311    OMX_U32 ipred_mode5 : 4;
2312    OMX_U32 ipred_mode6 : 4;
2313    OMX_U32 ipred_mode7 : 4;
2314    OMX_U32 ipred_mode8 : 4;
2315    OMX_U32 ipred_mode9 : 4;
2316    OMX_U32 ipred_mode10 : 4;
2317    OMX_U32 ipred_mode11 : 4;
2318    OMX_U32 ipred_mode12 : 4;
2319    OMX_U32 ipred_mode13 : 4;
2320    OMX_U32 ipred_mode14 : 4;
2321    OMX_U32 ipred_mode15 : 4;
2322
2323} OMX_TI_VIDEO_H264VDEC_IntraPredMode;
2324
2325
2326/**
2327 ******************************************************************************
2328 *  @struct OMX_TI_VIDEO_H264VDEC_MbPredType
2329 *
2330 *  @brief
2331 *
2332 ******************************************************************************
2333*/
2334typedef struct OMX_TI_VIDEO_H264VDEC_MbPredType {
2335    OMX_U32 mbskip : 1;
2336    OMX_U32 tr8x8 : 1;
2337    OMX_U32 mb_field : 1;
2338    OMX_U32 cond_mbskip : 1;
2339    OMX_U32 c_ipred_mode : 2;
2340    OMX_U32 zero : 1;
2341    OMX_U32 end_of_slice : 1;
2342    OMX_U32 mb_y_mod2 : 1;
2343    OMX_U32 zero1 : 7;
2344    OMX_U32 refidx_equal_flag_l0 : 1;
2345    OMX_U32 refidx_equal_flag_l1 : 1;
2346    OMX_U32 mv_equal_flag_l0 : 1;
2347    OMX_U32 mv_equal_flag_l1 : 1;
2348    OMX_U32 zeroes : 4;
2349    OMX_U32 mb_type : 8;
2350    OMX_U8  sub_mb_type[4];
2351
2352} OMX_TI_VIDEO_H264VDEC_MbPredType;
2353
2354/**
2355 ******************************************************************************
2356 *  @struct OMX_TI_VIDEO_H264VDEC_QpCbp
2357 *
2358 *  @brief
2359 *
2360 ******************************************************************************
2361*/
2362typedef struct OMX_TI_VIDEO_H264VDEC_QpCbp {
2363    OMX_U32 cbp;
2364    OMX_U8  qp_y;
2365    OMX_U8  qp_cb;
2366    OMX_U8  qp_cr;
2367    OMX_U8  zero;
2368} OMX_TI_VIDEO_H264VDEC_QpCbp;
2369
2370/**
2371 ******************************************************************************
2372 *  @struct OMX_TI_VIDEO_H264VDEC_RefPicControl
2373 *
2374 *  @brief
2375 *
2376 ******************************************************************************
2377*/
2378typedef struct OMX_TI_VIDEO_H264VDEC_RefPicControl {
2379    OMX_U8 refidx[4];
2380    OMX_U8 refpicid[4];
2381
2382} OMX_TI_VIDEO_H264VDEC_RefPicControl;
2383
2384/**
2385 ******************************************************************************
2386 *  @struct OMX_TI_VIDEO_H264VDEC_MvBidirectional16
2387 *
2388 *  @brief
2389 *
2390 ******************************************************************************
2391*/
2392typedef struct OMX_TI_VIDEO_H264VDEC_MvBidirectional16 {
2393    OMX_TI_VIDEO_H264VDEC_MotionVector mv_forward[16];
2394    OMX_TI_VIDEO_H264VDEC_MotionVector mv_backward[16];
2395} OMX_TI_VIDEO_H264VDEC_MvBidirectional16;
2396
2397
2398/**
2399 ******************************************************************************
2400 *  @struct OMX_TI_VIDEO_H264VDEC_MvBidirectional4
2401 *
2402 *  @brief
2403 *
2404 ******************************************************************************
2405*/
2406typedef struct OMX_TI_VIDEO_H264VDEC_MvBidirectional4 {
2407    OMX_TI_VIDEO_H264VDEC_MotionVector mv_forward[4];
2408    OMX_TI_VIDEO_H264VDEC_MotionVector mv_backward[4];
2409
2410} OMX_TI_VIDEO_H264VDEC_MvBidirectional4;
2411
2412/**
2413 ******************************************************************************
2414 *  @struct OMX_TI_VIDEO_H264VDEC_MbInfo
2415 *
2416 *  @brief  This structure details the data format for MB information shared to
2417 *          application. This helps application to understand all fields
2418 *          the way codec uses MB info internally. This structure is of size
2419 *          208 Bytes.
2420 *
2421 *  @param  info : This elements gives details about the MB placement in the
2422 *                 frame.
2423 *
2424 *  @param  cabac: This field holds the context data for a CABAC coded MB
2425 *
2426 *  @param  cavlc: This field holds the context data for a CAVLC coded MB
2427 *
2428 *  @param  ipred_mode: This field holds information of intra prediction modes
2429 *                      at 4x4 level, for intra coded MB.
2430 *
2431 *  @param  mb_pred_type: This indicates prediction specific details for inter
2432 *                        coded MB
2433 *
2434 *  @param  qp_cbp: This gives coded & QP informations for both LUMA & CHROMA
2435 *                   components of a Macro Block.
2436 *
2437 *  @param  l0_ref_pic_control: Informs all details about reference indices
2438 *                              at 8x8 block level in L0 direction
2439 *
2440 *  @param  l1_ref_pic_control: Informs all details about reference indices
2441 *                              at 8x8 block level in L1 direction
2442 *
2443 *  @param  mv_forward: Lists all Motion vectors at 4x4 level in L0 direction
2444 *
2445 *  @param  bidirectional16: Lists all Motion vectors at 4x4 level in both
2446 *                           directions
2447 *
2448 *  @param  bidirectional4: Lists all Motion vectors at 8x8 level in both
2449 *                          directions
2450 *
2451 ******************************************************************************
2452*/
2453typedef struct OMX_TI_VIDEO_H264VDEC_MbInfo {
2454    OMX_TI_VIDEO_H264VDEC_CommonInfo info;
2455
2456    union {
2457        OMX_TI_VIDEO_H264VDEC_CabacContext cabac;
2458        OMX_TI_VIDEO_H264VDEC_CavlcContext cavlc;
2459    } OMX_TI_VIDEO_H264VDEC_context;
2460
2461    OMX_TI_VIDEO_H264VDEC_IntraPredMode ipred_mode;
2462    OMX_TI_VIDEO_H264VDEC_MbPredType    mb_pred_type;
2463    OMX_TI_VIDEO_H264VDEC_QpCbp         qp_cbp;
2464    OMX_TI_VIDEO_H264VDEC_RefPicControl l0_ref_pic_control;
2465    OMX_TI_VIDEO_H264VDEC_RefPicControl l1_ref_pic_control;
2466
2467    union {
2468        OMX_TI_VIDEO_H264VDEC_MotionVector      mv_forward[16];
2469        OMX_TI_VIDEO_H264VDEC_MvBidirectional16 bidirectional16;
2470        OMX_TI_VIDEO_H264VDEC_MvBidirectional4  bidirectional4;
2471    } OMX_TI_VIDEO_H264VDEC_motion_vecs;
2472
2473} OMX_TI_VIDEO_H264VDEC_MbInfo;
2474
2475
2476
2477/**
2478********************************************************************************
2479*  @struct  OMX_TI_VIDEO_VC1VDEC_MbInfo
2480*
2481*  @brief   MB information structure that is written out by the IVA-HD hardware.
2482*
2483*  @note    None:
2484*
2485********************************************************************************
2486*/
2487typedef struct OMX_TI_VIDEO_VC1VDEC_MbInfo {
2488    /* MB address                                                               */
2489    OMX_U8 mb_addr;
2490    /* Error flag                                                               */
2491    OMX_U8 error_flag;
2492    /* First MB flag                                                            */
2493    OMX_U8 first_mb_flag;
2494    /* Picture bound                                                            */
2495    OMX_U8 pic_bound_b;
2496    /* Upper picture bound                                                      */
2497    OMX_U8 pic_bound_u;
2498    /* Right picture bound                                                      */
2499    OMX_U8 pic_bound_r;
2500    /* Left picture bound                                                       */
2501    OMX_U8 pic_bound_l;
2502    /* Availability of upper right MB                                           */
2503    OMX_U8 mb_ur_avail;
2504    /* Availability of upper MB                                                 */
2505    OMX_U8 mb_uu_avail;
2506    /* Availability of upper left MB                                            */
2507    OMX_U8 mb_ul_avail;
2508    /* Availability of left MB                                                  */
2509    OMX_U8 mb_ll_avail;
2510    /* Macroblock header format type                                            */
2511    OMX_U8 fmt_type;
2512    /* Codec type                                                               */
2513    OMX_U8 codec_type;
2514    /* Indicates DC values of each Y block in current MB                        */
2515    OMX_U8 dc_coef_q_y[4];
2516    /* Indicates DC values of Cr block in current MB                            */
2517    OMX_U8 dc_coef_q_cr;
2518    /* Indicates DC values of Cb block in current MB                            */
2519    OMX_U8 dc_coef_q_cb;
2520    /* Block type of cr block                                                   */
2521    OMX_U8 block_type_cr;
2522    /* Block type of cb block                                                   */
2523    OMX_U8 block_type_cb;
2524    /* Block types of luma                                                      */
2525    OMX_U8 block_type_y[4];
2526    /* In decoding, if the current macroblock is the last macroblock in a slice,*/
2527    /* ECD sets 1 to this field during executing the macroblock. Otherwise, ECD */
2528    /* sets 0 to this field                                                     */
2529    OMX_U8 end_of_slice;
2530    /* 1 : allow skipping current MB if CBP = 0                                 */
2531    OMX_U8 cond_skip_flag;
2532    /*  Skipped / non skipped MB                                                */
2533    OMX_U8 skip;
2534    /* 1 indicates that overlap filtering is in use for the macroblock.         */
2535    OMX_U8 overlap;
2536    /* 1 indicates that AC prediction is in use for the macroblock              */
2537    OMX_U8 acpred;
2538    /* Denotes inter-prediction direction for the macroblock in B-picture       */
2539    OMX_U8 b_picture_direction;
2540    /* Denotes the number of motion vectors.                                    */
2541    OMX_U8 mv_mode;
2542    /* 1 indicates that the field transform is in use for the macroblock.       */
2543    OMX_U8 fieldtx;
2544    /* 1 indicates that field inter-prediction is in use                        */
2545    OMX_U8 mv_type;
2546    /* Equals the reference frame distance                                      */
2547    OMX_U8 refdist;
2548    /* 1 indicates that macroblock quantizer-scale (MQUANT) overflows           */
2549    OMX_U8 mquant_overflow;
2550    /* Equals the quantizer-scale for the macroblock                            */
2551    OMX_U8 quant;
2552    /* 1 indicates that 0.5 shall be added to PQUANT in calculation of          */
2553    /* quantizer-scale. This field is valid for decoding only.                  */
2554    OMX_U8 halfqp;
2555    /* Equals the DC coefficient step size which is derived from MQUANT in the  */
2556    /*   bit-stream                                                             */
2557    OMX_U8 dc_step_size;
2558    /* Denotes the coded sub-block pattern for cr block                         */
2559    OMX_U8 cbp_cr;
2560    /* Denotes the coded sub-block pattern for cb block                         */
2561    OMX_U8 cbp_cb;
2562    /* Denotes the coded sub-block pattern for luma blocks                      */
2563    OMX_U8 cbp_y[3];
2564    /* Denotes the backward reference field picture                             */
2565    OMX_U8 mv_bw_ref_y[4];
2566    /* Denotes the forward reference field picture                              */
2567    OMX_U8 mv_fw_ref_y[3];
2568    /* Unclipped forward motion vector for luma                                 */
2569    OMX_U8 mv_fw_y[4][4];
2570    /* Unclipped backward motion vector for luma                                */
2571    OMX_U8 mv_bw_y[1][1];
2572    /* Unclipped backward motion vector for chroma                              */
2573    OMX_U8 mv_bw_c[2];
2574    /* Unclipped forward motion vector for chroma                               */
2575    OMX_U8 mv_fw_c[2];
2576    /* Clipped forward motion vector for luma                                   */
2577    OMX_U8 cmv_fw_y[4][4];
2578    /* Clipped backward motion vector for luma                                  */
2579    OMX_U8 cmv_bw_y[4][4];
2580    /* Clipped forward motion vector for chroma                                 */
2581    OMX_U8 cmv_fw_c[4][4];
2582    /* Clipped backward motion vector for chroma                                */
2583    OMX_U8 cmv_bw_c[4][4];
2584
2585}OMX_TI_VIDEO_VC1VDEC_MbInfo;
2586
2587#endif /* OMX_TI_VIDEO_H */
2588
2589