OpenMAXBellagio 0.9.3
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 
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 
00050 typedef enum OMX_PORTDOMAINTYPE { 
00051     OMX_PortDomainAudio, 
00052     OMX_PortDomainVideo, 
00053     OMX_PortDomainImage, 
00054     OMX_PortDomainOther,
00055     OMX_PortDomainKhronosExtensions = 0x6F000000, 
00056     OMX_PortDomainVendorStartUnused = 0x7F000000, 
00057     OMX_PortDomainMax = 0x7ffffff
00058 } OMX_PORTDOMAINTYPE;
00059 
00061 typedef struct OMX_PARAM_PORTDEFINITIONTYPE {
00062     OMX_U32 nSize;                 
00063     OMX_VERSIONTYPE nVersion;      
00064     OMX_U32 nPortIndex;            
00065     OMX_DIRTYPE eDir;              
00066     OMX_U32 nBufferCountActual;    
00067     OMX_U32 nBufferCountMin;       
00068     OMX_U32 nBufferSize;           
00069     OMX_BOOL bEnabled;             
00073     OMX_BOOL bPopulated;           
00077     OMX_PORTDOMAINTYPE eDomain;    
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 
00089 typedef struct OMX_PARAM_U32TYPE { 
00090     OMX_U32 nSize;                    
00091     OMX_VERSIONTYPE nVersion;         
00092     OMX_U32 nPortIndex;               
00093     OMX_U32 nU32;                     
00094 } OMX_PARAM_U32TYPE;
00095 
00097 typedef enum OMX_SUSPENSIONPOLICYTYPE {
00098     OMX_SuspensionDisabled, 
00099     OMX_SuspensionEnabled,  
00100     OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, 
00101     OMX_SuspensionPolicyStartUnused = 0x7F000000, 
00102     OMX_SuspensionPolicyMax = 0x7fffffff
00103 } OMX_SUSPENSIONPOLICYTYPE;
00104 
00106 typedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE {
00107     OMX_U32 nSize;                  
00108     OMX_VERSIONTYPE nVersion;        
00109     OMX_SUSPENSIONPOLICYTYPE ePolicy;
00110 } OMX_PARAM_SUSPENSIONPOLICYTYPE;
00111 
00113 typedef enum OMX_SUSPENSIONTYPE {
00114     OMX_NotSuspended, 
00115     OMX_Suspended,    
00116     OMX_SuspensionKhronosExtensions = 0x6F000000, 
00117     OMX_SuspensionVendorStartUnused = 0x7F000000, 
00118     OMX_SuspendMax = 0x7FFFFFFF
00119 } OMX_SUSPENSIONTYPE;
00120 
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. */
00136 typedef struct OMX_PARAM_CONTENTURITYPE
00137 {
00138     OMX_U32 nSize;                      
00140     OMX_VERSIONTYPE nVersion;           
00141     OMX_U8 contentURI[1];               
00142 } OMX_PARAM_CONTENTURITYPE;
00143 
00144 /* Parameter specifying the pipe to use. */
00146 typedef struct OMX_PARAM_CONTENTPIPETYPE
00147 {
00148     OMX_U32 nSize;              
00149     OMX_VERSIONTYPE nVersion;   
00150     OMX_HANDLETYPE hPipe;       
00151 } OMX_PARAM_CONTENTPIPETYPE;
00152 
00154 typedef struct OMX_RESOURCECONCEALMENTTYPE {
00155     OMX_U32 nSize;             
00156     OMX_VERSIONTYPE nVersion;  
00157     OMX_BOOL bResourceConcealmentForbidden; 
00161 } OMX_RESOURCECONCEALMENTTYPE;
00162 
00163 
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, 
00201     OMX_MetadataCharsetVendorStartUnused = 0x7F000000, 
00202     OMX_MetadataCharsetTypeMax= 0x7FFFFFFF
00203 } OMX_METADATACHARSETTYPE;
00204 
00206 typedef enum OMX_METADATASCOPETYPE
00207 {
00208     OMX_MetadataScopeAllLevels,
00209     OMX_MetadataScopeTopLevel,
00210     OMX_MetadataScopePortLevel,
00211     OMX_MetadataScopeNodeLevel,
00212     OMX_MetadataScopeKhronosExtensions = 0x6F000000, 
00213     OMX_MetadataScopeVendorStartUnused = 0x7F000000, 
00214     OMX_MetadataScopeTypeMax = 0x7fffffff
00215 } OMX_METADATASCOPETYPE;
00216 
00218 typedef enum OMX_METADATASEARCHMODETYPE
00219 {
00220     OMX_MetadataSearchValueSizeByIndex,
00221     OMX_MetadataSearchItemByIndex,
00222     OMX_MetadataSearchNextItemByKey,
00223     OMX_MetadataSearchKhronosExtensions = 0x6F000000, 
00224     OMX_MetadataSearchVendorStartUnused = 0x7F000000, 
00225     OMX_MetadataSearchTypeMax = 0x7fffffff
00226 } OMX_METADATASEARCHMODETYPE;
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 
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 
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 
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 
00307 typedef struct OMX_COMPONENTTYPE
00308 {
00313     OMX_U32 nSize;
00314 
00320     OMX_VERSIONTYPE nVersion;
00321 
00326     OMX_PTR pComponentPrivate;
00327 
00332     OMX_PTR pApplicationPrivate;
00333 
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 
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 
00356     OMX_ERRORTYPE (*GetParameter)(
00357             OMX_IN  OMX_HANDLETYPE hComponent, 
00358             OMX_IN  OMX_INDEXTYPE nParamIndex,  
00359             OMX_INOUT OMX_PTR pComponentParameterStructure);
00360 
00361 
00365     OMX_ERRORTYPE (*SetParameter)(
00366             OMX_IN  OMX_HANDLETYPE hComponent, 
00367             OMX_IN  OMX_INDEXTYPE nIndex,
00368             OMX_IN  OMX_PTR pComponentParameterStructure);
00369 
00370 
00374     OMX_ERRORTYPE (*GetConfig)(
00375             OMX_IN  OMX_HANDLETYPE hComponent,
00376             OMX_IN  OMX_INDEXTYPE nIndex, 
00377             OMX_INOUT OMX_PTR pComponentConfigStructure);
00378 
00379 
00383     OMX_ERRORTYPE (*SetConfig)(
00384             OMX_IN  OMX_HANDLETYPE hComponent,
00385             OMX_IN  OMX_INDEXTYPE nIndex, 
00386             OMX_IN  OMX_PTR pComponentConfigStructure);
00387 
00388 
00392     OMX_ERRORTYPE (*GetExtensionIndex)(
00393             OMX_IN  OMX_HANDLETYPE hComponent,
00394             OMX_IN  OMX_STRING cParameterName,
00395             OMX_OUT OMX_INDEXTYPE* pIndexType);
00396 
00397 
00401     OMX_ERRORTYPE (*GetState)(
00402             OMX_IN  OMX_HANDLETYPE hComponent,
00403             OMX_OUT OMX_STATETYPE* pState);
00404 
00405     
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 
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 
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 
00501     OMX_ERRORTYPE (*FreeBuffer)(
00502             OMX_IN  OMX_HANDLETYPE hComponent,
00503             OMX_IN  OMX_U32 nPortIndex,
00504             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
00505 
00510     OMX_ERRORTYPE (*EmptyThisBuffer)(
00511             OMX_IN  OMX_HANDLETYPE hComponent,
00512             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
00513 
00518     OMX_ERRORTYPE (*FillThisBuffer)(
00519             OMX_IN  OMX_HANDLETYPE hComponent,
00520             OMX_IN  OMX_BUFFERHEADERTYPE* pBuffer);
00521 
00540     OMX_ERRORTYPE (*SetCallbacks)(
00541             OMX_IN  OMX_HANDLETYPE hComponent,
00542             OMX_IN  OMX_CALLBACKTYPE* pCallbacks, 
00543             OMX_IN  OMX_PTR pAppData);
00544 
00556     OMX_ERRORTYPE (*ComponentDeInit)(
00557             OMX_IN  OMX_HANDLETYPE hComponent);
00558 
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 */