mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-04 23:46:43 +00:00
580 lines
23 KiB
C
580 lines
23 KiB
C
|
/*
|
||
|
* 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 */
|