10c1bc742181ded4930842b46e9507372f0b1b963James Dong/** 20c1bc742181ded4930842b46e9507372f0b1b963James Dong * File: omxtypes.h 30c1bc742181ded4930842b46e9507372f0b1b963James Dong * Brief: Defines basic Data types used in OpenMAX v1.0.2 header files. 40c1bc742181ded4930842b46e9507372f0b1b963James Dong * 50c1bc742181ded4930842b46e9507372f0b1b963James Dong * Copyright � 2005-2008 The Khronos Group Inc. All Rights Reserved. 60c1bc742181ded4930842b46e9507372f0b1b963James Dong * 70c1bc742181ded4930842b46e9507372f0b1b963James Dong * These materials are protected by copyright laws and contain material 80c1bc742181ded4930842b46e9507372f0b1b963James Dong * proprietary to the Khronos Group, Inc. You may use these materials 90c1bc742181ded4930842b46e9507372f0b1b963James Dong * for implementing Khronos specifications, without altering or removing 100c1bc742181ded4930842b46e9507372f0b1b963James Dong * any trademark, copyright or other notice from the specification. 110c1bc742181ded4930842b46e9507372f0b1b963James Dong * 120c1bc742181ded4930842b46e9507372f0b1b963James Dong * Khronos Group makes no, and expressly disclaims any, representations 130c1bc742181ded4930842b46e9507372f0b1b963James Dong * or warranties, express or implied, regarding these materials, including, 140c1bc742181ded4930842b46e9507372f0b1b963James Dong * without limitation, any implied warranties of merchantability or fitness 150c1bc742181ded4930842b46e9507372f0b1b963James Dong * for a particular purpose or non-infringement of any intellectual property. 160c1bc742181ded4930842b46e9507372f0b1b963James Dong * Khronos Group makes no, and expressly disclaims any, warranties, express 170c1bc742181ded4930842b46e9507372f0b1b963James Dong * or implied, regarding the correctness, accuracy, completeness, timeliness, 180c1bc742181ded4930842b46e9507372f0b1b963James Dong * and reliability of these materials. 190c1bc742181ded4930842b46e9507372f0b1b963James Dong * 200c1bc742181ded4930842b46e9507372f0b1b963James Dong * Under no circumstances will the Khronos Group, or any of its Promoters, 210c1bc742181ded4930842b46e9507372f0b1b963James Dong * Contributors or Members or their respective partners, officers, directors, 220c1bc742181ded4930842b46e9507372f0b1b963James Dong * employees, agents or representatives be liable for any damages, whether 230c1bc742181ded4930842b46e9507372f0b1b963James Dong * direct, indirect, special or consequential damages for lost revenues, 240c1bc742181ded4930842b46e9507372f0b1b963James Dong * lost profits, or otherwise, arising from or in connection with these 250c1bc742181ded4930842b46e9507372f0b1b963James Dong * materials. 260c1bc742181ded4930842b46e9507372f0b1b963James Dong * 270c1bc742181ded4930842b46e9507372f0b1b963James Dong * Khronos and OpenMAX are trademarks of the Khronos Group Inc. 280c1bc742181ded4930842b46e9507372f0b1b963James Dong * 290c1bc742181ded4930842b46e9507372f0b1b963James Dong */ 300c1bc742181ded4930842b46e9507372f0b1b963James Dong 310c1bc742181ded4930842b46e9507372f0b1b963James Dong#ifndef _OMXTYPES_H_ 320c1bc742181ded4930842b46e9507372f0b1b963James Dong#define _OMXTYPES_H_ 330c1bc742181ded4930842b46e9507372f0b1b963James Dong 340c1bc742181ded4930842b46e9507372f0b1b963James Dong#include <limits.h> 35db43b34c3428e480f8c4c66e7e88f4001f37f91eMark Salyzyn#include <stdint.h> 360c1bc742181ded4930842b46e9507372f0b1b963James Dong 370c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_IN 380c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_OUT 390c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_INOUT 400c1bc742181ded4930842b46e9507372f0b1b963James Dong 410c1bc742181ded4930842b46e9507372f0b1b963James Dong 420c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef enum { 430c1bc742181ded4930842b46e9507372f0b1b963James Dong 440c1bc742181ded4930842b46e9507372f0b1b963James Dong /* Mandatory return codes - use cases are explicitly described for each function */ 450c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_Sts_NoErr = 0, /* No error, the function completed successfully */ 460c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_Sts_Err = -2, /* Unknown/unspecified error */ 470c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_Sts_InvalidBitstreamValErr = -182, /* Invalid value detected during bitstream processing */ 480c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_Sts_MemAllocErr = -9, /* Not enough memory allocated for the operation */ 490c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsACAAC_GainCtrErr = -159, /* AAC: Unsupported gain control data detected */ 500c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsACAAC_PrgNumErr = -167, /* AAC: Invalid number of elements for one program */ 510c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsACAAC_CoefValErr = -163, /* AAC: Invalid quantized coefficient value */ 520c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsACAAC_MaxSfbErr = -162, /* AAC: Invalid maxSfb value in relation to numSwb */ 530c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsACAAC_PlsDataErr = -160, /* AAC: pulse escape sequence data error */ 540c1bc742181ded4930842b46e9507372f0b1b963James Dong 550c1bc742181ded4930842b46e9507372f0b1b963James Dong /* Optional return codes - use cases are explicitly described for each function*/ 560c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_Sts_BadArgErr = -5, /* Bad Arguments */ 570c1bc742181ded4930842b46e9507372f0b1b963James Dong 580c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsACAAC_TnsNumFiltErr = -157, /* AAC: Invalid number of TNS filters */ 590c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsACAAC_TnsLenErr = -156, /* AAC: Invalid TNS region length */ 600c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsACAAC_TnsOrderErr = -155, /* AAC: Invalid order of TNS filter */ 610c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsACAAC_TnsCoefResErr = -154, /* AAC: Invalid bit-resolution for TNS filter coefficients */ 620c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsACAAC_TnsCoefErr = -153, /* AAC: Invalid TNS filter coefficients */ 630c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsACAAC_TnsDirectErr = -152, /* AAC: Invalid TNS filter direction */ 640c1bc742181ded4930842b46e9507372f0b1b963James Dong 650c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsICJP_JPEGMarkerErr = -183, /* JPEG marker encountered within an entropy-coded block; */ 660c1bc742181ded4930842b46e9507372f0b1b963James Dong /* Huffman decoding operation terminated early. */ 670c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsICJP_JPEGMarker = -181, /* JPEG marker encountered; Huffman decoding */ 680c1bc742181ded4930842b46e9507372f0b1b963James Dong /* operation terminated early. */ 690c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsIPPP_ContextMatchErr = -17, /* Context parameter doesn't match to the operation */ 700c1bc742181ded4930842b46e9507372f0b1b963James Dong 710c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_StsSP_EvenMedianMaskSizeErr = -180, /* Even size of the Median Filter mask was replaced by the odd one */ 720c1bc742181ded4930842b46e9507372f0b1b963James Dong 730c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_Sts_MaximumEnumeration = INT_MAX /*Placeholder, forces enum of size OMX_INT*/ 740c1bc742181ded4930842b46e9507372f0b1b963James Dong 750c1bc742181ded4930842b46e9507372f0b1b963James Dong } OMXResult; /** Return value or error value returned from a function. Identical to OMX_INT */ 760c1bc742181ded4930842b46e9507372f0b1b963James Dong 770c1bc742181ded4930842b46e9507372f0b1b963James Dong 780c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_U8 */ 79db43b34c3428e480f8c4c66e7e88f4001f37f91eMark Salyzyntypedef uint8_t OMX_U8; 800c1bc742181ded4930842b46e9507372f0b1b963James Dong 810c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_S8 */ 82db43b34c3428e480f8c4c66e7e88f4001f37f91eMark Salyzyntypedef int8_t OMX_S8; 830c1bc742181ded4930842b46e9507372f0b1b963James Dong 840c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_U16 */ 85db43b34c3428e480f8c4c66e7e88f4001f37f91eMark Salyzyntypedef uint16_t OMX_U16; 860c1bc742181ded4930842b46e9507372f0b1b963James Dong 870c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_S16 */ 88db43b34c3428e480f8c4c66e7e88f4001f37f91eMark Salyzyntypedef int16_t OMX_S16; 890c1bc742181ded4930842b46e9507372f0b1b963James Dong 900c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_U32 */ 91db43b34c3428e480f8c4c66e7e88f4001f37f91eMark Salyzyntypedef uint32_t OMX_U32; 920c1bc742181ded4930842b46e9507372f0b1b963James Dong 930c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_S32 */ 94db43b34c3428e480f8c4c66e7e88f4001f37f91eMark Salyzyntypedef int32_t OMX_S32; 950c1bc742181ded4930842b46e9507372f0b1b963James Dong 960c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_U64 & OMX_S64 */ 970c1bc742181ded4930842b46e9507372f0b1b963James Dong#if defined( _WIN32 ) || defined ( _WIN64 ) 980c1bc742181ded4930842b46e9507372f0b1b963James Dong typedef __int64 OMX_S64; /** Signed 64-bit integer */ 990c1bc742181ded4930842b46e9507372f0b1b963James Dong typedef unsigned __int64 OMX_U64; /** Unsigned 64-bit integer */ 1000c1bc742181ded4930842b46e9507372f0b1b963James Dong #define OMX_MIN_S64 (0x8000000000000000i64) 1010c1bc742181ded4930842b46e9507372f0b1b963James Dong #define OMX_MIN_U64 (0x0000000000000000i64) 1020c1bc742181ded4930842b46e9507372f0b1b963James Dong #define OMX_MAX_S64 (0x7FFFFFFFFFFFFFFFi64) 1030c1bc742181ded4930842b46e9507372f0b1b963James Dong #define OMX_MAX_U64 (0xFFFFFFFFFFFFFFFFi64) 1040c1bc742181ded4930842b46e9507372f0b1b963James Dong#else 105db43b34c3428e480f8c4c66e7e88f4001f37f91eMark Salyzyn typedef int64_t OMX_S64; /** Signed 64-bit integer */ 106db43b34c3428e480f8c4c66e7e88f4001f37f91eMark Salyzyn typedef uint64_t OMX_U64; /** Unsigned 64-bit integer */ 1070c1bc742181ded4930842b46e9507372f0b1b963James Dong #define OMX_MIN_S64 (0x8000000000000000LL) 1080c1bc742181ded4930842b46e9507372f0b1b963James Dong #define OMX_MIN_U64 (0x0000000000000000LL) 1090c1bc742181ded4930842b46e9507372f0b1b963James Dong #define OMX_MAX_S64 (0x7FFFFFFFFFFFFFFFLL) 1100c1bc742181ded4930842b46e9507372f0b1b963James Dong #define OMX_MAX_U64 (0xFFFFFFFFFFFFFFFFLL) 1110c1bc742181ded4930842b46e9507372f0b1b963James Dong#endif 1120c1bc742181ded4930842b46e9507372f0b1b963James Dong 1130c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_SC8 */ 1140c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef struct 1150c1bc742181ded4930842b46e9507372f0b1b963James Dong{ 1160c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_S8 Re; /** Real part */ 1170c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_S8 Im; /** Imaginary part */ 1180c1bc742181ded4930842b46e9507372f0b1b963James Dong 1190c1bc742181ded4930842b46e9507372f0b1b963James Dong} OMX_SC8; /** Signed 8-bit complex number */ 1200c1bc742181ded4930842b46e9507372f0b1b963James Dong 1210c1bc742181ded4930842b46e9507372f0b1b963James Dong 1220c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_SC16 */ 1230c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef struct 1240c1bc742181ded4930842b46e9507372f0b1b963James Dong{ 1250c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_S16 Re; /** Real part */ 1260c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_S16 Im; /** Imaginary part */ 1270c1bc742181ded4930842b46e9507372f0b1b963James Dong 1280c1bc742181ded4930842b46e9507372f0b1b963James Dong} OMX_SC16; /** Signed 16-bit complex number */ 1290c1bc742181ded4930842b46e9507372f0b1b963James Dong 1300c1bc742181ded4930842b46e9507372f0b1b963James Dong 1310c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_SC32 */ 1320c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef struct 1330c1bc742181ded4930842b46e9507372f0b1b963James Dong{ 1340c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_S32 Re; /** Real part */ 1350c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_S32 Im; /** Imaginary part */ 1360c1bc742181ded4930842b46e9507372f0b1b963James Dong 1370c1bc742181ded4930842b46e9507372f0b1b963James Dong} OMX_SC32; /** Signed 32-bit complex number */ 1380c1bc742181ded4930842b46e9507372f0b1b963James Dong 1390c1bc742181ded4930842b46e9507372f0b1b963James Dong 1400c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_SC64 */ 1410c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef struct 1420c1bc742181ded4930842b46e9507372f0b1b963James Dong{ 1430c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_S64 Re; /** Real part */ 1440c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_S64 Im; /** Imaginary part */ 1450c1bc742181ded4930842b46e9507372f0b1b963James Dong 1460c1bc742181ded4930842b46e9507372f0b1b963James Dong} OMX_SC64; /** Signed 64-bit complex number */ 1470c1bc742181ded4930842b46e9507372f0b1b963James Dong 1480c1bc742181ded4930842b46e9507372f0b1b963James Dong 1490c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_F32 */ 1500c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef float OMX_F32; /** Single precision floating point,IEEE 754 */ 1510c1bc742181ded4930842b46e9507372f0b1b963James Dong 1520c1bc742181ded4930842b46e9507372f0b1b963James Dong 1530c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_F64 */ 1540c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef double OMX_F64; /** Double precision floating point,IEEE 754 */ 1550c1bc742181ded4930842b46e9507372f0b1b963James Dong 1560c1bc742181ded4930842b46e9507372f0b1b963James Dong 1570c1bc742181ded4930842b46e9507372f0b1b963James Dong/* OMX_INT */ 1580c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef int OMX_INT; /** signed integer corresponding to machine word length, has maximum signed value INT_MAX*/ 1590c1bc742181ded4930842b46e9507372f0b1b963James Dong 1600c1bc742181ded4930842b46e9507372f0b1b963James Dong 1610c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MIN_S8 (-128) 1620c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MIN_U8 0 1630c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MIN_S16 (-32768) 1640c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MIN_U16 0 1650c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MIN_S32 (-2147483647-1) 1660c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MIN_U32 0 1670c1bc742181ded4930842b46e9507372f0b1b963James Dong 1680c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MAX_S8 (127) 1690c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MAX_U8 (255) 1700c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MAX_S16 (32767) 1710c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MAX_U16 (0xFFFF) 1720c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MAX_S32 (2147483647) 1730c1bc742181ded4930842b46e9507372f0b1b963James Dong#define OMX_MAX_U32 (0xFFFFFFFF) 1740c1bc742181ded4930842b46e9507372f0b1b963James Dong 1750c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef void OMXVoid; 1760c1bc742181ded4930842b46e9507372f0b1b963James Dong 1770c1bc742181ded4930842b46e9507372f0b1b963James Dong#ifndef NULL 1780c1bc742181ded4930842b46e9507372f0b1b963James Dong#define NULL ((void*)0) 1790c1bc742181ded4930842b46e9507372f0b1b963James Dong#endif 1800c1bc742181ded4930842b46e9507372f0b1b963James Dong 1810c1bc742181ded4930842b46e9507372f0b1b963James Dong/** Defines the geometric position and size of a rectangle, 1820c1bc742181ded4930842b46e9507372f0b1b963James Dong * where x,y defines the coordinates of the top left corner 1830c1bc742181ded4930842b46e9507372f0b1b963James Dong * of the rectangle, with dimensions width in the x-direction 1840c1bc742181ded4930842b46e9507372f0b1b963James Dong * and height in the y-direction */ 1850c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef struct { 1860c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_INT x; /** x-coordinate of top left corner of rectangle */ 1870c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_INT y; /** y-coordinate of top left corner of rectangle */ 1880c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_INT width; /** Width in the x-direction. */ 1890c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_INT height; /** Height in the y-direction. */ 1900c1bc742181ded4930842b46e9507372f0b1b963James Dong}OMXRect; 1910c1bc742181ded4930842b46e9507372f0b1b963James Dong 1920c1bc742181ded4930842b46e9507372f0b1b963James Dong 1930c1bc742181ded4930842b46e9507372f0b1b963James Dong/** Defines the geometric position of a point, */ 1940c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef struct 1950c1bc742181ded4930842b46e9507372f0b1b963James Dong{ 1960c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_INT x; /** x-coordinate */ 1970c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_INT y; /** y-coordinate */ 1980c1bc742181ded4930842b46e9507372f0b1b963James Dong 1990c1bc742181ded4930842b46e9507372f0b1b963James Dong} OMXPoint; 2000c1bc742181ded4930842b46e9507372f0b1b963James Dong 2010c1bc742181ded4930842b46e9507372f0b1b963James Dong 2020c1bc742181ded4930842b46e9507372f0b1b963James Dong/** Defines the dimensions of a rectangle, or region of interest in an image */ 2030c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef struct 2040c1bc742181ded4930842b46e9507372f0b1b963James Dong{ 2050c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_INT width; /** Width of the rectangle, in the x-direction */ 2060c1bc742181ded4930842b46e9507372f0b1b963James Dong OMX_INT height; /** Height of the rectangle, in the y-direction */ 2070c1bc742181ded4930842b46e9507372f0b1b963James Dong 2080c1bc742181ded4930842b46e9507372f0b1b963James Dong} OMXSize; 2090c1bc742181ded4930842b46e9507372f0b1b963James Dong 2100c1bc742181ded4930842b46e9507372f0b1b963James Dong#endif /* _OMXTYPES_H_ */ 211