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 */ 580