1826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/* 2e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * Copyright (c) 2008 The Khronos Group Inc. 3e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 4826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * Permission is hereby granted, free of charge, to any person obtaining 5826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * a copy of this software and associated documentation files (the 6826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * "Software"), to deal in the Software without restriction, including 7826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * without limitation the rights to use, copy, modify, merge, publish, 8826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * distribute, sublicense, and/or sell copies of the Software, and to 9826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * permit persons to whom the Software is furnished to do so, subject 10e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * to the following conditions: 11826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * The above copyright notice and this permission notice shall be included 12e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * in all copies or substantial portions of the Software. 13e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 14826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 18826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 19826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 20e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * 22826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 23826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 24826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** OMX_Component.h - OpenMax IL version 1.1.2 25826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * The OMX_Component header file contains the definitions used to define 26826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * the public interface of a component. This header file is intended to 27826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * be used by both the application and the component. 28826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 29826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 30826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifndef OMX_Component_h 31826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define OMX_Component_h 32826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 33826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef __cplusplus 34826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevextern "C" { 35826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif /* __cplusplus */ 36826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 37826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 38826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 39826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/* Each OMX header must include all required header files to allow the 40826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * header to compile without errors. The includes below are required 41e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * for this header file to compile successfully 42826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 43826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 44826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <OMX_Audio.h> 45826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <OMX_Video.h> 46826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <OMX_Image.h> 47826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <OMX_Other.h> 48826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 49826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup comp */ 50e4010605f233a213cf0d972397bb33c34c364227Patrick Tjintypedef enum OMX_PORTDOMAINTYPE { 51e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_PortDomainAudio, 52e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_PortDomainVideo, 53e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_PortDomainImage, 54826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_PortDomainOther, 55e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 56826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 57826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_PortDomainMax = 0x7ffffff 58826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_PORTDOMAINTYPE; 59826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 60826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup comp */ 61826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_PARAM_PORTDEFINITIONTYPE { 62826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nSize; /**< Size of the structure in bytes */ 63826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 64826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nPortIndex; /**< Port number the structure applies to */ 65826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_DIRTYPE eDir; /**< Direction (input or output) of this port */ 66826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nBufferCountActual; /**< The actual number of buffers allocated on this port */ 67826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nBufferCountMin; /**< The minimum number of buffers this port requires */ 68826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nBufferSize; /**< Size, in bytes, for buffers to be used for this channel */ 69826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_BOOL bEnabled; /**< Ports default to enabled and are enabled/disabled by 70826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_CommandPortEnable/OMX_CommandPortDisable. 71826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev When disabled a port is unpopulated. A disabled port 72826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev is not populated with buffers on a transition to IDLE. */ 73826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_BOOL bPopulated; /**< Port is populated with all of its buffers as indicated by 74e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin nBufferCountActual. A disabled port is always unpopulated. 75826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev An enabled port is populated on a transition to OMX_StateIdle 76826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev and unpopulated on a transition to loaded. */ 77826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_PORTDOMAINTYPE eDomain; /**< Domain of the port. Determines the contents of metadata below. */ 78826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev union { 79826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_AUDIO_PORTDEFINITIONTYPE audio; 80826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VIDEO_PORTDEFINITIONTYPE video; 81826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IMAGE_PORTDEFINITIONTYPE image; 82826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_OTHER_PORTDEFINITIONTYPE other; 83826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev } format; 84826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_BOOL bBuffersContiguous; 85826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nBufferAlignment; 86826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_PARAM_PORTDEFINITIONTYPE; 87826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 88826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup comp */ 89e4010605f233a213cf0d972397bb33c34c364227Patrick Tjintypedef struct OMX_PARAM_U32TYPE { 90e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nSize; /**< Size of this structure, in Bytes */ 91e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 92e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nPortIndex; /**< port that this structure applies to */ 93826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nU32; /**< U32 value */ 94826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_PARAM_U32TYPE; 95826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 96826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup rpm */ 97826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_SUSPENSIONPOLICYTYPE { 98826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */ 99e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_SuspensionEnabled, /**< Suspension allowed */ 100e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 101826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 102826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_SuspensionPolicyMax = 0x7fffffff 103826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_SUSPENSIONPOLICYTYPE; 104826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 105826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup rpm */ 106826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE { 107e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nSize; 108e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_VERSIONTYPE nVersion; 109826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_SUSPENSIONPOLICYTYPE ePolicy; 110826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_PARAM_SUSPENSIONPOLICYTYPE; 111826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 112826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup rpm */ 113826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_SUSPENSIONTYPE { 114826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_NotSuspended, /**< component is not suspended */ 115826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_Suspended, /**< component is suspended */ 116e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 117826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 118826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_SuspendMax = 0x7FFFFFFF 119826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_SUSPENSIONTYPE; 120826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 121826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup rpm */ 122826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_PARAM_SUSPENSIONTYPE { 123e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nSize; 124e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_VERSIONTYPE nVersion; 125e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_SUSPENSIONTYPE eType; 126826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_PARAM_SUSPENSIONTYPE ; 127826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 128826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_CONFIG_BOOLEANTYPE { 129826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nSize; 130826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VERSIONTYPE nVersion; 131e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_BOOL bEnabled; 132826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_CONFIG_BOOLEANTYPE; 133826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 134826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/* Parameter specifying the content uri to use. */ 135826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup cp */ 136826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_PARAM_CONTENTURITYPE 137826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 138826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes, including 139826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev actual URI name */ 140826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 141826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U8 contentURI[1]; /**< The URI name */ 142826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_PARAM_CONTENTURITYPE; 143826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 144826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/* Parameter specifying the pipe to use. */ 145826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup cp */ 146826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_PARAM_CONTENTPIPETYPE 147826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 148826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 149826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 150826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_HANDLETYPE hPipe; /**< The pipe handle*/ 151826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_PARAM_CONTENTPIPETYPE; 152826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 153826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup rpm */ 154826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_RESOURCECONCEALMENTTYPE { 155826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 156826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 157e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment 158e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin methods (like degrading algorithm quality to 159e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin lower resource consumption or functional bypass) 160826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev on a component as a resolution to resource conflicts. */ 161826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_RESOURCECONCEALMENTTYPE; 162826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 163826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 164826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup metadata */ 165826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_METADATACHARSETTYPE { 166826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetUnknown = 0, 167826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetASCII, 168826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetBinary, 169826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetCodePage1252, 170826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetUTF8, 171826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetJavaConformantUTF8, 172826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetUTF7, 173826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetImapUTF7, 174e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_MetadataCharsetUTF16LE, 175826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetUTF16BE, 176826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetGB12345, 177826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetHZGB2312, 178826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetGB2312, 179826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetGB18030, 180826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetGBK, 181826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetBig5, 182826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO88591, 183826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO88592, 184826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO88593, 185826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO88594, 186826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO88595, 187826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO88596, 188826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO88597, 189826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO88598, 190826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO88599, 191826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO885910, 192826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO885913, 193826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO885914, 194826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO885915, 195826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetShiftJIS, 196826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO2022JP, 197826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISO2022JP1, 198826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetISOEUCJP, 199826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetSMS7Bit, 200e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 201826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 202826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataCharsetTypeMax= 0x7FFFFFFF 203826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_METADATACHARSETTYPE; 204826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 205826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup metadata */ 206826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_METADATASCOPETYPE 207826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 208826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataScopeAllLevels, 209826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataScopeTopLevel, 210826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataScopePortLevel, 211826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataScopeNodeLevel, 212e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 213826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 214826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataScopeTypeMax = 0x7fffffff 215826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_METADATASCOPETYPE; 216826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 217826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup metadata */ 218826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef enum OMX_METADATASEARCHMODETYPE 219826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 220826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataSearchValueSizeByIndex, 221826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataSearchItemByIndex, 222826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataSearchNextItemByKey, 223e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 224826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 225826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_MetadataSearchTypeMax = 0x7fffffff 226826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_METADATASEARCHMODETYPE; 227826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup metadata */ 228826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE 229826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 230826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nSize; 231826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VERSIONTYPE nVersion; 232826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_METADATASCOPETYPE eScopeMode; 233826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nScopeSpecifier; 234826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nMetadataItemCount; 235826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_CONFIG_METADATAITEMCOUNTTYPE; 236826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 237826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup metadata */ 238826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_CONFIG_METADATAITEMTYPE 239826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 240826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nSize; 241826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VERSIONTYPE nVersion; 242826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_METADATASCOPETYPE eScopeMode; 243826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nScopeSpecifier; 244e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nMetadataItemIndex; 245826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_METADATASEARCHMODETYPE eSearchMode; 246826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_METADATACHARSETTYPE eKeyCharset; 247826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U8 nKeySizeUsed; 248826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U8 nKey[128]; 249826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_METADATACHARSETTYPE eValueCharset; 250826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_STRING sLanguageCountry; 251826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nValueMaxSize; 252826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nValueSizeUsed; 253826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U8 nValue[1]; 254826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_CONFIG_METADATAITEMTYPE; 255826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 256826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/* @ingroup metadata */ 257826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE 258826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 259826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nSize; 260826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VERSIONTYPE nVersion; 261826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_BOOL bAllKeys; 262826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nParentNodeID; 263826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nNumNodes; 264826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_CONFIG_CONTAINERNODECOUNTTYPE; 265826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 266826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup metadata */ 267826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_CONFIG_CONTAINERNODEIDTYPE 268826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 269826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nSize; 270826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VERSIONTYPE nVersion; 271826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_BOOL bAllKeys; 272826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nParentNodeID; 273e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nNodeIndex; 274e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nNodeID; 275826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_STRING cNodeName; 276826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_BOOL bIsLeafType; 277826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_CONFIG_CONTAINERNODEIDTYPE; 278826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 279826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/** @ingroup metadata */ 280e4010605f233a213cf0d972397bb33c34c364227Patrick Tjintypedef struct OMX_PARAM_METADATAFILTERTYPE 281e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin{ 282e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nSize; 283e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_VERSIONTYPE nVersion; 284e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_BOOL bAllKeys; /* if true then this structure refers to all keys and 285826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * the three key fields below are ignored */ 286826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_METADATACHARSETTYPE eKeyCharset; 287e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nKeySizeUsed; 288e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U8 nKey [128]; 289826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nLanguageCountrySizeUsed; 290826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U8 nLanguageCountry[128]; 291e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_BOOL bEnabled; /* if true then key is part of filter (e.g. 292826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * retained for query later). If false then 293826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * key is not part of filter */ 294e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin} OMX_PARAM_METADATAFILTERTYPE; 295826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 296e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** The OMX_HANDLETYPE structure defines the component handle. The component 297826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * handle is used to access all of the component's public methods and also 298826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * contains pointers to the component's private data area. The component 299826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * handle is initialized by the OMX core (with help from the component) 300826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * during the process of loading the component. After the component is 301826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * successfully loaded, the application can safely access any of the 302826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * component's public functions (although some may return an error because 303826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * the state is inappropriate for the access). 304e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 305826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev * @ingroup comp 306826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 307826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevtypedef struct OMX_COMPONENTTYPE 308826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{ 309826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev /** The size of this structure, in bytes. It is the responsibility 310826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev of the allocator of this structure to fill in this value. Since 311826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev this structure is allocated by the GetHandle function, this 312826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev function will fill in this value. */ 313826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_U32 nSize; 314826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 315e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** nVersion is the version of the OMX specification that the structure 316e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin is built against. It is the responsibility of the creator of this 317e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin structure to initialize this value and every user of this structure 318e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin should verify that it knows how to use the exact version of 319826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev this structure found herein. */ 320826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_VERSIONTYPE nVersion; 321826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 322e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** pComponentPrivate is a pointer to the component private data area. 323e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin This member is allocated and initialized by the component when the 324e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin component is first loaded. The application should not access this 325826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev data area. */ 326826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_PTR pComponentPrivate; 327826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 328e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** pApplicationPrivate is a pointer that is a parameter to the 329e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_GetHandle method, and contains an application private value 330e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin provided by the IL client. This application private data is 331826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev returned to the IL Client by OMX in all callbacks */ 332826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_PTR pApplicationPrivate; 333826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 334e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL 335826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the GetComponentVersion method. 336826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 337826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*GetComponentVersion)( 338826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 339826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_OUT OMX_STRING pComponentName, 340826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_OUT OMX_VERSIONTYPE* pComponentVersion, 341826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_OUT OMX_VERSIONTYPE* pSpecVersion, 342826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_OUT OMX_UUIDTYPE* pComponentUUID); 343826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 344e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_SendCommand in OMX_core.h or the OMX IL 345826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the SendCommand method. 346826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 347826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*SendCommand)( 348826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 349826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_COMMANDTYPE Cmd, 350826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_U32 nParam1, 351826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_PTR pCmdData); 352826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 353e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_GetParameter in OMX_core.h or the OMX IL 354826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the GetParameter method. 355826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 356826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*GetParameter)( 357e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_IN OMX_HANDLETYPE hComponent, 358e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_IN OMX_INDEXTYPE nParamIndex, 359826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_INOUT OMX_PTR pComponentParameterStructure); 360826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 361826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 362e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_SetParameter in OMX_core.h or the OMX IL 363826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the SetParameter method. 364826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 365826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*SetParameter)( 366e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_IN OMX_HANDLETYPE hComponent, 367826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_INDEXTYPE nIndex, 368826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_PTR pComponentParameterStructure); 369826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 370826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 371e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_GetConfig in OMX_core.h or the OMX IL 372826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the GetConfig method. 373826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 374826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*GetConfig)( 375826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 376e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_IN OMX_INDEXTYPE nIndex, 377826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_INOUT OMX_PTR pComponentConfigStructure); 378826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 379826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 380e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_SetConfig in OMX_core.h or the OMX IL 381826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the SetConfig method. 382826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 383826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*SetConfig)( 384826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 385e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_IN OMX_INDEXTYPE nIndex, 386826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_PTR pComponentConfigStructure); 387826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 388826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 389e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL 390826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the GetExtensionIndex method. 391826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 392826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*GetExtensionIndex)( 393826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 394826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_STRING cParameterName, 395826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_OUT OMX_INDEXTYPE* pIndexType); 396826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 397826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 398e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_GetState in OMX_core.h or the OMX IL 399826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the GetState method. 400826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 401826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*GetState)( 402826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 403826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_OUT OMX_STATETYPE* pState); 404826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 405e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 406826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev /** The ComponentTunnelRequest method will interact with another OMX 407826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev component to determine if tunneling is possible and to setup the 408e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin tunneling. The return codes for this method can be used to 409826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev determine if tunneling is not possible, or if tunneling is not 410e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin supported. 411e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 412826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev Base profile components (i.e. non-interop) do not support this 413e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin method and should return OMX_ErrorNotImplemented 414826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 415e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin The interop profile component MUST support tunneling to another 416e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin interop profile component with a compatible port parameters. 417826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev A component may also support proprietary communication. 418e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 419e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin If proprietary communication is supported the negotiation of 420e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin proprietary communication is done outside of OMX in a vendor 421e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin specific way. It is only required that the proper result be 422e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin returned and the details of how the setup is done is left 423e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin to the component implementation. 424e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 425826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev When this method is invoked when nPort in an output port, the 426826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev component will: 427e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 1. Populate the pTunnelSetup structure with the output port's 428826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev requirements and constraints for the tunnel. 429826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 430826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev When this method is invoked when nPort in an input port, the 431826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev component will: 432e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 1. Query the necessary parameters from the output port to 433826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev determine if the ports are compatible for tunneling 434826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 2. If the ports are compatible, the component should store 435826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev the tunnel step provided by the output port 436826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 3. Determine which port (either input or output) is the buffer 437826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev supplier, and call OMX_SetParameter on the output port to 438826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev indicate this selection. 439e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 440826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev The component will return from this call within 5 msec. 441e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 442826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @param [in] hComp 443826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev Handle of the component to be accessed. This is the component 444826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev handle returned by the call to the OMX_GetHandle method. 445826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @param [in] nPort 446826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev nPort is used to select the port on the component to be used 447826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev for tunneling. 448826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @param [in] hTunneledComp 449e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin Handle of the component to tunnel with. This is the component 450826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev handle returned by the call to the OMX_GetHandle method. When 451826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev this parameter is 0x0 the component should setup the port for 452826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev communication with the application / IL Client. 453826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @param [in] nPortOutput 454826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev nPortOutput is used indicate the port the component should 455826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev tunnel with. 456826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @param [in] pTunnelSetup 457826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev Pointer to the tunnel setup structure. When nPort is an output port 458826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev the component should populate the fields of this structure. When 459826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev When nPort is an input port the component should review the setup 460826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev provided by the component with the output port. 461826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @return OMX_ERRORTYPE 462826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev If the command successfully executes, the return code will be 463826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 464826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @ingroup tun 465826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 466826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 467826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*ComponentTunnelRequest)( 468826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComp, 469826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_U32 nPort, 470826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hTunneledComp, 471826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_U32 nTunneledPort, 472e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup); 473826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 474e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL 475826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the UseBuffer method. 476826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @ingroup buf 477826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 478826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*UseBuffer)( 479826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 480826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 481826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_U32 nPortIndex, 482826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_PTR pAppPrivate, 483826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_U32 nSizeBytes, 484826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_U8* pBuffer); 485826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 486e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL 487826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the AllocateBuffer method. 488826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @ingroup buf 489826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 490826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*AllocateBuffer)( 491826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 492826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer, 493826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_U32 nPortIndex, 494826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_PTR pAppPrivate, 495826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_U32 nSizeBytes); 496826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 497e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL 498826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the FreeBuffer method. 499826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @ingroup buf 500826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 501826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*FreeBuffer)( 502826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 503826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_U32 nPortIndex, 504826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 505826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 506e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL 507826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the EmptyThisBuffer method. 508826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @ingroup buf 509826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 510826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*EmptyThisBuffer)( 511826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 512826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 513826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 514e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL 515826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev specification for details on the FillThisBuffer method. 516826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @ingroup buf 517826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 518826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*FillThisBuffer)( 519826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 520826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 521826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 522826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev /** The SetCallbacks method is used by the core to specify the callback 523826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev structure from the application to the component. This is a blocking 524826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev call. The component will return from this call within 5 msec. 525826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @param [in] hComponent 526826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev Handle of the component to be accessed. This is the component 527826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev handle returned by the call to the GetHandle function. 528826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @param [in] pCallbacks 529e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin pointer to an OMX_CALLBACKTYPE structure used to provide the 530826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev callback information to the component 531826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @param [in] pAppData 532e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin pointer to an application defined value. It is anticipated that 533826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev the application will pass a pointer to a data structure or a "this 534826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev pointer" in this area to allow the callback (in the application) 535826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev to determine the context of the call 536826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @return OMX_ERRORTYPE 537826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev If the command successfully executes, the return code will be 538826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 539826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 540826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*SetCallbacks)( 541826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 542e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_IN OMX_CALLBACKTYPE* pCallbacks, 543826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_PTR pAppData); 544826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 545826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev /** ComponentDeInit method is used to deinitialize the component 546826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev providing a means to free any resources allocated at component 547826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev initialization. NOTE: After this call the component handle is 548826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev not valid for further use. 549826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @param [in] hComponent 550826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev Handle of the component to be accessed. This is the component 551826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev handle returned by the call to the GetHandle function. 552826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev @return OMX_ERRORTYPE 553826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev If the command successfully executes, the return code will be 554826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 555826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev */ 556826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*ComponentDeInit)( 557826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent); 558826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 559826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev /** @ingroup buf */ 560826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*UseEGLImage)( 561826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 562826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 563826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_U32 nPortIndex, 564826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_PTR pAppPrivate, 565826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN void* eglImage); 566826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 567826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE (*ComponentRoleEnum)( 568826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 569826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_OUT OMX_U8 *cRole, 570826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_IN OMX_U32 nIndex); 571826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 572826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} OMX_COMPONENTTYPE; 573826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 574826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef __cplusplus 575826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev} 576826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif /* __cplusplus */ 577826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev 578826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif 579826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/* File EOF */ 580