|
OpenMAXBellagio 0.9.3
|
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 */