1c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* 2c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Copyright (c) 2008 The Khronos Group Inc. 3c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * 4c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Permission is hereby granted, free of charge, to any person obtaining 5c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * a copy of this software and associated documentation files (the 6c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * "Software"), to deal in the Software without restriction, including 7c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * without limitation the rights to use, copy, modify, merge, publish, 8c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * distribute, sublicense, and/or sell copies of the Software, and to 9c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * permit persons to whom the Software is furnished to do so, subject 10c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * to the following conditions: 11c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * The above copyright notice and this permission notice shall be included 12c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * in all copies or substantial portions of the Software. 13c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * 14c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 18c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 19c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 20c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * 22c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 23c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 24c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** OMX_Component.h - OpenMax IL version 1.1.2 25c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * The OMX_Component header file contains the definitions used to define 26c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * the public interface of a component. This header file is intended to 27c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * be used by both the application and the component. 28c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 29c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 30c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifndef OMX_Component_h 31c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_Component_h 32c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 33c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus 34c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevextern "C" { 35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif /* __cplusplus */ 36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 37c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* Each OMX header must include all required header files to allow the 40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * header to compile without errors. The includes below are required 41c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * for this header file to compile successfully 42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 43c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Audio.h> 45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Video.h> 46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Image.h> 47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Other.h> 48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup comp */ 50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_PORTDOMAINTYPE { 51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PortDomainAudio, 52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PortDomainVideo, 53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PortDomainImage, 54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PortDomainOther, 55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 56c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PortDomainMax = 0x7ffffff 58c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PORTDOMAINTYPE; 59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup comp */ 61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_PORTDEFINITIONTYPE { 62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< Size of the structure in bytes */ 63c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 64c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< Port number the structure applies to */ 65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_DIRTYPE eDir; /**< Direction (input or output) of this port */ 66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBufferCountActual; /**< The actual number of buffers allocated on this port */ 67c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBufferCountMin; /**< The minimum number of buffers this port requires */ 68c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBufferSize; /**< Size, in bytes, for buffers to be used for this channel */ 69c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEnabled; /**< Ports default to enabled and are enabled/disabled by 70c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_CommandPortEnable/OMX_CommandPortDisable. 71c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev When disabled a port is unpopulated. A disabled port 72c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev is not populated with buffers on a transition to IDLE. */ 73c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bPopulated; /**< Port is populated with all of its buffers as indicated by 74c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nBufferCountActual. A disabled port is always unpopulated. 75c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev An enabled port is populated on a transition to OMX_StateIdle 76c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev and unpopulated on a transition to loaded. */ 77c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PORTDOMAINTYPE eDomain; /**< Domain of the port. Determines the contents of metadata below. */ 78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev union { 79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_AUDIO_PORTDEFINITIONTYPE audio; 80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VIDEO_PORTDEFINITIONTYPE video; 81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IMAGE_PORTDEFINITIONTYPE image; 82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_OTHER_PORTDEFINITIONTYPE other; 83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev } format; 84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bBuffersContiguous; 85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nBufferAlignment; 86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_PORTDEFINITIONTYPE; 87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 88c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup comp */ 89c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_U32TYPE { 90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< Size of this structure, in Bytes */ 91c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nPortIndex; /**< port that this structure applies to */ 93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nU32; /**< U32 value */ 94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_U32TYPE; 95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 96c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup rpm */ 97c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_SUSPENSIONPOLICYTYPE { 98c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */ 99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SuspensionEnabled, /**< Suspension allowed */ 100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SuspensionPolicyMax = 0x7fffffff 103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_SUSPENSIONPOLICYTYPE; 104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup rpm */ 106c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE { 107c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; 108c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; 109c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SUSPENSIONPOLICYTYPE ePolicy; 110c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_SUSPENSIONPOLICYTYPE; 111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup rpm */ 113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_SUSPENSIONTYPE { 114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_NotSuspended, /**< component is not suspended */ 115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_Suspended, /**< component is suspended */ 116c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 117c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SuspendMax = 0x7FFFFFFF 119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_SUSPENSIONTYPE; 120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup rpm */ 122c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_SUSPENSIONTYPE { 123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; 124c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; 125c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_SUSPENSIONTYPE eType; 126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_SUSPENSIONTYPE ; 127c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_BOOLEANTYPE { 129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; 130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; 131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEnabled; 132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_BOOLEANTYPE; 133c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* Parameter specifying the content uri to use. */ 135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup cp */ 136c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_CONTENTURITYPE 137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes, including 139c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev actual URI name */ 140c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 141c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U8 contentURI[1]; /**< The URI name */ 142c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_CONTENTURITYPE; 143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 144c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* Parameter specifying the pipe to use. */ 145c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup cp */ 146c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_CONTENTPIPETYPE 147c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 148c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 149c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 150c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_HANDLETYPE hPipe; /**< The pipe handle*/ 151c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_CONTENTPIPETYPE; 152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 153c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup rpm */ 154c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_RESOURCECONCEALMENTTYPE { 155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; /**< size of the structure in bytes */ 156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 157c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment 158c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev methods (like degrading algorithm quality to 159c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev lower resource consumption or functional bypass) 160c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev on a component as a resolution to resource conflicts. */ 161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_RESOURCECONCEALMENTTYPE; 162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */ 165c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_METADATACHARSETTYPE { 166c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetUnknown = 0, 167c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetASCII, 168c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetBinary, 169c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetCodePage1252, 170c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetUTF8, 171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetJavaConformantUTF8, 172c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetUTF7, 173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetImapUTF7, 174c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetUTF16LE, 175c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetUTF16BE, 176c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetGB12345, 177c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetHZGB2312, 178c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetGB2312, 179c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetGB18030, 180c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetGBK, 181c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetBig5, 182c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO88591, 183c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO88592, 184c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO88593, 185c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO88594, 186c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO88595, 187c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO88596, 188c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO88597, 189c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO88598, 190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO88599, 191c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO885910, 192c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO885913, 193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO885914, 194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO885915, 195c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetShiftJIS, 196c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO2022JP, 197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISO2022JP1, 198c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetISOEUCJP, 199c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetSMS7Bit, 200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 201c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataCharsetTypeMax= 0x7FFFFFFF 203c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_METADATACHARSETTYPE; 204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 205c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */ 206c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_METADATASCOPETYPE 207c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 208c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataScopeAllLevels, 209c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataScopeTopLevel, 210c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataScopePortLevel, 211c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataScopeNodeLevel, 212c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataScopeTypeMax = 0x7fffffff 215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_METADATASCOPETYPE; 216c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 217c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */ 218c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_METADATASEARCHMODETYPE 219c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataSearchValueSizeByIndex, 221c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataSearchItemByIndex, 222c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataSearchNextItemByKey, 223c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 224c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 225c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_MetadataSearchTypeMax = 0x7fffffff 226c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_METADATASEARCHMODETYPE; 227c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */ 228c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE 229c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 230c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; 231c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; 232c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_METADATASCOPETYPE eScopeMode; 233c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nScopeSpecifier; 234c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMetadataItemCount; 235c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_METADATAITEMCOUNTTYPE; 236c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 237c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */ 238c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_METADATAITEMTYPE 239c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 240c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; 241c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; 242c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_METADATASCOPETYPE eScopeMode; 243c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nScopeSpecifier; 244c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nMetadataItemIndex; 245c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_METADATASEARCHMODETYPE eSearchMode; 246c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_METADATACHARSETTYPE eKeyCharset; 247c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U8 nKeySizeUsed; 248c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U8 nKey[128]; 249c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_METADATACHARSETTYPE eValueCharset; 250c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_STRING sLanguageCountry; 251c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nValueMaxSize; 252c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nValueSizeUsed; 253c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U8 nValue[1]; 254c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_METADATAITEMTYPE; 255c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 256c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* @ingroup metadata */ 257c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE 258c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 259c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; 260c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; 261c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bAllKeys; 262c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nParentNodeID; 263c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nNumNodes; 264c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_CONTAINERNODECOUNTTYPE; 265c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 266c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */ 267c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_CONTAINERNODEIDTYPE 268c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 269c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; 270c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; 271c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bAllKeys; 272c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nParentNodeID; 273c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nNodeIndex; 274c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nNodeID; 275c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_STRING cNodeName; 276c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bIsLeafType; 277c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_CONTAINERNODEIDTYPE; 278c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 279c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @ingroup metadata */ 280c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_METADATAFILTERTYPE 281c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 282c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; 283c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; 284c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bAllKeys; /* if true then this structure refers to all keys and 285c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * the three key fields below are ignored */ 286c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_METADATACHARSETTYPE eKeyCharset; 287c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nKeySizeUsed; 288c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U8 nKey [128]; 289c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nLanguageCountrySizeUsed; 290c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U8 nLanguageCountry[128]; 291c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_BOOL bEnabled; /* if true then key is part of filter (e.g. 292c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * retained for query later). If false then 293c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * key is not part of filter */ 294c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_METADATAFILTERTYPE; 295c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 296c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** The OMX_HANDLETYPE structure defines the component handle. The component 297c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * handle is used to access all of the component's public methods and also 298c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * contains pointers to the component's private data area. The component 299c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * handle is initialized by the OMX core (with help from the component) 300c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * during the process of loading the component. After the component is 301c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * successfully loaded, the application can safely access any of the 302c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * component's public functions (although some may return an error because 303c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * the state is inappropriate for the access). 304c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * 305c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup comp 306c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 307c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_COMPONENTTYPE 308c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{ 309c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** The size of this structure, in bytes. It is the responsibility 310c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev of the allocator of this structure to fill in this value. Since 311c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev this structure is allocated by the GetHandle function, this 312c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev function will fill in this value. */ 313c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_U32 nSize; 314c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 315c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** nVersion is the version of the OMX specification that the structure 316c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev is built against. It is the responsibility of the creator of this 317c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev structure to initialize this value and every user of this structure 318c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev should verify that it knows how to use the exact version of 319c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev this structure found herein. */ 320c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_VERSIONTYPE nVersion; 321c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 322c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** pComponentPrivate is a pointer to the component private data area. 323c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev This member is allocated and initialized by the component when the 324c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev component is first loaded. The application should not access this 325c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev data area. */ 326c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PTR pComponentPrivate; 327c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 328c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** pApplicationPrivate is a pointer that is a parameter to the 329c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_GetHandle method, and contains an application private value 330c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev provided by the IL client. This application private data is 331c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev returned to the IL Client by OMX in all callbacks */ 332c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_PTR pApplicationPrivate; 333c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 334c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL 335c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the GetComponentVersion method. 336c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 337c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*GetComponentVersion)( 338c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 339c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_OUT OMX_STRING pComponentName, 340c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_OUT OMX_VERSIONTYPE* pComponentVersion, 341c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_OUT OMX_VERSIONTYPE* pSpecVersion, 342c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_OUT OMX_UUIDTYPE* pComponentUUID); 343c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 344c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_SendCommand in OMX_core.h or the OMX IL 345c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the SendCommand method. 346c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 347c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*SendCommand)( 348c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 349c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_COMMANDTYPE Cmd, 350c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U32 nParam1, 351c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_PTR pCmdData); 352c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 353c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_GetParameter in OMX_core.h or the OMX IL 354c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the GetParameter method. 355c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 356c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*GetParameter)( 357c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 358c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_INDEXTYPE nParamIndex, 359c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_INOUT OMX_PTR pComponentParameterStructure); 360c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 361c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 362c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_SetParameter in OMX_core.h or the OMX IL 363c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the SetParameter method. 364c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 365c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*SetParameter)( 366c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 367c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_INDEXTYPE nIndex, 368c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_PTR pComponentParameterStructure); 369c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 370c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 371c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_GetConfig in OMX_core.h or the OMX IL 372c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the GetConfig method. 373c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 374c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*GetConfig)( 375c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 376c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_INDEXTYPE nIndex, 377c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_INOUT OMX_PTR pComponentConfigStructure); 378c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 379c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 380c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_SetConfig in OMX_core.h or the OMX IL 381c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the SetConfig method. 382c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 383c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*SetConfig)( 384c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 385c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_INDEXTYPE nIndex, 386c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_PTR pComponentConfigStructure); 387c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 388c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 389c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL 390c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the GetExtensionIndex method. 391c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 392c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*GetExtensionIndex)( 393c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 394c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_STRING cParameterName, 395c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_OUT OMX_INDEXTYPE* pIndexType); 396c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 397c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 398c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_GetState in OMX_core.h or the OMX IL 399c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the GetState method. 400c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 401c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*GetState)( 402c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 403c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_OUT OMX_STATETYPE* pState); 404c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 405c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 406c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** The ComponentTunnelRequest method will interact with another OMX 407c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev component to determine if tunneling is possible and to setup the 408c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev tunneling. The return codes for this method can be used to 409c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev determine if tunneling is not possible, or if tunneling is not 410c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev supported. 411c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 412c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Base profile components (i.e. non-interop) do not support this 413c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev method and should return OMX_ErrorNotImplemented 414c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 415c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev The interop profile component MUST support tunneling to another 416c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev interop profile component with a compatible port parameters. 417c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev A component may also support proprietary communication. 418c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 419c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev If proprietary communication is supported the negotiation of 420c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev proprietary communication is done outside of OMX in a vendor 421c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specific way. It is only required that the proper result be 422c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev returned and the details of how the setup is done is left 423c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to the component implementation. 424c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 425c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev When this method is invoked when nPort in an output port, the 426c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev component will: 427c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1. Populate the pTunnelSetup structure with the output port's 428c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev requirements and constraints for the tunnel. 429c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 430c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev When this method is invoked when nPort in an input port, the 431c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev component will: 432c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 1. Query the necessary parameters from the output port to 433c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev determine if the ports are compatible for tunneling 434c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 2. If the ports are compatible, the component should store 435c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev the tunnel step provided by the output port 436c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 3. Determine which port (either input or output) is the buffer 437c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev supplier, and call OMX_SetParameter on the output port to 438c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev indicate this selection. 439c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 440c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev The component will return from this call within 5 msec. 441c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 442c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @param [in] hComp 443c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Handle of the component to be accessed. This is the component 444c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev handle returned by the call to the OMX_GetHandle method. 445c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @param [in] nPort 446c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nPort is used to select the port on the component to be used 447c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev for tunneling. 448c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @param [in] hTunneledComp 449c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Handle of the component to tunnel with. This is the component 450c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev handle returned by the call to the OMX_GetHandle method. When 451c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev this parameter is 0x0 the component should setup the port for 452c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev communication with the application / IL Client. 453c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @param [in] nPortOutput 454c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev nPortOutput is used indicate the port the component should 455c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev tunnel with. 456c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @param [in] pTunnelSetup 457c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Pointer to the tunnel setup structure. When nPort is an output port 458c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev the component should populate the fields of this structure. When 459c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev When nPort is an input port the component should review the setup 460c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev provided by the component with the output port. 461c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @return OMX_ERRORTYPE 462c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev If the command successfully executes, the return code will be 463c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 464c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @ingroup tun 465c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 466c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 467c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*ComponentTunnelRequest)( 468c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComp, 469c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U32 nPort, 470c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hTunneledComp, 471c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U32 nTunneledPort, 472c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup); 473c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 474c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL 475c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the UseBuffer method. 476c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @ingroup buf 477c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 478c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*UseBuffer)( 479c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 480c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 481c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U32 nPortIndex, 482c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_PTR pAppPrivate, 483c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U32 nSizeBytes, 484c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U8* pBuffer); 485c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 486c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL 487c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the AllocateBuffer method. 488c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @ingroup buf 489c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 490c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*AllocateBuffer)( 491c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 492c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer, 493c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U32 nPortIndex, 494c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_PTR pAppPrivate, 495c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U32 nSizeBytes); 496c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 497c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL 498c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the FreeBuffer method. 499c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @ingroup buf 500c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 501c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*FreeBuffer)( 502c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 503c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U32 nPortIndex, 504c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 505c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 506c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL 507c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the EmptyThisBuffer method. 508c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @ingroup buf 509c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 510c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*EmptyThisBuffer)( 511c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 512c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 513c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 514c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL 515c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev specification for details on the FillThisBuffer method. 516c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @ingroup buf 517c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 518c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*FillThisBuffer)( 519c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 520c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 521c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 522c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** The SetCallbacks method is used by the core to specify the callback 523c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev structure from the application to the component. This is a blocking 524c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev call. The component will return from this call within 5 msec. 525c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @param [in] hComponent 526c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Handle of the component to be accessed. This is the component 527c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev handle returned by the call to the GetHandle function. 528c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @param [in] pCallbacks 529c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pointer to an OMX_CALLBACKTYPE structure used to provide the 530c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev callback information to the component 531c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @param [in] pAppData 532c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pointer to an application defined value. It is anticipated that 533c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev the application will pass a pointer to a data structure or a "this 534c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev pointer" in this area to allow the callback (in the application) 535c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev to determine the context of the call 536c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @return OMX_ERRORTYPE 537c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev If the command successfully executes, the return code will be 538c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 539c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 540c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*SetCallbacks)( 541c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 542c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_CALLBACKTYPE* pCallbacks, 543c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_PTR pAppData); 544c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 545c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** ComponentDeInit method is used to deinitialize the component 546c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev providing a means to free any resources allocated at component 547c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev initialization. NOTE: After this call the component handle is 548c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev not valid for further use. 549c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @param [in] hComponent 550c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev Handle of the component to be accessed. This is the component 551c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev handle returned by the call to the GetHandle function. 552c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev @return OMX_ERRORTYPE 553c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev If the command successfully executes, the return code will be 554c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 555c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */ 556c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*ComponentDeInit)( 557c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent); 558c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 559c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev /** @ingroup buf */ 560c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*UseEGLImage)( 561c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 562c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 563c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U32 nPortIndex, 564c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_PTR pAppPrivate, 565c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN void* eglImage); 566c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 567c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_ERRORTYPE (*ComponentRoleEnum)( 568c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_HANDLETYPE hComponent, 569c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_OUT OMX_U8 *cRole, 570c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev OMX_IN OMX_U32 nIndex); 571c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 572c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_COMPONENTTYPE; 573c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 574c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus 575c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} 576c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif /* __cplusplus */ 577c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev 578c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif 579c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* File EOF */ 580