1 2/* 3 * Copyright (C) Texas Instruments - http://www.ti.com/ 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this library; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21/* ============================================================================= 22* Texas Instruments OMAP(TM) Platform Software 23* (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 24* 25* Use of this software is controlled by the terms and conditions found 26* in the license agreement under which this software has been supplied. 27* =========================================================================== */ 28/** 29* @file OMX_VIDDEC_DSP.h 30* 31* This is a header file for a TI OMX video component that is fully 32* compliant with the OMX Video specification. 33* This the file that the application that uses OMX would include 34* in its code. 35* 36* @path $(CSLPATH)\ 37* 38* @rev 0.1 39*/ 40/* -------------------------------------------------------------------------- */ 41 42#ifndef OMX_VIDDEC_DSP__H 43#define OMX_VIDDEC_DSP__H 44 45#define OMX_H264DEC_NUM_DLLS 5 46#define OMX_MP4DEC_NUM_DLLS 5 47#define OMX_MP2DEC_NUM_DLLS 4 48#define OMX_WMVDEC_NUM_DLLS 5 49 #ifdef VIDDEC_SPARK_CODE 50 #define OMX_SPARKDEC_NUM_DLLS 5 51 #endif 52 53#ifndef VIDDEC_SN_R8_14 54 #define VIDDEC_SN_R8_14 55#endif 56 57#ifndef UNDER_CE 58 #define H264_DEC_NODE_DLL "h264vdec_sn.dll64P" 59 #define MP4_DEC_NODE_DLL "mp4vdec_sn.dll64P" 60 #define MP4720P_DEC_NODE_DLL "mpeg4aridec_sn.dll64P" 61 #define MP2_DEC_NODE_DLL "mp2vdec_sn.dll64P" 62 #define WMV_DEC_NODE_DLL "wmv9dec_sn.dll64P" 63 #define RINGIO_NODE_DLL "ringio.dll64P" 64 #define USN_DLL "usn.dll64P" 65 #define CONVERSIONS_DLL "conversions.dll64P" 66 #ifdef VIDDEC_SPARK_CODE 67 #define SPARK_DEC_NODE_DLL "sparkdec_sn.dll64P" 68 #endif 69#else 70 #define H264_DEC_NODE_DLL "\\windows\\h264vdec_sn.dll64P" 71 #define MP4_DEC_NODE_DLL "\\windows\\mp4vdec_sn.dll64P" 72 #define MP2_DEC_NODE_DLL "\\windows\\mp2vdec_sn.dll64P" 73 #define WMV_DEC_NODE_DLL "\\windows\\wmv9dec_sn.dll64P" 74 #define RINGIO_NODE_DLL "\\windows\\ringio.dll64P" 75 #define USN_DLL "\\windows\\usn.dll64P" 76 #define CONVERSIONS_DLL "\\windows\\conversions.dll64P" 77 #ifdef VIDDEC_SPARK_CODE 78 #define SPARK_DEC_NODE_DLL "\\windows\\sparkdec_sn.dll64P" 79 #endif 80#endif 81 82#define CEILING_1000X(x) ((OMX_U32)(x) + (1000-(OMX_U32)(x)%1000)) 83 84#define STRING_UUID_LENGHT 37 85/* DIVX_1.0_ARICENT_uuid */ 86#define STRING_MP4D720PSOCKET_TI_UUID "E7FDD4D8_4F0B_4325_A430_E5729975F54A" 87static const struct DSP_UUID MP4D720PSOCKET_TI_UUID = { 88 0xe7fdd4d8, 0x4f0b, 0x4325, 0xa4, 0x30, { 89 0xe5, 0x72, 0x99, 0x75, 0xf5, 0x4a 90 } 91}; 92/* MP4VDSOCKET_TI_UUID = 7E4B8541_47A1_11D6_B156_00B0D017674B */ 93#define STRING_MP4DSOCKET_TI_UUID "7E4B8541_47A1_11D6_B156_00B0D017674B" 94static const struct DSP_UUID MP4DSOCKET_TI_UUID = { 95 0x7e4b8541, 0x47a1, 0x11d6, 0xb1, 0x56, { 96 0x00, 0xb0, 0xd0, 0x17, 0x67, 0x4b 97 } 98}; 99/* MP2VDSOCKET_TI_UUID = 7E4B8541_47A1_11D6_B156_00B0D0176740 */ 100#define STRING_MP2DSOCKET_TI_UUID "7E4B8541_47A1_11D6_B156_00B0D0176740" 101static const struct DSP_UUID MP2DSOCKET_TI_UUID = { 102 0x7e4b8541, 0x47a1, 0x11d6, 0xb1, 0x56, { 103 0x00, 0xb0, 0xd0, 0x17, 0x67, 0x40 104 } 105}; 106/* H264VDSOCKET_TI_UUID = CB1E9F0F_9D5A_4434_8449_1FED2F992DF7 */ 107#define STRING_H264VDSOCKET_TI_UUID "CB1E9F0F_9D5A_4434_8449_1FED2F992DF7" 108static const struct DSP_UUID H264VDSOCKET_TI_UUID = { 109 0xCB1E9F0F, 0x9D5A, 0x4434, 0x84, 0x49, { 110 0x1F, 0xED, 0x2F, 0x99, 0x2D, 0xF7 111 } 112}; 113/* WMV9SOCKET_TI_UUID = 609DAB97_3DFC_471F_8AB9_4E56E834501B */ 114#define STRING_WMVDSOCKET_TI_UUID "609DAB97_3DFC_471F_8AB9_4E56E834501B" 115static const struct DSP_UUID WMVDSOCKET_TI_UUID = { 116 0x609DAB97, 0x3DFC, 0x471F, 0x8A, 0xB9, { 117 0x4E, 0x56, 0xE8, 0x34, 0x50, 0x1B 118 } 119}; 120 121static const struct DSP_UUID USN_UUID = { 122 0x79A3C8B3, 0x95F2, 0x403F, 0x9A, 0x4B, { 123 0xCF, 0x80, 0x57, 0x73, 0x05, 0x41 124 } 125}; 126 127static const struct DSP_UUID RINGIO_TI_UUID = { 128 0x47698bfb, 0xa7ee, 0x417e, 0xa6, 0x7a, { 129 0x41, 0xc0, 0x27, 0x9e, 0xb8, 0x05 130 } 131}; 132 133static const struct DSP_UUID CONVERSIONS_UUID = { 134 0x722DD0DA, 0xF532, 0x4238, 0xB8, 0x46, { 135 0xAB, 0xFF, 0x5D, 0xA4, 0xBA, 0x02 136 } 137}; 138 139#ifdef VIDDEC_SPARK_CODE 140 #define STRING_SPARKDSOCKET_TI_UUID "DD8AC7F0_33BF_446B_938E_FDF00B467ED6" 141 static const struct DSP_UUID SPARKDSOCKET_TI_UUID = { 142 0xdd8ac7f0, 0x33bf, 0x446b, 0x93, 0x8e, { 143 0xfd, 0xf0, 0x0b, 0x46, 0x7e, 0xd6 144 } 145 }; 146#endif 147 148typedef struct WMV9DEC_SNCreatePhArg { 149 OMX_U16 unNumOfStreams; 150 OMX_U16 unInputStreamID; 151 OMX_U16 unInputBufferType; 152 OMX_U16 unInputNumBufsPerStream; 153 154 OMX_U16 unOutputStreamID; 155 OMX_U16 unOutputBufferType; 156 OMX_U16 unOutputNumBufsPerStream; 157 OMX_U16 unReserved; 158 159 OMX_U32 ulMaxWidth; 160 OMX_U32 ulMaxHeight; 161 OMX_U32 ulYUVFormat; 162 OMX_U32 ulMaxFrameRate; 163 OMX_U32 ulMaxBitRate; 164 OMX_U32 ulDataEndianness; 165 OMX_S32 ulProfile; 166 OMX_S32 ulMaxLevel; 167 OMX_U32 ulProcessMode; 168 OMX_S32 lPreRollBufConfig; 169 OMX_U32 usIsElementaryStream; 170 OMX_U32 bCopiedCCDBuffer; 171 OMX_U16 endArgs; 172} WMV9DEC_SNCreatePhArg; 173 174typedef struct { 175 OMX_S32 lBuffCount; 176} WMV9DEC_UALGInputParam; 177 178typedef struct { 179 OMX_U32 ulDisplayID; 180 OMX_U32 ulBytesConsumed; 181 OMX_S32 iErrorCode; 182 OMX_U32 ulDecodedFrameType; 183} WMV9DEC_UALGOutputParam; 184 185/* Mpeg4 Decoder Structures */ 186typedef enum 187{ 188 /* 0 */ 189 DECSTAT_Success, 190 /* 0x80000001 */ DECSTAT_Failure = -0x7FFFFFFF, 191 /* 0x80000002 */ DECSTAT_nonMpegStream, 192 /* 0x80000003 */ DECSTAT_nonVideoMpegStream, 193 /* 0x80000004 */ DECSTAT_unSupportedProfile, 194 /* 0x80000005 */ DECSTAT_invalidBitstreamAddress, 195 /* 0x80000006 */ DECSTAT_invalidVideoObjectLayerStartCode, 196 /* 0x80000007 */ DECSTAT_nullBitstreamAddress, 197 /* 0x80000008 */ DECSTAT_insufficientData, 198 /* 0x80000009 */ DECSTAT_unsupportedVOL_verid, 199 /* 0x8000000A */ DECSTAT_invalidAspectRatio, 200 /* 0x8000000B */ DECSTAT_invalidChromaFormat, 201 /* 0x8000000C */ DECSTAT_unsupportedVOLShape, 202 /* 0x8000000D */ DECSTAT_invalidVOPTimeIncrementResolution, 203 /* 0x8000000E */ DECSTAT_unsupportedFeatureInterlaced, 204 /* 0x8000000F */ DECSTAT_unsupportedFeatureOBMC, 205 /* 0x80000010 */ DECSTAT_unsupportedVideoDataPrecision, 206 /* 0x80000011 */ DECSTAT_unsupportedObjectType, 207 /* 0x80000012 */ DECSTAT_unsupportedFirstQuantMethod, 208 /* 0x80000013 */ DECSTAT_unsupportedFeatureScalability, 209 /* 0x80000014 */ DECSTAT_invalidCallingOrder, 210 /* 0x80000015 */ DECSTAT_invalidVideoObjectSC, 211 /* 0x80000016 */ DECSTAT_invalidVOPSC, 212 /* 0x80000017 */ DECSTAT_invalidQuant, 213 /* 0x80000018 */ DECSTAT_invalidFcode, 214 /* 0x80000019 */ DECSTAT_invalidMBnumInVPH, 215 /* 0x8000001A */ DECSTAT_endOfSequence, 216 /* 0x8000001B */ DECSTAT_invalidGOBnum, 217 /* 0x8000001C */ DECSTAT_corruptedHeader, 218 /* 0x8000001D */ DECSTAT_corruptedBitStream, 219 /* 0x8000001E */ DECSTAT_unsupportedFeatureBFrames, 220 /* 0x8000001F */ DECSTAT_unsupportedFeatureSprite, 221 /* 0x80000020 */ DECSTAT_duringInitialization, 222 /* 0x80000021 */ DECSTAT_initSuccess, 223 /* 0x80000022 */ DECSTAT_noError, 224 /* 0x80000023 */ DECSTAT_unsupportedFeatureQuarterPel, 225 /* 0x80000024 */ DECSTAT_exceededResolution 226} DEC_STATUS; 227 228typedef struct MP2VDEC_SNCreatePhArg 229{ 230 OMX_U16 unNumOfStreams; 231 OMX_U16 unInputStreamID; 232 OMX_U16 unInputBufferType; 233 OMX_U16 unInputNumBufsPerStream; 234 OMX_U16 unOutputStreamID; 235 OMX_U16 unOutputBufferType; 236 OMX_U16 unOutputNumBufsPerStream; 237 OMX_U16 unReserved; 238 239 OMX_U32 ulMaxWidth; 240 OMX_U32 ulMaxHeight; 241 OMX_U32 ulYUVFormat; 242 OMX_U32 ulMaxFrameRate; 243 OMX_U32 ulMaxBitRate; 244 OMX_U32 ulDataEndianness; 245 OMX_U32 ulProfile; 246 OMX_S32 lMaxLevel; 247 OMX_U32 ulProcessMode; 248 OMX_S32 lPreRollBufConfig; 249 OMX_U32 ulDisplayWidth; 250 OMX_U16 endArgs; 251} MP2VDEC_SNCreatePhArg; 252 253typedef struct 254{ 255 OMX_S32 lBuffCount; 256 257} MP2VDEC_UALGInputParam; 258 259typedef struct 260{ 261 OMX_U32 ulDisplayID; 262 OMX_U32 ulBytesConsumed; 263 OMX_S32 lErrorCode; 264 OMX_U32 ulDecodedFrameType; 265 OMX_U32 ulQP[(640 * 480) / 256]; 266} MP2VDEC_UALGOutputParam; 267 268typedef struct MP4VD_GPP_SN_Obj_CreatePhase { 269 OMX_U16 unNumOfStreams; 270 OMX_U16 unInputStreamID; 271 OMX_U16 unInputBufferType; 272 OMX_U16 unlInputNumBufsPerStream; 273 274 OMX_U16 unOutputStreamID; 275 OMX_U16 unOutputBufferType; 276 OMX_U16 unOutputNumBufsPerStream; 277 OMX_U16 unReserved; 278 279 OMX_U32 ulMaxWidth; 280 OMX_U32 ulMaxHeight; 281 OMX_U32 ulYUVFormat; 282 OMX_U32 ulMaxFrameRate; 283 OMX_U32 ulMaxBitRate; 284 OMX_U32 ulDataEndianness; 285 OMX_U32 ulProfile; 286 OMX_S32 ulMaxLevel; 287 OMX_U32 ulProcessMode; 288 OMX_S32 ulPreRollBufConfig; 289 OMX_U32 ulDisplayWidth; 290 OMX_U16 endArgs; 291} MP4VD_GPP_SN_Obj_CreatePhase; 292 293typedef struct 294{ 295 OMX_S32 nBuffCount; 296 OMX_U32 uRingIOBlocksize; 297 OMX_S32 nPerformMode; 298} MP4VD_GPP_SN_UALGInputParams; 299 300typedef struct 301{ 302 OMX_U32 ulDisplayID; 303 OMX_U32 uBytesConsumed; 304 OMX_S32 iErrorCode; 305 OMX_U32 ulDecodedFrameType; 306 OMX_U32 ulQP[(720 * 576) / 256]; 307 OMX_S32 lMbErrorBufFlag; 308 OMX_U8 usMbErrorBuf[(720 * 576) / 256]; 309 310} MP4VD_GPP_SN_UALGOutputParams; 311 312typedef struct H264VDEC_SNCreatePhArg { 313 OMX_U16 unNumOfStreams; 314 OMX_U16 unInputStreamID; 315 OMX_U16 unInputBufferType; 316 OMX_U16 unInputNumBufsPerStream; 317 318 OMX_U16 unOutputStreamID; 319 OMX_U16 unOutputBufferType; 320 OMX_U16 unOutputNumBufsPerStream; 321 OMX_U16 unReserved; 322 323 OMX_U32 ulMaxWidth; 324 OMX_U32 ulMaxHeight; 325 OMX_U32 ulYUVFormat; 326 OMX_U32 ulMaxFrameRate; 327 OMX_U32 ulMaxBitRate; 328 OMX_U32 ulDataEndianness; 329 OMX_U32 ulProfile; 330 OMX_S32 ulMaxLevel; 331 OMX_U32 ulProcessMode; 332 OMX_S32 lPreRollBufConfig; 333 OMX_U32 ulBitStreamFormat; 334 OMX_U32 ulDisplayWidth; 335 OMX_U16 endArgs; 336} H264VDEC_SNCreatePhArg; 337 338typedef struct { 339 OMX_S32 lBuffCount; 340#if 1 341 OMX_U32 ulNumOfNALU; 342 OMX_U32 pNALUSizeArray[H264VDEC_SN_MAX_NALUNITS]; 343/* OMX_U32 *pNALUSizeArray;*/ 344#endif 345} H264VDEC_UALGInputParam; 346 347#define H264VDEC_SN_MAX_MB_NUMBER 1620 348 349typedef struct { 350 OMX_U32 ulDisplayID; 351 OMX_U32 ulBytesConsumed; 352 OMX_S32 iErrorCode; 353 OMX_U32 ulDecodedFrameType; 354#if 1 355 OMX_U32 ulNumOfNALUDecoded; 356 OMX_S32 lMBErrStatFlag; 357 OMX_U8 pMBErrStatOutBuf[H264VDEC_SN_MAX_MB_NUMBER]; 358#endif 359} H264VDEC_UALGOutputParam; 360#ifdef VIDDEC_SPARK_CODE 361typedef struct SPARKVD_GPP_SN_Obj_CreatePhase { 362 OMX_U16 unNumOfStreams; 363 OMX_U16 unInputStreamID; 364 OMX_U16 unInputBufferType; 365 OMX_U16 unlInputNumBufsPerStream; 366 367 OMX_U16 unOutputStreamID; 368 OMX_U16 unOutputBufferType; 369 OMX_U16 unOutputNumBufsPerStream; 370 371 OMX_U32 ulMaxWidth; 372 OMX_U32 ulMaxHeight; 373 OMX_U32 ulYUVFormat; 374 OMX_U32 ulMaxFrameRate; 375 OMX_U32 ulMaxBitRate; 376 OMX_U32 ulDataEndianness; 377 OMX_U32 ulProfile; 378 OMX_S32 ulMaxLevel; 379 OMX_U32 ulProcessMode; 380 OMX_S32 ulPreRollBufConfig; 381 OMX_U16 endArgs; 382} SPARKVD_GPP_SN_Obj_CreatePhase; 383 384typedef struct SPARKVD_GPP_SN_UALGInputParams 385{ 386 long int lBuffCount; 387 long int nIsSparkInput; 388} SPARKVD_GPP_SN_UALGInputParams; 389 390typedef struct SPARKVD_GPP_SN_UALGOutputParams 391{ 392 OMX_U32 ulDisplayID; 393 OMX_U32 uBytesConsumed; 394 OMX_S32 iErrorCode; 395 OMX_U32 ulDecodedFrameType; 396 OMX_U32 ulQP[(720 * 576) / 256]; 397} SPARKVD_GPP_SN_UALGOutputParams; 398#endif 399 400typedef enum { 401 USN_DSPACK_STOP = 0x0200, 402 USN_DSPACK_PAUSE = 0x0300, 403 USN_DSPACK_ALGCTRL = 0x0400, 404 USN_DSPACK_STRMCTRL = 0x0500, 405 USN_DSPMSG_BUFF_FREE = 0x0600, 406 USN_DSPACK_SET_STRM_NODE = 0x0700, 407 USN_DSPACK_GET_NODE_PTR = 0x0800, 408 USN_DSPMSG_EVENT = 0x0E00 409}USN_NodeToHostCmd; 410 411typedef enum { 412 USN_ERR_NONE, 413 USN_ERR_WARNING, 414 USN_ERR_PROCESS, 415 USN_ERR_PAUSE, 416 USN_ERR_STOP, 417 USN_ERR_ALGCTRL, 418 USN_ERR_STRMCTRL, 419 USN_ERR_UNKNOWN_MSG 420} USN_ErrTypes; 421 422typedef enum { 423 IUALG_OK = 0x0000, 424 IUALG_WARN_CONCEALED = 0x0100, 425 IUALG_WARN_UNDERFLOW = 0x0200, 426 IUALG_WARN_OVERFLOW = 0x0300, 427 IUALG_WARN_ENDOFDATA = 0x0400, 428 IUALG_WARN_PLAYCOMPLETED = 0x0500, 429 IUALG_ERR_BAD_HANDLE = 0x0F00, 430 IUALG_ERR_DATA_CORRUPT = 0x0F01, 431 IUALG_ERR_NOT_SUPPORTED = 0x0F02, 432 IUALG_ERR_ARGUMENT = 0x0F03, 433 IUALG_ERR_NOT_READY = 0x0F04, 434 IUALG_ERR_GENERAL = 0x0FFF 435}IUALG_Event; 436 437typedef enum { 438 USN_STRMCMD_PLAY, 439 USN_STRMCMD_PAUSE, 440 USN_STRMCMD_STOP, 441 USN_STRMCMD_SETCODECPARAMS, 442 USN_STRMCMD_IDLE, 443 USN_STRMCMD_FLUSH 444}USN_StrmCmd; 445 446/* 447 * ======== VIDDEC_FrameType ======== 448 * XDM supported frame types for video 449 */ 450typedef enum { 451 VIDDEC_I_FRAME =0, VIDDEC_P_FRAME, VIDDEC_B_FRAME, 452 VIDDEC_IDR_FRAME 453} VIDDEC_FrameType; 454 455#define OMX_VIDDEC_1_1 456#ifdef OMX_VIDDEC_1_1 457 #define OMX_BUFFERFLAG_SYNCFRAME 0x00000020 458#endif 459#define VIDDEC_BUFFERFLAG_FRAMETYPE_MASK 0xF0000000 460#define VIDDEC_BUFFERFLAG_FRAMETYPE_I_FRAME 0x10000000 461#define VIDDEC_BUFFERFLAG_FRAMETYPE_P_FRAME 0x20000000 462#define VIDDEC_BUFFERFLAG_FRAMETYPE_B_FRAME 0x40000000 463#define VIDDEC_BUFFERFLAG_FRAMETYPE_IDR_FRAME 0x80000000 464 465#define VIDDEC_BUFFERFLAG_EXTENDERROR_MASK 0x0FFFF000 466#define VIDDEC_BUFFERFLAG_EXTENDERROR_DIRTY 0x000FF000 467#define VIDDEC_BUFFERFLAG_EXTENDERROR_APPLIEDCONCEALMENT 0x00200000 468#define VIDDEC_BUFFERFLAG_EXTENDERROR_INSUFFICIENTDATA 0x00400000 469#define VIDDEC_BUFFERFLAG_EXTENDERROR_CORRUPTEDDATA 0x00800000 470#define VIDDEC_BUFFERFLAG_EXTENDERROR_CORRUPTEDHEADER 0x01000000 471#define VIDDEC_BUFFERFLAG_EXTENDERROR_UNSUPPORTEDINPUT 0x02000000 472#define VIDDEC_BUFFERFLAG_EXTENDERROR_UNSUPPORTEDPARAM 0x04000000 473#define VIDDEC_BUFFERFLAG_EXTENDERROR_FATALERROR 0x08000000 474 475/* 476 * Extended error enumeration for XDM compliant encoders and decoders: 477 * 478 * Bit 16-32 : Reserved 479 * Bit XDM_FATALERROR: 1 => Fatal error (Stop decoding) 480 * 0 => Recoverable error 481 * Bit XDM_UNSUPPORTEDPARAM: 1 => Unsupported input parameter or configuration 482 * 0 => Ignore 483 * Bit XDM_UNSUPPORTEDINPUT: 1 => Unsupported feature/ parameter in input, 484 * 0 => Ignore 485 * Bit XDM_CORRUPTEDHEADER: 1 => Header problem/ corruption, 486 * 0 => Ignore 487 * Bit XDM_CORRUPTEDDATA: 1 => Data problem /corruption, 488 * 0 => Ignore 489 * Bit XDM_INSUFFICIENTDATA: 1 => Insufficient data, 490 * 0 => Ignore 491 * Bit XDM_APPLIEDCONCEALMENT: 1 => Applied concelement, 492 * 0=> Ignore 493 * Bit 8 : Reserved 494 * Bit 7-0 : Codec & Implementation specific 495 * 496 * Notes : 497 * ===== 498 * 1) Algorithm will set multiple bits to 1 based on conditions. 499 * e.g. it will set bits XDM_FATALERROR (fatal) and XDM_UNSUPPORTEDPARAM 500 * (unsupported params) in case of unsupported run time parameters 501 * 2) Some erors are applicable to decoders only. 502 */ 503typedef enum { 504 VIDDEC_XDM_APPLIEDCONCEALMENT=9, VIDDEC_XDM_INSUFFICIENTDATA=10, VIDDEC_XDM_CORRUPTEDDATA=11, 505 VIDDEC_XDM_CORRUPTEDHEADER=12, VIDDEC_XDM_UNSUPPORTEDINPUT=13, VIDDEC_XDM_UNSUPPORTEDPARAM=14, 506 VIDDEC_XDM_FATALERROR=15 507} VIDDEC_XDM_ErrorBit; 508 509#define VIDDEC_ISFLAGSET(x,y) (((x)>>(y)) & 0x1) 510/*#define VIDDEC_ISFLAGSET(x,y) ((((OMX_S32*)(x))>>((OMX_S32*)(y))) & 0x1) */ 511 512/** @enum M4H3DEC_TI_ERROR */ 513typedef enum { 514 /* 00 */ M4H3DEC_TI_ERROR_Success = 0, 515 /* 01 */ M4H3DEC_TI_ERROR_Failure , 516 /* 02 */ M4H3DEC_TI_ERROR_nonMpegStream, 517 /* 03 */ M4H3DEC_TI_ERROR_nonVideoMpegStream, 518 /* 04 */ M4H3DEC_TI_ERROR_unSupportedProfile, 519 /* 05 */ M4H3DEC_TI_ERROR_invalidBitstreamAddress, 520 /* 06 */ M4H3DEC_TI_ERROR_invalidVideoObjectLayerStartCode, 521 /* 07 */ M4H3DEC_TI_ERROR_nullBitstreamAddress, 522 /* 08 */ M4H3DEC_TI_ERROR_insufficientData, 523 /* 09 */ M4H3DEC_TI_ERROR_unsupportedVOL_verid, 524 /* 10 */ M4H3DEC_TI_ERROR_invalidAspectRatio, 525 /* 11 */ M4H3DEC_TI_ERROR_invalidChromaFormat, 526 /* 12 */ M4H3DEC_TI_ERROR_unsupportedVOLShape, 527 /* 13 */ M4H3DEC_TI_ERROR_invalidVOPTimeIncrementResolution, 528 /* 14 */ M4H3DEC_TI_ERROR_unsupportedFeatureInterlaced, 529 /* 15 */ M4H3DEC_TI_ERROR_unsupportedFeatureOBMC, 530 /* 16 */ M4H3DEC_TI_ERROR_unsupportedVideoDataPrecision, 531 /* 17 */ M4H3DEC_TI_ERROR_unsupportedObjectType, 532 /* 18 */ M4H3DEC_TI_ERROR_unsupportedFirstQuantMethod, 533 /* 19 */ M4H3DEC_TI_ERROR_unsupportedFeatureScalability, 534 /* 20 */ M4H3DEC_TI_ERROR_invalidCallingOrder, 535 /* 21 */ M4H3DEC_TI_ERROR_invalidVideoObjectSC, 536 /* 22 */ M4H3DEC_TI_ERROR_invalidVOPSC, 537 /* 23 */ M4H3DEC_TI_ERROR_invalidQuant, 538 /* 24 */ M4H3DEC_TI_ERROR_invalidFcode, 539 /* 25 */ M4H3DEC_TI_ERROR_invalidMBnumInVPH, 540 /* 26 */ M4H3DEC_TI_ERROR_endOfSequence, 541 /* 27 */ M4H3DEC_TI_ERROR_invalidGOBnum, 542 /* 28 */ M4H3DEC_TI_ERROR_corruptedHeader, 543 /* 29 */ M4H3DEC_TI_ERROR_corruptedBitStream, 544 /* 30 */ M4H3DEC_TI_ERROR_unsupportedFeatureBFrames, 545 /* 31 */ M4H3DEC_TI_ERROR_unsupportedFeatureSprite, 546 /* 32 */ M4H3DEC_TI_ERROR_unsupportedFeatureQuarterPel, 547 /* 33 */ M4H3DEC_TI_ERROR_exceededResolution, 548 /* 34 */ M4H3DEC_TI_ERROR_unsupportedFeatureIntraDcVlcThreshold, 549 /* 35 */ M4H3DEC_TI_ERROR_invalidValue, 550 /* 36 */ M4H3DEC_TI_ERROR_stuffingInMB, 551 /* 37 */ M4H3DEC_TI_ERROR_numMbRowsInVpExceeded, 552 /* 38 */ M4H3DEC_TI_ERROR_cannotdecodempeg4, 553 /* 39 */ M4H3DEC_TI_ERROR_incorrectWidthHeight, 554 /* 40 */ M4H3DEC_TI_ERROR_insufficientMemory, 555} VIDDEC_M4H3DEC_TI_ERROR; 556 557/* ======================================================================= */ 558/* WMV9DEC_UALGDynamicParams - This structure defines the run-time algorithm 559 * specific and UALG parameters which can be configured. 560 * 561 * @param ulDecodeHeader :Parse header. 562 * 563 * @param ulDisplayWidth :Pitch value. Used as pitch only if this value 564 * is greater than Video width. 565 * 566 * @param ulFrameSkipMode :Frame skip mode. 567 * 568 * @param ulPPType :Post-processing type required. 569 * 570 */ 571/* ==================================================================== */ 572typedef struct WMV9DEC_UALGDynamicParams 573{ 574#ifdef VIDDEC_SN_R8_14 575 OMX_S32 size; 576#endif 577 OMX_U32 ulDecodeHeader; 578 OMX_U32 ulDisplayWidth; 579 OMX_U32 ulFrameSkipMode; 580 OMX_U32 ulPPType; 581 OMX_U16 usIsElementaryStream; 582 583}WMV9DEC_UALGDynamicParams; 584 585typedef struct H264_Iualg_Cmd_SetStatus 586{ 587#ifdef VIDDEC_SN_R8_14 588 OMX_S32 size; 589#endif 590 OMX_U32 ulDecodeHeader; 591 OMX_U32 ulDisplayWidth; 592 OMX_U32 ulFrameSkipMode; 593 OMX_U32 ulPPType; 594 595/*#if defined(WMV9PGIN) */ 596 /* OMX_U16 usIsElementaryStream; */ 597/*#endif */ 598} H264_Iualg_Cmd_SetStatus; 599 600typedef struct MP4VDEC_UALGDynamicParams 601{ 602#ifdef VIDDEC_SN_R8_14 603 OMX_S32 size; 604#endif 605 OMX_U32 ulDecodeHeader; 606 OMX_U32 ulDisplayWidth; 607 OMX_U32 ulFrameSkipMode; 608 OMX_U32 ulPPType; 609 OMX_BOOL useHighPrecIdctQp1; 610}MP4VDEC_UALGDynamicParams; 611 612#ifdef VIDDEC_SPARK_CODE 613typedef struct SPARKVDEC_UALGDynamicParams 614{ 615#ifdef VIDDEC_SN_R8_14 616 OMX_S32 size; 617#endif 618 OMX_U32 ulDecodeHeader; 619 OMX_U32 ulDisplayWidth; 620 OMX_U32 ulFrameSkipMode; 621 OMX_U32 ulPPType; 622}SPARKVDEC_UALGDynamicParams; 623#endif 624 625typedef struct MP2VDEC_UALGDynamicParams 626{ 627#ifdef VIDDEC_SN_R8_14 628 OMX_S32 size; 629#endif 630 OMX_U32 ulDecodeHeader; 631 OMX_U32 ulDisplayWidth; 632 OMX_U32 ulFrameSkipMode; 633 OMX_U32 ulPPType; 634 OMX_U32 ulPpNone; /* This will generate 4:2:0 planar output */ 635 OMX_U32 ulDyna_chroma_format; /* If ON, chroma format can be modified at the format level */ 636 637} MP2VDEC_UALGDynamicParams; 638 639#endif 640 641