You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							579 lines
						
					
					
						
							23 KiB
						
					
					
				
			
		
		
	
	
							579 lines
						
					
					
						
							23 KiB
						
					
					
				| /*
 | |
|  * Copyright (c) 2008 The Khronos Group Inc. 
 | |
|  * 
 | |
|  * Permission is hereby granted, free of charge, to any person obtaining
 | |
|  * a copy of this software and associated documentation files (the
 | |
|  * "Software"), to deal in the Software without restriction, including
 | |
|  * without limitation the rights to use, copy, modify, merge, publish,
 | |
|  * distribute, sublicense, and/or sell copies of the Software, and to
 | |
|  * permit persons to whom the Software is furnished to do so, subject
 | |
|  * to the following conditions: 
 | |
|  * The above copyright notice and this permission notice shall be included
 | |
|  * in all copies or substantial portions of the Software. 
 | |
|  * 
 | |
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | |
|  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | |
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 | |
|  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 | |
|  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 | |
|  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 | |
|  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
 | |
|  *
 | |
|  */
 | |
| 
 | |
| /** OMX_Component.h - OpenMax IL version 1.1.2
 | |
|  *  The OMX_Component header file contains the definitions used to define
 | |
|  *  the public interface of a component.  This header file is intended to
 | |
|  *  be used by both the application and the component.
 | |
|  */
 | |
| 
 | |
| #ifndef OMX_Component_h
 | |
| #define OMX_Component_h
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif /* __cplusplus */
 | |
| 
 | |
| 
 | |
| 
 | |
| /* Each OMX header must include all required header files to allow the
 | |
|  *  header to compile without errors.  The includes below are required
 | |
|  *  for this header file to compile successfully 
 | |
|  */
 | |
| 
 | |
| #include <OMX_Audio.h>
 | |
| #include <OMX_Video.h>
 | |
| #include <OMX_Image.h>
 | |
| #include <OMX_Other.h>
 | |
| 
 | |
| /** @ingroup comp */
 | |
| typedef enum OMX_PORTDOMAINTYPE { 
 | |
|     OMX_PortDomainAudio, 
 | |
|     OMX_PortDomainVideo, 
 | |
|     OMX_PortDomainImage, 
 | |
|     OMX_PortDomainOther,
 | |
|     OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
 | |
|     OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
 | |
|     OMX_PortDomainMax = 0x7ffffff
 | |
| } OMX_PORTDOMAINTYPE;
 | |
| 
 | |
| /** @ingroup comp */
 | |
| typedef struct OMX_PARAM_PORTDEFINITIONTYPE {
 | |
|     OMX_U32 nSize;                 /**< Size of the structure in bytes */
 | |
|     OMX_VERSIONTYPE nVersion;      /**< OMX specification version information */
 | |
|     OMX_U32 nPortIndex;            /**< Port number the structure applies to */
 | |
|     OMX_DIRTYPE eDir;              /**< Direction (input or output) of this port */
 | |
|     OMX_U32 nBufferCountActual;    /**< The actual number of buffers allocated on this port */
 | |
|     OMX_U32 nBufferCountMin;       /**< The minimum number of buffers this port requires */
 | |
|     OMX_U32 nBufferSize;           /**< Size, in bytes, for buffers to be used for this channel */
 | |
|     OMX_BOOL bEnabled;             /**< Ports default to enabled and are enabled/disabled by
 | |
|                                         OMX_CommandPortEnable/OMX_CommandPortDisable.
 | |
|                                         When disabled a port is unpopulated. A disabled port
 | |
|                                         is not populated with buffers on a transition to IDLE. */
 | |
|     OMX_BOOL bPopulated;           /**< Port is populated with all of its buffers as indicated by
 | |
|                                         nBufferCountActual. A disabled port is always unpopulated. 
 | |
|                                         An enabled port is populated on a transition to OMX_StateIdle
 | |
|                                         and unpopulated on a transition to loaded. */
 | |
|     OMX_PORTDOMAINTYPE eDomain;    /**< Domain of the port. Determines the contents of metadata below. */
 | |
|     union {
 | |
|         OMX_AUDIO_PORTDEFINITIONTYPE audio;
 | |
|         OMX_VIDEO_PORTDEFINITIONTYPE video;
 | |
|         OMX_IMAGE_PORTDEFINITIONTYPE image;
 | |
|         OMX_OTHER_PORTDEFINITIONTYPE other;
 | |
|     } format;
 | |
|     OMX_BOOL bBuffersContiguous;
 | |
|     OMX_U32 nBufferAlignment;
 | |
| } OMX_PARAM_PORTDEFINITIONTYPE;
 | |
| 
 | |
| /** @ingroup comp */
 | |
| typedef struct OMX_PARAM_U32TYPE { 
 | |
|     OMX_U32 nSize;                    /**< Size of this structure, in Bytes */ 
 | |
|     OMX_VERSIONTYPE nVersion;         /**< OMX specification version information */ 
 | |
|     OMX_U32 nPortIndex;               /**< port that this structure applies to */ 
 | |
|     OMX_U32 nU32;                     /**< U32 value */
 | |
| } OMX_PARAM_U32TYPE;
 | |
| 
 | |
| /** @ingroup rpm */
 | |
| typedef enum OMX_SUSPENSIONPOLICYTYPE {
 | |
|     OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */
 | |
|     OMX_SuspensionEnabled,  /**< Suspension allowed */   
 | |
|     OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
 | |
|     OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
 | |
|     OMX_SuspensionPolicyMax = 0x7fffffff
 | |
| } OMX_SUSPENSIONPOLICYTYPE;
 | |
| 
 | |
| /** @ingroup rpm */
 | |
| typedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE {
 | |
|     OMX_U32 nSize;                  
 | |
|     OMX_VERSIONTYPE nVersion;        
 | |
|     OMX_SUSPENSIONPOLICYTYPE ePolicy;
 | |
| } OMX_PARAM_SUSPENSIONPOLICYTYPE;
 | |
| 
 | |
| /** @ingroup rpm */
 | |
| typedef enum OMX_SUSPENSIONTYPE {
 | |
|     OMX_NotSuspended, /**< component is not suspended */
 | |
|     OMX_Suspended,    /**< component is suspended */
 | |
|     OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
 | |
|     OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
 | |
|     OMX_SuspendMax = 0x7FFFFFFF
 | |
| } OMX_SUSPENSIONTYPE;
 | |
| 
 | |
| /** @ingroup rpm */
 | |
| typedef struct OMX_PARAM_SUSPENSIONTYPE {
 | |
|     OMX_U32 nSize;                  
 | |
|     OMX_VERSIONTYPE nVersion;       
 | |
|     OMX_SUSPENSIONTYPE eType;             
 | |
| } OMX_PARAM_SUSPENSIONTYPE ;
 | |
| 
 | |
| typedef struct OMX_CONFIG_BOOLEANTYPE {
 | |
|     OMX_U32 nSize;
 | |
|     OMX_VERSIONTYPE nVersion;
 | |
|     OMX_BOOL bEnabled;    
 | |
| } OMX_CONFIG_BOOLEANTYPE;
 | |
| 
 | |
| /* Parameter specifying the content uri to use. */
 | |
| /** @ingroup cp */
 | |
| typedef struct OMX_PARAM_CONTENTURITYPE
 | |
| {
 | |
|     OMX_U32 nSize;                      /**< size of the structure in bytes, including
 | |
|                                              actual URI name */
 | |
|     OMX_VERSIONTYPE nVersion;           /**< OMX specification version information */
 | |
|     OMX_U8 contentURI[1];               /**< The URI name */
 | |
| } OMX_PARAM_CONTENTURITYPE;
 | |
| 
 | |
| /* Parameter specifying the pipe to use. */
 | |
| /** @ingroup cp */
 | |
| typedef struct OMX_PARAM_CONTENTPIPETYPE
 | |
| {
 | |
|     OMX_U32 nSize;              /**< size of the structure in bytes */
 | |
|     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
 | |
|     OMX_HANDLETYPE hPipe;       /**< The pipe handle*/
 | |
| } OMX_PARAM_CONTENTPIPETYPE;
 | |
| 
 | |
| /** @ingroup rpm */
 | |
| typedef struct OMX_RESOURCECONCEALMENTTYPE {
 | |
|     OMX_U32 nSize;             /**< size of the structure in bytes */
 | |
|     OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
 | |
|     OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment 
 | |
|                                             methods (like degrading algorithm quality to 
 | |
|                                             lower resource consumption or functional bypass) 
 | |
|                                             on a component as a resolution to resource conflicts. */
 | |
| } OMX_RESOURCECONCEALMENTTYPE;
 | |
| 
 | |
| 
 | |
| /** @ingroup metadata */
 | |
| typedef enum OMX_METADATACHARSETTYPE {
 | |
|     OMX_MetadataCharsetUnknown = 0,
 | |
|     OMX_MetadataCharsetASCII,
 | |
|     OMX_MetadataCharsetBinary,
 | |
|     OMX_MetadataCharsetCodePage1252,
 | |
|     OMX_MetadataCharsetUTF8,
 | |
|     OMX_MetadataCharsetJavaConformantUTF8,
 | |
|     OMX_MetadataCharsetUTF7,
 | |
|     OMX_MetadataCharsetImapUTF7,
 | |
|     OMX_MetadataCharsetUTF16LE, 
 | |
|     OMX_MetadataCharsetUTF16BE,
 | |
|     OMX_MetadataCharsetGB12345,
 | |
|     OMX_MetadataCharsetHZGB2312,
 | |
|     OMX_MetadataCharsetGB2312,
 | |
|     OMX_MetadataCharsetGB18030,
 | |
|     OMX_MetadataCharsetGBK,
 | |
|     OMX_MetadataCharsetBig5,
 | |
|     OMX_MetadataCharsetISO88591,
 | |
|     OMX_MetadataCharsetISO88592,
 | |
|     OMX_MetadataCharsetISO88593,
 | |
|     OMX_MetadataCharsetISO88594,
 | |
|     OMX_MetadataCharsetISO88595,
 | |
|     OMX_MetadataCharsetISO88596,
 | |
|     OMX_MetadataCharsetISO88597,
 | |
|     OMX_MetadataCharsetISO88598,
 | |
|     OMX_MetadataCharsetISO88599,
 | |
|     OMX_MetadataCharsetISO885910,
 | |
|     OMX_MetadataCharsetISO885913,
 | |
|     OMX_MetadataCharsetISO885914,
 | |
|     OMX_MetadataCharsetISO885915,
 | |
|     OMX_MetadataCharsetShiftJIS,
 | |
|     OMX_MetadataCharsetISO2022JP,
 | |
|     OMX_MetadataCharsetISO2022JP1,
 | |
|     OMX_MetadataCharsetISOEUCJP,
 | |
|     OMX_MetadataCharsetSMS7Bit,
 | |
|     OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
 | |
|     OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
 | |
|     OMX_MetadataCharsetTypeMax= 0x7FFFFFFF
 | |
| } OMX_METADATACHARSETTYPE;
 | |
| 
 | |
| /** @ingroup metadata */
 | |
| typedef enum OMX_METADATASCOPETYPE
 | |
| {
 | |
|     OMX_MetadataScopeAllLevels,
 | |
|     OMX_MetadataScopeTopLevel,
 | |
|     OMX_MetadataScopePortLevel,
 | |
|     OMX_MetadataScopeNodeLevel,
 | |
|     OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
 | |
|     OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
 | |
|     OMX_MetadataScopeTypeMax = 0x7fffffff
 | |
| } OMX_METADATASCOPETYPE;
 | |
| 
 | |
| /** @ingroup metadata */
 | |
| typedef enum OMX_METADATASEARCHMODETYPE
 | |
| {
 | |
|     OMX_MetadataSearchValueSizeByIndex,
 | |
|     OMX_MetadataSearchItemByIndex,
 | |
|     OMX_MetadataSearchNextItemByKey,
 | |
|     OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
 | |
|     OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
 | |
|     OMX_MetadataSearchTypeMax = 0x7fffffff
 | |
| } OMX_METADATASEARCHMODETYPE;
 | |
| /** @ingroup metadata */
 | |
| typedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE
 | |
| {
 | |
|     OMX_U32 nSize;
 | |
|     OMX_VERSIONTYPE nVersion;
 | |
|     OMX_METADATASCOPETYPE eScopeMode;
 | |
|     OMX_U32 nScopeSpecifier;
 | |
|     OMX_U32 nMetadataItemCount;
 | |
| } OMX_CONFIG_METADATAITEMCOUNTTYPE;
 | |
| 
 | |
| /** @ingroup metadata */
 | |
| typedef struct OMX_CONFIG_METADATAITEMTYPE
 | |
| {
 | |
|     OMX_U32 nSize;
 | |
|     OMX_VERSIONTYPE nVersion;
 | |
|     OMX_METADATASCOPETYPE eScopeMode;
 | |
|     OMX_U32 nScopeSpecifier;
 | |
|     OMX_U32 nMetadataItemIndex;  
 | |
|     OMX_METADATASEARCHMODETYPE eSearchMode;
 | |
|     OMX_METADATACHARSETTYPE eKeyCharset;
 | |
|     OMX_U8 nKeySizeUsed;
 | |
|     OMX_U8 nKey[128];
 | |
|     OMX_METADATACHARSETTYPE eValueCharset;
 | |
|     OMX_STRING sLanguageCountry;
 | |
|     OMX_U32 nValueMaxSize;
 | |
|     OMX_U32 nValueSizeUsed;
 | |
|     OMX_U8 nValue[1];
 | |
| } OMX_CONFIG_METADATAITEMTYPE;
 | |
| 
 | |
| /* @ingroup metadata */
 | |
| typedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE
 | |
| {
 | |
|     OMX_U32 nSize;
 | |
|     OMX_VERSIONTYPE nVersion;
 | |
|     OMX_BOOL bAllKeys;
 | |
|     OMX_U32 nParentNodeID;
 | |
|     OMX_U32 nNumNodes;
 | |
| } OMX_CONFIG_CONTAINERNODECOUNTTYPE;
 | |
| 
 | |
| /** @ingroup metadata */
 | |
| typedef struct OMX_CONFIG_CONTAINERNODEIDTYPE
 | |
| {
 | |
|     OMX_U32 nSize;
 | |
|     OMX_VERSIONTYPE nVersion;
 | |
|     OMX_BOOL bAllKeys;
 | |
|     OMX_U32 nParentNodeID;
 | |
|     OMX_U32 nNodeIndex; 
 | |
|     OMX_U32 nNodeID; 
 | |
|     OMX_STRING cNodeName;
 | |
|     OMX_BOOL bIsLeafType;
 | |
| } OMX_CONFIG_CONTAINERNODEIDTYPE;
 | |
| 
 | |
| /** @ingroup metadata */
 | |
| typedef struct OMX_PARAM_METADATAFILTERTYPE 
 | |
| { 
 | |
|     OMX_U32 nSize; 
 | |
|     OMX_VERSIONTYPE nVersion; 
 | |
|     OMX_BOOL bAllKeys;	/* if true then this structure refers to all keys and 
 | |
|                          * the three key fields below are ignored */
 | |
|     OMX_METADATACHARSETTYPE eKeyCharset;
 | |
|     OMX_U32 nKeySizeUsed; 
 | |
|     OMX_U8   nKey [128]; 
 | |
|     OMX_U32 nLanguageCountrySizeUsed;
 | |
|     OMX_U8 nLanguageCountry[128];
 | |
|     OMX_BOOL bEnabled;	/* if true then key is part of filter (e.g. 
 | |
|                          * retained for query later). If false then
 | |
|                          * key is not part of filter */
 | |
| } OMX_PARAM_METADATAFILTERTYPE; 
 | |
| 
 | |
| /** The OMX_HANDLETYPE structure defines the component handle.  The component 
 | |
|  *  handle is used to access all of the component's public methods and also
 | |
|  *  contains pointers to the component's private data area.  The component
 | |
|  *  handle is initialized by the OMX core (with help from the component)
 | |
|  *  during the process of loading the component.  After the component is
 | |
|  *  successfully loaded, the application can safely access any of the
 | |
|  *  component's public functions (although some may return an error because
 | |
|  *  the state is inappropriate for the access).
 | |
|  * 
 | |
|  *  @ingroup comp
 | |
|  */
 | |
| typedef struct OMX_COMPONENTTYPE
 | |
| {
 | |
|     /** The size of this structure, in bytes.  It is the responsibility
 | |
|         of the allocator of this structure to fill in this value.  Since
 | |
|         this structure is allocated by the GetHandle function, this
 | |
|         function will fill in this value. */
 | |
|     OMX_U32 nSize;
 | |
| 
 | |
|     /** nVersion is the version of the OMX specification that the structure 
 | |
|         is built against.  It is the responsibility of the creator of this 
 | |
|         structure to initialize this value and every user of this structure 
 | |
|         should verify that it knows how to use the exact version of 
 | |
|         this structure found herein. */
 | |
|     OMX_VERSIONTYPE nVersion;
 | |
| 
 | |
|     /** pComponentPrivate is a pointer to the component private data area.  
 | |
|         This member is allocated and initialized by the component when the 
 | |
|         component is first loaded.  The application should not access this 
 | |
|         data area. */
 | |
|     OMX_PTR pComponentPrivate;
 | |
| 
 | |
|     /** pApplicationPrivate is a pointer that is a parameter to the 
 | |
|         OMX_GetHandle method, and contains an application private value 
 | |
|         provided by the IL client.  This application private data is 
 | |
|         returned to the IL Client by OMX in all callbacks */
 | |
|     OMX_PTR pApplicationPrivate;
 | |
| 
 | |
|     /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL 
 | |
|         specification for details on the GetComponentVersion method.
 | |
|      */
 | |
|     OMX_ERRORTYPE (*GetComponentVersion)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent,
 | |
|             OMX_OUT OMX_STRING pComponentName,
 | |
|             OMX_OUT OMX_VERSIONTYPE* pComponentVersion,
 | |
|             OMX_OUT OMX_VERSIONTYPE* pSpecVersion,
 | |
|             OMX_OUT OMX_UUIDTYPE* pComponentUUID);
 | |
| 
 | |
|     /** refer to OMX_SendCommand in OMX_core.h or the OMX IL 
 | |
|         specification for details on the SendCommand method.
 | |
|      */
 | |
|     OMX_ERRORTYPE (*SendCommand)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent,
 | |
|             OMX_IN  OMX_COMMANDTYPE Cmd,
 | |
|             OMX_IN  OMX_U32 nParam1,
 | |
|             OMX_IN  OMX_PTR pCmdData);
 | |
| 
 | |
|     /** refer to OMX_GetParameter in OMX_core.h or the OMX IL 
 | |
|         specification for details on the GetParameter method.
 | |
|      */
 | |
|     OMX_ERRORTYPE (*GetParameter)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent, 
 | |
|             OMX_IN  OMX_INDEXTYPE nParamIndex,  
 | |
|             OMX_INOUT OMX_PTR pComponentParameterStructure);
 | |
| 
 | |
| 
 | |
|     /** refer to OMX_SetParameter in OMX_core.h or the OMX IL 
 | |
|         specification for details on the SetParameter method.
 | |
|      */
 | |
|     OMX_ERRORTYPE (*SetParameter)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent, 
 | |
|             OMX_IN  OMX_INDEXTYPE nIndex,
 | |
|             OMX_IN  OMX_PTR pComponentParameterStructure);
 | |
| 
 | |
| 
 | |
|     /** refer to OMX_GetConfig in OMX_core.h or the OMX IL 
 | |
|         specification for details on the GetConfig method.
 | |
|      */
 | |
|     OMX_ERRORTYPE (*GetConfig)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent,
 | |
|             OMX_IN  OMX_INDEXTYPE nIndex, 
 | |
|             OMX_INOUT OMX_PTR pComponentConfigStructure);
 | |
| 
 | |
| 
 | |
|     /** refer to OMX_SetConfig in OMX_core.h or the OMX IL 
 | |
|         specification for details on the SetConfig method.
 | |
|      */
 | |
|     OMX_ERRORTYPE (*SetConfig)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent,
 | |
|             OMX_IN  OMX_INDEXTYPE nIndex, 
 | |
|             OMX_IN  OMX_PTR pComponentConfigStructure);
 | |
| 
 | |
| 
 | |
|     /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL 
 | |
|         specification for details on the GetExtensionIndex method.
 | |
|      */
 | |
|     OMX_ERRORTYPE (*GetExtensionIndex)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent,
 | |
|             OMX_IN  OMX_STRING cParameterName,
 | |
|             OMX_OUT OMX_INDEXTYPE* pIndexType);
 | |
| 
 | |
| 
 | |
|     /** refer to OMX_GetState in OMX_core.h or the OMX IL 
 | |
|         specification for details on the GetState method.
 | |
|      */
 | |
|     OMX_ERRORTYPE (*GetState)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent,
 | |
|             OMX_OUT OMX_STATETYPE* pState);
 | |
| 
 | |
|     
 | |
|     /** The ComponentTunnelRequest method will interact with another OMX
 | |
|         component to determine if tunneling is possible and to setup the
 | |
|         tunneling.  The return codes for this method can be used to 
 | |
|         determine if tunneling is not possible, or if tunneling is not
 | |
|         supported.  
 | |
|         
 | |
|         Base profile components (i.e. non-interop) do not support this
 | |
|         method and should return OMX_ErrorNotImplemented 
 | |
| 
 | |
|         The interop profile component MUST support tunneling to another 
 | |
|         interop profile component with a compatible port parameters.  
 | |
|         A component may also support proprietary communication.
 | |
|         
 | |
|         If proprietary communication is supported the negotiation of 
 | |
|         proprietary communication is done outside of OMX in a vendor 
 | |
|         specific way. It is only required that the proper result be 
 | |
|         returned and the details of how the setup is done is left 
 | |
|         to the component implementation.  
 | |
|     
 | |
|         When this method is invoked when nPort in an output port, the
 | |
|         component will:
 | |
|         1.  Populate the pTunnelSetup structure with the output port's 
 | |
|             requirements and constraints for the tunnel.
 | |
| 
 | |
|         When this method is invoked when nPort in an input port, the
 | |
|         component will:
 | |
|         1.  Query the necessary parameters from the output port to 
 | |
|             determine if the ports are compatible for tunneling
 | |
|         2.  If the ports are compatible, the component should store
 | |
|             the tunnel step provided by the output port
 | |
|         3.  Determine which port (either input or output) is the buffer
 | |
|             supplier, and call OMX_SetParameter on the output port to
 | |
|             indicate this selection.
 | |
|         
 | |
|         The component will return from this call within 5 msec.
 | |
|     
 | |
|         @param [in] hComp
 | |
|             Handle of the component to be accessed.  This is the component
 | |
|             handle returned by the call to the OMX_GetHandle method.
 | |
|         @param [in] nPort
 | |
|             nPort is used to select the port on the component to be used
 | |
|             for tunneling.
 | |
|         @param [in] hTunneledComp
 | |
|             Handle of the component to tunnel with.  This is the component 
 | |
|             handle returned by the call to the OMX_GetHandle method.  When
 | |
|             this parameter is 0x0 the component should setup the port for
 | |
|             communication with the application / IL Client.
 | |
|         @param [in] nPortOutput
 | |
|             nPortOutput is used indicate the port the component should
 | |
|             tunnel with.
 | |
|         @param [in] pTunnelSetup
 | |
|             Pointer to the tunnel setup structure.  When nPort is an output port
 | |
|             the component should populate the fields of this structure.  When
 | |
|             When nPort is an input port the component should review the setup
 | |
|             provided by the component with the output port.
 | |
|         @return OMX_ERRORTYPE
 | |
|             If the command successfully executes, the return code will be
 | |
|             OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
 | |
|         @ingroup tun
 | |
|     */
 | |
| 
 | |
|     OMX_ERRORTYPE (*ComponentTunnelRequest)(
 | |
|         OMX_IN  OMX_HANDLETYPE hComp,
 | |
|         OMX_IN  OMX_U32 nPort,
 | |
|         OMX_IN  OMX_HANDLETYPE hTunneledComp,
 | |
|         OMX_IN  OMX_U32 nTunneledPort,
 | |
|         OMX_INOUT  OMX_TUNNELSETUPTYPE* pTunnelSetup); 
 | |
| 
 | |
|     /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL 
 | |
|         specification for details on the UseBuffer method.
 | |
|         @ingroup buf
 | |
|      */
 | |
|     OMX_ERRORTYPE (*UseBuffer)(
 | |
|             OMX_IN OMX_HANDLETYPE hComponent,
 | |
|             OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
 | |
|             OMX_IN OMX_U32 nPortIndex,
 | |
|             OMX_IN OMX_PTR pAppPrivate,
 | |
|             OMX_IN OMX_U32 nSizeBytes,
 | |
|             OMX_IN OMX_U8* pBuffer);
 | |
| 
 | |
|     /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL 
 | |
|         specification for details on the AllocateBuffer method.
 | |
|         @ingroup buf
 | |
|      */
 | |
|     OMX_ERRORTYPE (*AllocateBuffer)(
 | |
|             OMX_IN OMX_HANDLETYPE hComponent,
 | |
|             OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer,
 | |
|             OMX_IN OMX_U32 nPortIndex,
 | |
|             OMX_IN OMX_PTR pAppPrivate,
 | |
|             OMX_IN OMX_U32 nSizeBytes);
 | |
| 
 | |
|     /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL 
 | |
|         specification for details on the FreeBuffer method.
 | |
|         @ingroup buf
 | |
|      */
 | |
|     OMX_ERRORTYPE (*FreeBuffer)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent,
 | |
|             OMX_IN  OMX_U32 nPortIndex,
 | |
|             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
 | |
| 
 | |
|     /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL 
 | |
|         specification for details on the EmptyThisBuffer method.
 | |
|         @ingroup buf
 | |
|      */
 | |
|     OMX_ERRORTYPE (*EmptyThisBuffer)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent,
 | |
|             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
 | |
| 
 | |
|     /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL 
 | |
|         specification for details on the FillThisBuffer method.
 | |
|         @ingroup buf
 | |
|      */
 | |
|     OMX_ERRORTYPE (*FillThisBuffer)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent,
 | |
|             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
 | |
| 
 | |
|     /** The SetCallbacks method is used by the core to specify the callback
 | |
|         structure from the application to the component.  This is a blocking
 | |
|         call.  The component will return from this call within 5 msec.
 | |
|         @param [in] hComponent
 | |
|             Handle of the component to be accessed.  This is the component
 | |
|             handle returned by the call to the GetHandle function.
 | |
|         @param [in] pCallbacks
 | |
|             pointer to an OMX_CALLBACKTYPE structure used to provide the 
 | |
|             callback information to the component
 | |
|         @param [in] pAppData
 | |
|             pointer to an application defined value.  It is anticipated that 
 | |
|             the application will pass a pointer to a data structure or a "this
 | |
|             pointer" in this area to allow the callback (in the application)
 | |
|             to determine the context of the call
 | |
|         @return OMX_ERRORTYPE
 | |
|             If the command successfully executes, the return code will be
 | |
|             OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
 | |
|      */
 | |
|     OMX_ERRORTYPE (*SetCallbacks)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent,
 | |
|             OMX_IN  OMX_CALLBACKTYPE* pCallbacks, 
 | |
|             OMX_IN  OMX_PTR pAppData);
 | |
| 
 | |
|     /** ComponentDeInit method is used to deinitialize the component
 | |
|         providing a means to free any resources allocated at component
 | |
|         initialization.  NOTE:  After this call the component handle is
 | |
|         not valid for further use.
 | |
|         @param [in] hComponent
 | |
|             Handle of the component to be accessed.  This is the component
 | |
|             handle returned by the call to the GetHandle function.
 | |
|         @return OMX_ERRORTYPE
 | |
|             If the command successfully executes, the return code will be
 | |
|             OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
 | |
|      */
 | |
|     OMX_ERRORTYPE (*ComponentDeInit)(
 | |
|             OMX_IN  OMX_HANDLETYPE hComponent);
 | |
| 
 | |
|     /** @ingroup buf */
 | |
|     OMX_ERRORTYPE (*UseEGLImage)(
 | |
|             OMX_IN OMX_HANDLETYPE hComponent,
 | |
|             OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
 | |
|             OMX_IN OMX_U32 nPortIndex,
 | |
|             OMX_IN OMX_PTR pAppPrivate,
 | |
|             OMX_IN void* eglImage);
 | |
| 
 | |
|     OMX_ERRORTYPE (*ComponentRoleEnum)(
 | |
|         OMX_IN OMX_HANDLETYPE hComponent,
 | |
| 		OMX_OUT OMX_U8 *cRole,
 | |
| 		OMX_IN OMX_U32 nIndex);
 | |
| 
 | |
| } OMX_COMPONENTTYPE;
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif /* __cplusplus */
 | |
| 
 | |
| #endif
 | |
| /* File EOF */
 | |
| 
 |