tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

OMX_Component.h (23671B)


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