OMX_Component.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2008 The Khronos Group Inc. 
00003  * 
00004  * Permission is hereby granted, free of charge, to any person obtaining
00005  * a copy of this software and associated documentation files (the
00006  * "Software"), to deal in the Software without restriction, including
00007  * without limitation the rights to use, copy, modify, merge, publish,
00008  * distribute, sublicense, and/or sell copies of the Software, and to
00009  * permit persons to whom the Software is furnished to do so, subject
00010  * to the following conditions: 
00011  * The above copyright notice and this permission notice shall be included
00012  * in all copies or substantial portions of the Software. 
00013  * 
00014  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00015  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00016  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
00017  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
00018  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
00019  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
00020  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
00021  *
00022  */
00023 
00024 /** OMX_Component.h - OpenMax IL version 1.1.2
00025  *  The OMX_Component header file contains the definitions used to define
00026  *  the public interface of a component.  This header file is intended to
00027  *  be used by both the application and the component.
00028  */
00029 
00030 #ifndef OMX_Component_h
00031 #define OMX_Component_h
00032 
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif /* __cplusplus */
00036 
00037 
00038 
00039 /* Each OMX header must include all required header files to allow the
00040  *  header to compile without errors.  The includes below are required
00041  *  for this header file to compile successfully 
00042  */
00043 
00044 #include <OMX_Audio.h>
00045 #include <OMX_Video.h>
00046 #include <OMX_Image.h>
00047 #include <OMX_Other.h>
00048 
00049 /** @ingroup comp */
00050 typedef enum OMX_PORTDOMAINTYPE { 
00051     OMX_PortDomainAudio, 
00052     OMX_PortDomainVideo, 
00053     OMX_PortDomainImage, 
00054     OMX_PortDomainOther,
00055     OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
00056     OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
00057     OMX_PortDomainMax = 0x7ffffff
00058 } OMX_PORTDOMAINTYPE;
00059 
00060 /** @ingroup comp */
00061 typedef struct OMX_PARAM_PORTDEFINITIONTYPE {
00062     OMX_U32 nSize;                 /**< Size of the structure in bytes */
00063     OMX_VERSIONTYPE nVersion;      /**< OMX specification version information */
00064     OMX_U32 nPortIndex;            /**< Port number the structure applies to */
00065     OMX_DIRTYPE eDir;              /**< Direction (input or output) of this port */
00066     OMX_U32 nBufferCountActual;    /**< The actual number of buffers allocated on this port */
00067     OMX_U32 nBufferCountMin;       /**< The minimum number of buffers this port requires */
00068     OMX_U32 nBufferSize;           /**< Size, in bytes, for buffers to be used for this channel */
00069     OMX_BOOL bEnabled;             /**< Ports default to enabled and are enabled/disabled by
00070                                         OMX_CommandPortEnable/OMX_CommandPortDisable.
00071                                         When disabled a port is unpopulated. A disabled port
00072                                         is not populated with buffers on a transition to IDLE. */
00073     OMX_BOOL bPopulated;           /**< Port is populated with all of its buffers as indicated by
00074                                         nBufferCountActual. A disabled port is always unpopulated. 
00075                                         An enabled port is populated on a transition to OMX_StateIdle
00076                                         and unpopulated on a transition to loaded. */
00077     OMX_PORTDOMAINTYPE eDomain;    /**< Domain of the port. Determines the contents of metadata below. */
00078     union {
00079         OMX_AUDIO_PORTDEFINITIONTYPE audio;
00080         OMX_VIDEO_PORTDEFINITIONTYPE video;
00081         OMX_IMAGE_PORTDEFINITIONTYPE image;
00082         OMX_OTHER_PORTDEFINITIONTYPE other;
00083     } format;
00084     OMX_BOOL bBuffersContiguous;
00085     OMX_U32 nBufferAlignment;
00086 } OMX_PARAM_PORTDEFINITIONTYPE;
00087 
00088 /** @ingroup comp */
00089 typedef struct OMX_PARAM_U32TYPE { 
00090     OMX_U32 nSize;                    /**< Size of this structure, in Bytes */ 
00091     OMX_VERSIONTYPE nVersion;         /**< OMX specification version information */ 
00092     OMX_U32 nPortIndex;               /**< port that this structure applies to */ 
00093     OMX_U32 nU32;                     /**< U32 value */
00094 } OMX_PARAM_U32TYPE;
00095 
00096 /** @ingroup rpm */
00097 typedef enum OMX_SUSPENSIONPOLICYTYPE {
00098     OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */
00099     OMX_SuspensionEnabled,  /**< Suspension allowed */   
00100     OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
00101     OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
00102     OMX_SuspensionPolicyMax = 0x7fffffff
00103 } OMX_SUSPENSIONPOLICYTYPE;
00104 
00105 /** @ingroup rpm */
00106 typedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE {
00107     OMX_U32 nSize;                  
00108     OMX_VERSIONTYPE nVersion;        
00109     OMX_SUSPENSIONPOLICYTYPE ePolicy;
00110 } OMX_PARAM_SUSPENSIONPOLICYTYPE;
00111 
00112 /** @ingroup rpm */
00113 typedef enum OMX_SUSPENSIONTYPE {
00114     OMX_NotSuspended, /**< component is not suspended */
00115     OMX_Suspended,    /**< component is suspended */
00116     OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
00117     OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
00118     OMX_SuspendMax = 0x7FFFFFFF
00119 } OMX_SUSPENSIONTYPE;
00120 
00121 /** @ingroup rpm */
00122 typedef struct OMX_PARAM_SUSPENSIONTYPE {
00123     OMX_U32 nSize;                  
00124     OMX_VERSIONTYPE nVersion;       
00125     OMX_SUSPENSIONTYPE eType;             
00126 } OMX_PARAM_SUSPENSIONTYPE ;
00127 
00128 typedef struct OMX_CONFIG_BOOLEANTYPE {
00129     OMX_U32 nSize;
00130     OMX_VERSIONTYPE nVersion;
00131     OMX_BOOL bEnabled;    
00132 } OMX_CONFIG_BOOLEANTYPE;
00133 
00134 /* Parameter specifying the content uri to use. */
00135 /** @ingroup cp */
00136 typedef struct OMX_PARAM_CONTENTURITYPE
00137 {
00138     OMX_U32 nSize;                      /**< size of the structure in bytes, including
00139                                              actual URI name */
00140     OMX_VERSIONTYPE nVersion;           /**< OMX specification version information */
00141     OMX_U8 contentURI[1];               /**< The URI name */
00142 } OMX_PARAM_CONTENTURITYPE;
00143 
00144 /* Parameter specifying the pipe to use. */
00145 /** @ingroup cp */
00146 typedef struct OMX_PARAM_CONTENTPIPETYPE
00147 {
00148     OMX_U32 nSize;              /**< size of the structure in bytes */
00149     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
00150     OMX_HANDLETYPE hPipe;       /**< The pipe handle*/
00151 } OMX_PARAM_CONTENTPIPETYPE;
00152 
00153 /** @ingroup rpm */
00154 typedef struct OMX_RESOURCECONCEALMENTTYPE {
00155     OMX_U32 nSize;             /**< size of the structure in bytes */
00156     OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
00157     OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment 
00158                                             methods (like degrading algorithm quality to 
00159                                             lower resource consumption or functional bypass) 
00160                                             on a component as a resolution to resource conflicts. */
00161 } OMX_RESOURCECONCEALMENTTYPE;
00162 
00163 
00164 /** @ingroup metadata */
00165 typedef enum OMX_METADATACHARSETTYPE {
00166     OMX_MetadataCharsetUnknown = 0,
00167     OMX_MetadataCharsetASCII,
00168     OMX_MetadataCharsetBinary,
00169     OMX_MetadataCharsetCodePage1252,
00170     OMX_MetadataCharsetUTF8,
00171     OMX_MetadataCharsetJavaConformantUTF8,
00172     OMX_MetadataCharsetUTF7,
00173     OMX_MetadataCharsetImapUTF7,
00174     OMX_MetadataCharsetUTF16LE, 
00175     OMX_MetadataCharsetUTF16BE,
00176     OMX_MetadataCharsetGB12345,
00177     OMX_MetadataCharsetHZGB2312,
00178     OMX_MetadataCharsetGB2312,
00179     OMX_MetadataCharsetGB18030,
00180     OMX_MetadataCharsetGBK,
00181     OMX_MetadataCharsetBig5,
00182     OMX_MetadataCharsetISO88591,
00183     OMX_MetadataCharsetISO88592,
00184     OMX_MetadataCharsetISO88593,
00185     OMX_MetadataCharsetISO88594,
00186     OMX_MetadataCharsetISO88595,
00187     OMX_MetadataCharsetISO88596,
00188     OMX_MetadataCharsetISO88597,
00189     OMX_MetadataCharsetISO88598,
00190     OMX_MetadataCharsetISO88599,
00191     OMX_MetadataCharsetISO885910,
00192     OMX_MetadataCharsetISO885913,
00193     OMX_MetadataCharsetISO885914,
00194     OMX_MetadataCharsetISO885915,
00195     OMX_MetadataCharsetShiftJIS,
00196     OMX_MetadataCharsetISO2022JP,
00197     OMX_MetadataCharsetISO2022JP1,
00198     OMX_MetadataCharsetISOEUCJP,
00199     OMX_MetadataCharsetSMS7Bit,
00200     OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
00201     OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
00202     OMX_MetadataCharsetTypeMax= 0x7FFFFFFF
00203 } OMX_METADATACHARSETTYPE;
00204 
00205 /** @ingroup metadata */
00206 typedef enum OMX_METADATASCOPETYPE
00207 {
00208     OMX_MetadataScopeAllLevels,
00209     OMX_MetadataScopeTopLevel,
00210     OMX_MetadataScopePortLevel,
00211     OMX_MetadataScopeNodeLevel,
00212     OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
00213     OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
00214     OMX_MetadataScopeTypeMax = 0x7fffffff
00215 } OMX_METADATASCOPETYPE;
00216 
00217 /** @ingroup metadata */
00218 typedef enum OMX_METADATASEARCHMODETYPE
00219 {
00220     OMX_MetadataSearchValueSizeByIndex,
00221     OMX_MetadataSearchItemByIndex,
00222     OMX_MetadataSearchNextItemByKey,
00223     OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 
00224     OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
00225     OMX_MetadataSearchTypeMax = 0x7fffffff
00226 } OMX_METADATASEARCHMODETYPE;
00227 /** @ingroup metadata */
00228 typedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE
00229 {
00230     OMX_U32 nSize;
00231     OMX_VERSIONTYPE nVersion;
00232     OMX_METADATASCOPETYPE eScopeMode;
00233     OMX_U32 nScopeSpecifier;
00234     OMX_U32 nMetadataItemCount;
00235 } OMX_CONFIG_METADATAITEMCOUNTTYPE;
00236 
00237 /** @ingroup metadata */
00238 typedef struct OMX_CONFIG_METADATAITEMTYPE
00239 {
00240     OMX_U32 nSize;
00241     OMX_VERSIONTYPE nVersion;
00242     OMX_METADATASCOPETYPE eScopeMode;
00243     OMX_U32 nScopeSpecifier;
00244     OMX_U32 nMetadataItemIndex;  
00245     OMX_METADATASEARCHMODETYPE eSearchMode;
00246     OMX_METADATACHARSETTYPE eKeyCharset;
00247     OMX_U8 nKeySizeUsed;
00248     OMX_U8 nKey[128];
00249     OMX_METADATACHARSETTYPE eValueCharset;
00250     OMX_STRING sLanguageCountry;
00251     OMX_U32 nValueMaxSize;
00252     OMX_U32 nValueSizeUsed;
00253     OMX_U8 nValue[1];
00254 } OMX_CONFIG_METADATAITEMTYPE;
00255 
00256 /* @ingroup metadata */
00257 typedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE
00258 {
00259     OMX_U32 nSize;
00260     OMX_VERSIONTYPE nVersion;
00261     OMX_BOOL bAllKeys;
00262     OMX_U32 nParentNodeID;
00263     OMX_U32 nNumNodes;
00264 } OMX_CONFIG_CONTAINERNODECOUNTTYPE;
00265 
00266 /** @ingroup metadata */
00267 typedef struct OMX_CONFIG_CONTAINERNODEIDTYPE
00268 {
00269     OMX_U32 nSize;
00270     OMX_VERSIONTYPE nVersion;
00271     OMX_BOOL bAllKeys;
00272     OMX_U32 nParentNodeID;
00273     OMX_U32 nNodeIndex; 
00274     OMX_U32 nNodeID; 
00275     OMX_STRING cNodeName;
00276     OMX_BOOL bIsLeafType;
00277 } OMX_CONFIG_CONTAINERNODEIDTYPE;
00278 
00279 /** @ingroup metadata */
00280 typedef struct OMX_PARAM_METADATAFILTERTYPE 
00281 { 
00282     OMX_U32 nSize; 
00283     OMX_VERSIONTYPE nVersion; 
00284     OMX_BOOL bAllKeys;  /* if true then this structure refers to all keys and 
00285                          * the three key fields below are ignored */
00286     OMX_METADATACHARSETTYPE eKeyCharset;
00287     OMX_U32 nKeySizeUsed; 
00288     OMX_U8   nKey [128]; 
00289     OMX_U32 nLanguageCountrySizeUsed;
00290     OMX_U8 nLanguageCountry[128];
00291     OMX_BOOL bEnabled;  /* if true then key is part of filter (e.g. 
00292                          * retained for query later). If false then
00293                          * key is not part of filter */
00294 } OMX_PARAM_METADATAFILTERTYPE; 
00295 
00296 /** The OMX_HANDLETYPE structure defines the component handle.  The component 
00297  *  handle is used to access all of the component's public methods and also
00298  *  contains pointers to the component's private data area.  The component
00299  *  handle is initialized by the OMX core (with help from the component)
00300  *  during the process of loading the component.  After the component is
00301  *  successfully loaded, the application can safely access any of the
00302  *  component's public functions (although some may return an error because
00303  *  the state is inappropriate for the access).
00304  * 
00305  *  @ingroup comp
00306  */
00307 typedef struct OMX_COMPONENTTYPE
00308 {
00309     /** The size of this structure, in bytes.  It is the responsibility
00310         of the allocator of this structure to fill in this value.  Since
00311         this structure is allocated by the GetHandle function, this
00312         function will fill in this value. */
00313     OMX_U32 nSize;
00314 
00315     /** nVersion is the version of the OMX specification that the structure 
00316         is built against.  It is the responsibility of the creator of this 
00317         structure to initialize this value and every user of this structure 
00318         should verify that it knows how to use the exact version of 
00319         this structure found herein. */
00320     OMX_VERSIONTYPE nVersion;
00321 
00322     /** pComponentPrivate is a pointer to the component private data area.  
00323         This member is allocated and initialized by the component when the 
00324         component is first loaded.  The application should not access this 
00325         data area. */
00326     OMX_PTR pComponentPrivate;
00327 
00328     /** pApplicationPrivate is a pointer that is a parameter to the 
00329         OMX_GetHandle method, and contains an application private value 
00330         provided by the IL client.  This application private data is 
00331         returned to the IL Client by OMX in all callbacks */
00332     OMX_PTR pApplicationPrivate;
00333 
00334     /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL 
00335         specification for details on the GetComponentVersion method.
00336      */
00337     OMX_ERRORTYPE (*GetComponentVersion)(
00338             OMX_IN  OMX_HANDLETYPE hComponent,
00339             OMX_OUT OMX_STRING pComponentName,
00340             OMX_OUT OMX_VERSIONTYPE* pComponentVersion,
00341             OMX_OUT OMX_VERSIONTYPE* pSpecVersion,
00342             OMX_OUT OMX_UUIDTYPE* pComponentUUID);
00343 
00344     /** refer to OMX_SendCommand in OMX_core.h or the OMX IL 
00345         specification for details on the SendCommand method.
00346      */
00347     OMX_ERRORTYPE (*SendCommand)(
00348             OMX_IN  OMX_HANDLETYPE hComponent,
00349             OMX_IN  OMX_COMMANDTYPE Cmd,
00350             OMX_IN  OMX_U32 nParam1,
00351             OMX_IN  OMX_PTR pCmdData);
00352 
00353     /** refer to OMX_GetParameter in OMX_core.h or the OMX IL 
00354         specification for details on the GetParameter method.
00355      */
00356     OMX_ERRORTYPE (*GetParameter)(
00357             OMX_IN  OMX_HANDLETYPE hComponent, 
00358             OMX_IN  OMX_INDEXTYPE nParamIndex,  
00359             OMX_INOUT OMX_PTR pComponentParameterStructure);
00360 
00361 
00362     /** refer to OMX_SetParameter in OMX_core.h or the OMX IL 
00363         specification for details on the SetParameter method.
00364      */
00365     OMX_ERRORTYPE (*SetParameter)(
00366             OMX_IN  OMX_HANDLETYPE hComponent, 
00367             OMX_IN  OMX_INDEXTYPE nIndex,
00368             OMX_IN  OMX_PTR pComponentParameterStructure);
00369 
00370 
00371     /** refer to OMX_GetConfig in OMX_core.h or the OMX IL 
00372         specification for details on the GetConfig method.
00373      */
00374     OMX_ERRORTYPE (*GetConfig)(
00375             OMX_IN  OMX_HANDLETYPE hComponent,
00376             OMX_IN  OMX_INDEXTYPE nIndex, 
00377             OMX_INOUT OMX_PTR pComponentConfigStructure);
00378 
00379 
00380     /** refer to OMX_SetConfig in OMX_core.h or the OMX IL 
00381         specification for details on the SetConfig method.
00382      */
00383     OMX_ERRORTYPE (*SetConfig)(
00384             OMX_IN  OMX_HANDLETYPE hComponent,
00385             OMX_IN  OMX_INDEXTYPE nIndex, 
00386             OMX_IN  OMX_PTR pComponentConfigStructure);
00387 
00388 
00389     /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL 
00390         specification for details on the GetExtensionIndex method.
00391      */
00392     OMX_ERRORTYPE (*GetExtensionIndex)(
00393             OMX_IN  OMX_HANDLETYPE hComponent,
00394             OMX_IN  OMX_STRING cParameterName,
00395             OMX_OUT OMX_INDEXTYPE* pIndexType);
00396 
00397 
00398     /** refer to OMX_GetState in OMX_core.h or the OMX IL 
00399         specification for details on the GetState method.
00400      */
00401     OMX_ERRORTYPE (*GetState)(
00402             OMX_IN  OMX_HANDLETYPE hComponent,
00403             OMX_OUT OMX_STATETYPE* pState);
00404 
00405     
00406     /** The ComponentTunnelRequest method will interact with another OMX
00407         component to determine if tunneling is possible and to setup the
00408         tunneling.  The return codes for this method can be used to 
00409         determine if tunneling is not possible, or if tunneling is not
00410         supported.  
00411         
00412         Base profile components (i.e. non-interop) do not support this
00413         method and should return OMX_ErrorNotImplemented 
00414 
00415         The interop profile component MUST support tunneling to another 
00416         interop profile component with a compatible port parameters.  
00417         A component may also support proprietary communication.
00418         
00419         If proprietary communication is supported the negotiation of 
00420         proprietary communication is done outside of OMX in a vendor 
00421         specific way. It is only required that the proper result be 
00422         returned and the details of how the setup is done is left 
00423         to the component implementation.  
00424     
00425         When this method is invoked when nPort in an output port, the
00426         component will:
00427         1.  Populate the pTunnelSetup structure with the output port's 
00428             requirements and constraints for the tunnel.
00429 
00430         When this method is invoked when nPort in an input port, the
00431         component will:
00432         1.  Query the necessary parameters from the output port to 
00433             determine if the ports are compatible for tunneling
00434         2.  If the ports are compatible, the component should store
00435             the tunnel step provided by the output port
00436         3.  Determine which port (either input or output) is the buffer
00437             supplier, and call OMX_SetParameter on the output port to
00438             indicate this selection.
00439         
00440         The component will return from this call within 5 msec.
00441     
00442         @param [in] hComp
00443             Handle of the component to be accessed.  This is the component
00444             handle returned by the call to the OMX_GetHandle method.
00445         @param [in] nPort
00446             nPort is used to select the port on the component to be used
00447             for tunneling.
00448         @param [in] hTunneledComp
00449             Handle of the component to tunnel with.  This is the component 
00450             handle returned by the call to the OMX_GetHandle method.  When
00451             this parameter is 0x0 the component should setup the port for
00452             communication with the application / IL Client.
00453         @param [in] nPortOutput
00454             nPortOutput is used indicate the port the component should
00455             tunnel with.
00456         @param [in] pTunnelSetup
00457             Pointer to the tunnel setup structure.  When nPort is an output port
00458             the component should populate the fields of this structure.  When
00459             When nPort is an input port the component should review the setup
00460             provided by the component with the output port.
00461         @return OMX_ERRORTYPE
00462             If the command successfully executes, the return code will be
00463             OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
00464         @ingroup tun
00465     */
00466 
00467     OMX_ERRORTYPE (*ComponentTunnelRequest)(
00468         OMX_IN  OMX_HANDLETYPE hComp,
00469         OMX_IN  OMX_U32 nPort,
00470         OMX_IN  OMX_HANDLETYPE hTunneledComp,
00471         OMX_IN  OMX_U32 nTunneledPort,
00472         OMX_INOUT  OMX_TUNNELSETUPTYPE* pTunnelSetup); 
00473 
00474     /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL 
00475         specification for details on the UseBuffer method.
00476         @ingroup buf
00477      */
00478     OMX_ERRORTYPE (*UseBuffer)(
00479             OMX_IN OMX_HANDLETYPE hComponent,
00480             OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
00481             OMX_IN OMX_U32 nPortIndex,
00482             OMX_IN OMX_PTR pAppPrivate,
00483             OMX_IN OMX_U32 nSizeBytes,
00484             OMX_IN OMX_U8* pBuffer);
00485 
00486     /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL 
00487         specification for details on the AllocateBuffer method.
00488         @ingroup buf
00489      */
00490     OMX_ERRORTYPE (*AllocateBuffer)(
00491             OMX_IN OMX_HANDLETYPE hComponent,
00492             OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer,
00493             OMX_IN OMX_U32 nPortIndex,
00494             OMX_IN OMX_PTR pAppPrivate,
00495             OMX_IN OMX_U32 nSizeBytes);
00496 
00497     /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL 
00498         specification for details on the FreeBuffer method.
00499         @ingroup buf
00500      */
00501     OMX_ERRORTYPE (*FreeBuffer)(
00502             OMX_IN  OMX_HANDLETYPE hComponent,
00503             OMX_IN  OMX_U32 nPortIndex,
00504             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
00505 
00506     /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL 
00507         specification for details on the EmptyThisBuffer method.
00508         @ingroup buf
00509      */
00510     OMX_ERRORTYPE (*EmptyThisBuffer)(
00511             OMX_IN  OMX_HANDLETYPE hComponent,
00512             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
00513 
00514     /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL 
00515         specification for details on the FillThisBuffer method.
00516         @ingroup buf
00517      */
00518     OMX_ERRORTYPE (*FillThisBuffer)(
00519             OMX_IN  OMX_HANDLETYPE hComponent,
00520             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
00521 
00522     /** The SetCallbacks method is used by the core to specify the callback
00523         structure from the application to the component.  This is a blocking
00524         call.  The component will return from this call within 5 msec.
00525         @param [in] hComponent
00526             Handle of the component to be accessed.  This is the component
00527             handle returned by the call to the GetHandle function.
00528         @param [in] pCallbacks
00529             pointer to an OMX_CALLBACKTYPE structure used to provide the 
00530             callback information to the component
00531         @param [in] pAppData
00532             pointer to an application defined value.  It is anticipated that 
00533             the application will pass a pointer to a data structure or a "this
00534             pointer" in this area to allow the callback (in the application)
00535             to determine the context of the call
00536         @return OMX_ERRORTYPE
00537             If the command successfully executes, the return code will be
00538             OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
00539      */
00540     OMX_ERRORTYPE (*SetCallbacks)(
00541             OMX_IN  OMX_HANDLETYPE hComponent,
00542             OMX_IN  OMX_CALLBACKTYPE* pCallbacks, 
00543             OMX_IN  OMX_PTR pAppData);
00544 
00545     /** ComponentDeInit method is used to deinitialize the component
00546         providing a means to free any resources allocated at component
00547         initialization.  NOTE:  After this call the component handle is
00548         not valid for further use.
00549         @param [in] hComponent
00550             Handle of the component to be accessed.  This is the component
00551             handle returned by the call to the GetHandle function.
00552         @return OMX_ERRORTYPE
00553             If the command successfully executes, the return code will be
00554             OMX_ErrorNone.  Otherwise the appropriate OMX error will be returned.
00555      */
00556     OMX_ERRORTYPE (*ComponentDeInit)(
00557             OMX_IN  OMX_HANDLETYPE hComponent);
00558 
00559     /** @ingroup buf */
00560     OMX_ERRORTYPE (*UseEGLImage)(
00561             OMX_IN OMX_HANDLETYPE hComponent,
00562             OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
00563             OMX_IN OMX_U32 nPortIndex,
00564             OMX_IN OMX_PTR pAppPrivate,
00565             OMX_IN void* eglImage);
00566 
00567     OMX_ERRORTYPE (*ComponentRoleEnum)(
00568         OMX_IN OMX_HANDLETYPE hComponent,
00569         OMX_OUT OMX_U8 *cRole,
00570         OMX_IN OMX_U32 nIndex);
00571 
00572 } OMX_COMPONENTTYPE;
00573 
00574 #ifdef __cplusplus
00575 }
00576 #endif /* __cplusplus */
00577 
00578 #endif
00579 /* File EOF */

Generated on Tue May 25 08:04:54 2010 for VLC by  doxygen 1.5.6