| OLD | NEW |
| (Empty) |
| 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 intro
ducing Khronos Standard Extensions */ | |
| 56 OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for intro
ducing 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 o
n 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 f
or this channel */ | |
| 69 OMX_BOOL bEnabled; /**< Ports default to enabled and are enabled
/disabled by | |
| 70 OMX_CommandPortEnable/OMX_CommandPortDis
able. | |
| 71 When disabled a port is unpopulated. A d
isabled port | |
| 72 is not populated with buffers on a trans
ition to IDLE. */ | |
| 73 OMX_BOOL bPopulated; /**< Port is populated with all of its buffer
s as indicated by | |
| 74 nBufferCountActual. A disabled port is a
lways unpopulated. | |
| 75 An enabled port is populated on a transi
tion to OMX_StateIdle | |
| 76 and unpopulated on a transition to loade
d. */ | |
| 77 OMX_PORTDOMAINTYPE eDomain; /**< Domain of the port. Determines the conte
nts 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 intro
ducing 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 intro
ducing Khronos Standard Extensions */ | |
| 117 OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for intro
ducing 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, inc
luding | |
| 139 actual URI name */ | |
| 140 OMX_VERSIONTYPE nVersion; /**< OMX specification version informati
on */ | |
| 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 co
ncealment | |
| 158 methods (like degrading algorithm qu
ality to | |
| 159 lower resource consumption or functi
onal bypass) | |
| 160 on a component as a resolution to re
source 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 in
troducing Khronos Standard Extensions */ | |
| 213 OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for in
troducing 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 i
ntroducing Khronos Standard Extensions */ | |
| 224 OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for i
ntroducing 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 */ | |
| OLD | NEW |