111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* 211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Copyright (c) 2008 The Khronos Group Inc. 311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Permission is hereby granted, free of charge, to any person obtaining 511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * a copy of this software and associated documentation files (the 611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * "Software"), to deal in the Software without restriction, including 711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * without limitation the rights to use, copy, modify, merge, publish, 811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * distribute, sublicense, and/or sell copies of the Software, and to 911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * permit persons to whom the Software is furnished to do so, subject 1011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to the following conditions: 1111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * The above copyright notice and this permission notice shall be included 1211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * in all copies or substantial portions of the Software. 1311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 1411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 1511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 2011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 2211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 2311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 2411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** OMX_Core.h - OpenMax IL version 1.1.2 2511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * The OMX_Core header file contains the definitions used by both the 2611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * application and the component to access common items. 2711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 2811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 2911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#ifndef OMX_Core_h 3011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_Core_h 3111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 3211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#ifdef __cplusplus 3311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelextern "C" { 3411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#endif /* __cplusplus */ 3511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 3611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 3711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* Each OMX header shall include all required header files to allow the 3811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * header to compile without errors. The includes below are required 3911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * for this header file to compile successfully 4011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 4111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 4211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#include <OMX_Index.h> 4311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 4411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 4511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_COMMANDTYPE enumeration is used to specify the action in the 4611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_SendCommand macro. 4711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * @ingroup core 4811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 4911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_COMMANDTYPE 5011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{ 5111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_CommandStateSet, /**< Change the component state */ 5211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_CommandFlush, /**< Flush the data queue(s) of a component */ 5311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_CommandPortDisable, /**< Disable a port on a component. */ 5411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_CommandPortEnable, /**< Enable a port on a component. */ 5511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_CommandMarkBuffer, /**< Mark a component/buffer for observation */ 5611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_CommandKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 5711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_CommandVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 5811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_CommandMax = 0X7FFFFFFF 5911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_COMMANDTYPE; 6011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 6111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 6211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 6311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_STATETYPE enumeration is used to indicate or change the component 6411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * state. This enumeration reflects the current state of the component when 6511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * used with the OMX_GetState macro or becomes the parameter in a state change 6611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * command when used with the OMX_SendCommand macro. 6711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 6811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * The component will be in the Loaded state after the component is initially 6911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * loaded into memory. In the Loaded state, the component is not allowed to 7011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * allocate or hold resources other than to build it's internal parameter 7111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * and configuration tables. The application will send one or more 7211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * SetParameters/GetParameters and SetConfig/GetConfig commands to the 7311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * component and the component will record each of these parameter and 7411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * configuration changes for use later. When the application sends the 7511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Idle command, the component will acquire the resources needed for the 7611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * specified configuration and will transition to the idle state if the 7711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * allocation is successful. If the component cannot successfully 7811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * transition to the idle state for any reason, the state of the component 7911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * shall be fully rolled back to the Loaded state (e.g. all allocated 8011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * resources shall be released). When the component receives the command 8111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to go to the Executing state, it shall begin processing buffers by 8211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * sending all input buffers it holds to the application. While 8311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * the component is in the Idle state, the application may also send the 8411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Pause command. If the component receives the pause command while in the 8511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Idle state, the component shall send all input buffers it holds to the 8611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * application, but shall not begin processing buffers. This will allow the 8711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * application to prefill buffers. 8811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 8911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * @ingroup comp 9011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 9111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 9211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_STATETYPE 9311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{ 9411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StateInvalid, /**< component has detected that it's internal data 9511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel structures are corrupted to the point that 9611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel it cannot determine it's state properly */ 9711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StateLoaded, /**< component has been loaded but has not completed 9811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel initialization. The OMX_SetParameter macro 9911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel and the OMX_GetParameter macro are the only 10011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel valid macros allowed to be sent to the 10111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component in this state. */ 10211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StateIdle, /**< component initialization has been completed 10311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel successfully and the component is ready to 10411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel to start. */ 10511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StateExecuting, /**< component has accepted the start command and 10611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel is processing data (if data is available) */ 10711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StatePause, /**< component has received pause command */ 10811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StateWaitForResources, /**< component is waiting for resources, either after 10911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel preemption or before it gets the resources requested. 11011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel See specification for complete details. */ 11111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 11211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 11311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StateMax = 0X7FFFFFFF 11411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_STATETYPE; 11511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 11611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_ERRORTYPE enumeration defines the standard OMX Errors. These 11711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * errors should cover most of the common failure cases. However, 11811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * vendors are free to add additional error messages of their own as 11911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * long as they follow these rules: 12011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 1. Vendor error messages shall be in the range of 0x90000000 to 12111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 0x9000FFFF. 12211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 2. Vendor error messages shall be defined in a header file provided 12311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * with the component. No error messages are allowed that are 12411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * not defined. 12511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 12611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_ERRORTYPE 12711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{ 12811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone = 0, 12911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 13011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** There were insufficient resources to perform the requested operation */ 13111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorInsufficientResources = (OMX_S32) 0x80001000, 13211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 13311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** There was an error, but the cause of the error could not be determined */ 13411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorUndefined = (OMX_S32) 0x80001001, 13511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 13611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The component name string was not valid */ 13711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorInvalidComponentName = (OMX_S32) 0x80001002, 13811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 13911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** No component with the specified name string was found */ 14011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorComponentNotFound = (OMX_S32) 0x80001003, 14111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 14211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The component specified did not have a "OMX_ComponentInit" or 14311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel "OMX_ComponentDeInit entry point */ 14411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorInvalidComponent = (OMX_S32) 0x80001004, 14511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 14611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** One or more parameters were not valid */ 14711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorBadParameter = (OMX_S32) 0x80001005, 14811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 14911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The requested function is not implemented */ 15011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNotImplemented = (OMX_S32) 0x80001006, 15111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 15211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The buffer was emptied before the next buffer was ready */ 15311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorUnderflow = (OMX_S32) 0x80001007, 15411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 15511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The buffer was not available when it was needed */ 15611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorOverflow = (OMX_S32) 0x80001008, 15711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 15811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The hardware failed to respond as expected */ 15911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorHardware = (OMX_S32) 0x80001009, 16011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 16111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The component is in the state OMX_StateInvalid */ 16211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorInvalidState = (OMX_S32) 0x8000100A, 16311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 16411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** Stream is found to be corrupt */ 16511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorStreamCorrupt = (OMX_S32) 0x8000100B, 16611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 16711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** Ports being connected are not compatible */ 16811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorPortsNotCompatible = (OMX_S32) 0x8000100C, 16911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 17011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** Resources allocated to an idle component have been 17111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel lost resulting in the component returning to the loaded state */ 17211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorResourcesLost = (OMX_S32) 0x8000100D, 17311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 17411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** No more indicies can be enumerated */ 17511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNoMore = (OMX_S32) 0x8000100E, 17611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 17711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The component detected a version mismatch */ 17811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorVersionMismatch = (OMX_S32) 0x8000100F, 17911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 18011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The component is not ready to return data at this time */ 18111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNotReady = (OMX_S32) 0x80001010, 18211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 18311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** There was a timeout that occurred */ 18411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorTimeout = (OMX_S32) 0x80001011, 18511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 18611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** This error occurs when trying to transition into the state you are already in */ 18711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorSameState = (OMX_S32) 0x80001012, 18811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 18911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** Resources allocated to an executing or paused component have been 19011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel preempted, causing the component to return to the idle state */ 19111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorResourcesPreempted = (OMX_S32) 0x80001013, 19211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 19311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** A non-supplier port sends this error to the IL client (via the EventHandler callback) 19411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel during the allocation of buffers (on a transition from the LOADED to the IDLE state or 19511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel on a port restart) when it deems that it has waited an unusually long time for the supplier 19611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel to send it an allocated buffer via a UseBuffer call. */ 19711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorPortUnresponsiveDuringAllocation = (OMX_S32) 0x80001014, 19811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 19911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** A non-supplier port sends this error to the IL client (via the EventHandler callback) 20011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel during the deallocation of buffers (on a transition from the IDLE to LOADED state or 20111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel on a port stop) when it deems that it has waited an unusually long time for the supplier 20211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel to request the deallocation of a buffer header via a FreeBuffer call. */ 20311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorPortUnresponsiveDuringDeallocation = (OMX_S32) 0x80001015, 20411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 20511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** A supplier port sends this error to the IL client (via the EventHandler callback) 20611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel during the stopping of a port (either on a transition from the IDLE to LOADED 20711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel state or a port stop) when it deems that it has waited an unusually long time for 20811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the non-supplier to return a buffer via an EmptyThisBuffer or FillThisBuffer call. */ 20911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorPortUnresponsiveDuringStop = (OMX_S32) 0x80001016, 21011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 21111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** Attempting a state transtion that is not allowed */ 21211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorIncorrectStateTransition = (OMX_S32) 0x80001017, 21311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 21411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /* Attempting a command that is not allowed during the present state. */ 21511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorIncorrectStateOperation = (OMX_S32) 0x80001018, 21611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 21711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The values encapsulated in the parameter or config structure are not supported. */ 21811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorUnsupportedSetting = (OMX_S32) 0x80001019, 21911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 22011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The parameter or config indicated by the given index is not supported. */ 22111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorUnsupportedIndex = (OMX_S32) 0x8000101A, 22211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 22311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The port index supplied is incorrect. */ 22411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorBadPortIndex = (OMX_S32) 0x8000101B, 22511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 22611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The port has lost one or more of its buffers and it thus unpopulated. */ 22711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorPortUnpopulated = (OMX_S32) 0x8000101C, 22811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 22911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** Component suspended due to temporary loss of resources */ 23011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorComponentSuspended = (OMX_S32) 0x8000101D, 23111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 23211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** Component suspended due to an inability to acquire dynamic resources */ 23311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorDynamicResourcesUnavailable = (OMX_S32) 0x8000101E, 23411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 23511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** When the macroblock error reporting is enabled the component returns new error 23611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel for every frame that has errors */ 23711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorMbErrorsInFrame = (OMX_S32) 0x8000101F, 23811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 23911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** A component reports this error when it cannot parse or determine the format of an input stream. */ 24011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorFormatNotDetected = (OMX_S32) 0x80001020, 24111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 24211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The content open operation failed. */ 24311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorContentPipeOpenFailed = (OMX_S32) 0x80001021, 24411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 24511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The content creation operation failed. */ 24611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorContentPipeCreationFailed = (OMX_S32) 0x80001022, 24711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 24811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** Separate table information is being used */ 24911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorSeperateTablesUsed = (OMX_S32) 0x80001023, 25011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 25111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** Tunneling is unsupported by the component*/ 25211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorTunnelingUnsupported = (OMX_S32) 0x80001024, 25311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 25411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorKhronosExtensions = (OMX_S32)0x8F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 25511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorVendorStartUnused = (OMX_S32)0x90000000, /**< Reserved region for introducing Vendor Extensions */ 25611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorMax = 0x7FFFFFFF 25711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_ERRORTYPE; 25811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 25911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** @ingroup core */ 26011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef OMX_ERRORTYPE (* OMX_COMPONENTINITTYPE)(OMX_IN OMX_HANDLETYPE hComponent); 26111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 26211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** @ingroup core */ 26311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_COMPONENTREGISTERTYPE 26411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{ 26511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel const char * pName; /* Component name, 128 byte limit (including '\0') applies */ 26611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_COMPONENTINITTYPE pInitialize; /* Component instance initialization function */ 26711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_COMPONENTREGISTERTYPE; 26811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 26911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** @ingroup core */ 27011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelextern OMX_COMPONENTREGISTERTYPE OMX_ComponentRegistered[]; 27111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 27211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** @ingroup rpm */ 27311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_PRIORITYMGMTTYPE { 27411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nSize; /**< size of the structure in bytes */ 27511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 27611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nGroupPriority; /**< Priority of the component group */ 27711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nGroupID; /**< ID of the component group */ 27811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_PRIORITYMGMTTYPE; 27911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 28011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* Component name and Role names are limited to 128 characters including the terminating '\0'. */ 28111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_MAX_STRINGNAME_SIZE 128 28211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 28311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** @ingroup comp */ 28411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_PARAM_COMPONENTROLETYPE { 28511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nSize; /**< size of the structure in bytes */ 28611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 28711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U8 cRole[OMX_MAX_STRINGNAME_SIZE]; /**< name of standard component which defines component role */ 28811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_PARAM_COMPONENTROLETYPE; 28911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 29011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** End of Stream Buffer Flag: 29111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 29211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * A component sets EOS when it has no more data to emit on a particular 29311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * output port. Thus an output port shall set EOS on the last buffer it 29411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * emits. A component's determination of when an output port should 29511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * cease sending data is implemenation specific. 29611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * @ingroup buf 29711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 29811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 29911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_BUFFERFLAG_EOS 0x00000001 30011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 30111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** Start Time Buffer Flag: 30211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 30311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * The source of a stream (e.g. a demux component) sets the STARTTIME 30411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * flag on the buffer that contains the starting timestamp for the 30511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * stream. The starting timestamp corresponds to the first data that 30611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * should be displayed at startup or after a seek. 30711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * The first timestamp of the stream is not necessarily the start time. 30811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * For instance, in the case of a seek to a particular video frame, 30911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * the target frame may be an interframe. Thus the first buffer of 31011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * the stream will be the intra-frame preceding the target frame and 31111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * the starttime will occur with the target frame (with any other 31211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * required frames required to reconstruct the target intervening). 31311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 31411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * The STARTTIME flag is directly associated with the buffer's 31511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * timestamp ' thus its association to buffer data and its 31611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * propagation is identical to the timestamp's. 31711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 31811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * When a Sync Component client receives a buffer with the 31911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STARTTIME flag it shall perform a SetConfig on its sync port 32011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * using OMX_ConfigTimeClientStartTime and passing the buffer's 32111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * timestamp. 32211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 32311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * @ingroup buf 32411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 32511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 32611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_BUFFERFLAG_STARTTIME 0x00000002 32711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 32811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 32911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 33011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** Decode Only Buffer Flag: 33111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 33211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * The source of a stream (e.g. a demux component) sets the DECODEONLY 33311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * flag on any buffer that should shall be decoded but should not be 33411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * displayed. This flag is used, for instance, when a source seeks to 33511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * a target interframe that requires the decode of frames preceding the 33611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * target to facilitate the target's reconstruction. In this case the 33711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * source would emit the frames preceding the target downstream 33811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * but mark them as decode only. 33911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 34011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * The DECODEONLY is associated with buffer data and propagated in a 34111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * manner identical to the buffer timestamp. 34211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 34311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * A component that renders data should ignore all buffers with 34411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * the DECODEONLY flag set. 34511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 34611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * @ingroup buf 34711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 34811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 34911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_BUFFERFLAG_DECODEONLY 0x00000004 35011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 35111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 35211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* Data Corrupt Flag: This flag is set when the IL client believes the data in the associated buffer is corrupt 35311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * @ingroup buf 35411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 35511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 35611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_BUFFERFLAG_DATACORRUPT 0x00000008 35711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 35811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* End of Frame: The buffer contains exactly one end of frame and no data 35911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * occurs after the end of frame. This flag is an optional hint. The absence 36011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * of this flag does not imply the absence of an end of frame within the buffer. 36111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * @ingroup buf 36211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*/ 36311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_BUFFERFLAG_ENDOFFRAME 0x00000010 36411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 36511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* Sync Frame Flag: This flag is set when the buffer content contains a coded sync frame ' 36611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * a frame that has no dependency on any other frame information 36711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * @ingroup buf 36811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 36911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_BUFFERFLAG_SYNCFRAME 0x00000020 37011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 37111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* Extra data present flag: there is extra data appended to the data stream 37211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * residing in the buffer 37311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * @ingroup buf 37411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 37511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_BUFFERFLAG_EXTRADATA 0x00000040 37611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 37711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** Codec Config Buffer Flag: 37811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* OMX_BUFFERFLAG_CODECCONFIG is an optional flag that is set by an 37911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* output port when all bytes in the buffer form part or all of a set of 38011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* codec specific configuration data. Examples include SPS/PPS nal units 38111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* for OMX_VIDEO_CodingAVC or AudioSpecificConfig data for 38211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* OMX_AUDIO_CodingAAC. Any component that for a given stream sets 38311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* OMX_BUFFERFLAG_CODECCONFIG shall not mix codec configuration bytes 38411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* with frame data in the same buffer, and shall send all buffers 38511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* containing codec configuration bytes before any buffers containing 38611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* frame data that those configurations bytes describe. 38711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* If the stream format for a particular codec has a frame specific 38811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* header at the start of each frame, for example OMX_AUDIO_CodingMP3 or 38911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* OMX_AUDIO_CodingAAC in ADTS mode, then these shall be presented as 39011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* normal without setting OMX_BUFFERFLAG_CODECCONFIG. 39111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * @ingroup buf 39211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 39311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_BUFFERFLAG_CODECCONFIG 0x00000080 39411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 39511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* 39611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* OMX_BUFFERFLAG_READONLY: This flag is set when a component emitting the 39711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* buffer on an output port or the IL client wishes to identify the buffer 39811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* payload contents to be read-only. An IL client or an input port 39911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* shall not alter the contents of the buffer. This flag shall only be 40011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* cleared by the originator of the buffer when the buffer is returned. 40111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* For tunneled ports, the usage of this flag shall be allowed only if the 40211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* components negotiated a read-only tunnel 40311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*/ 40411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_BUFFERFLAG_READONLY 0x00000200 40511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 40611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** @ingroup buf */ 40711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_BUFFERHEADERTYPE 40811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{ 40911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nSize; /**< size of the structure in bytes */ 41011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 41111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U8* pBuffer; /**< Pointer to actual block of memory 41211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel that is acting as the buffer */ 41311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nAllocLen; /**< size of the buffer allocated, in bytes */ 41411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nFilledLen; /**< number of bytes currently in the 41511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel buffer */ 41611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nOffset; /**< start offset of valid data in bytes from 41711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the start of the buffer */ 41811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_PTR pAppPrivate; /**< pointer to any data the application 41911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel wants to associate with this buffer */ 42011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_PTR pPlatformPrivate; /**< pointer to any data the platform 42111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel wants to associate with this buffer */ 42211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_PTR pInputPortPrivate; /**< pointer to any data the input port 42311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel wants to associate with this buffer */ 42411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_PTR pOutputPortPrivate; /**< pointer to any data the output port 42511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel wants to associate with this buffer */ 42611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will generate a 42711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel mark event upon processing this buffer. */ 42811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_PTR pMarkData; /**< Application specific data associated with 42911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the mark sent on a mark event to disambiguate 43011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel this mark from others. */ 43111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nTickCount; /**< Optional entry that the component and 43211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel application can update with a tick count 43311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel when they access the component. This 43411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel value should be in microseconds. Since 43511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel this is a value relative to an arbitrary 43611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel starting point, this value cannot be used 43711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel to determine absolute time. This is an 43811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel optional entry and not all components 43911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel will update it.*/ 44011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_TICKS nTimeStamp; /**< Timestamp corresponding to the sample 44111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel starting at the first logical sample 44211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel boundary in the buffer. Timestamps of 44311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel successive samples within the buffer may 44411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel be inferred by adding the duration of the 44511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel of the preceding buffer to the timestamp 44611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel of the preceding buffer.*/ 44711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nFlags; /**< buffer specific flags */ 44811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nOutputPortIndex; /**< The index of the output port (if any) using 44911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel this buffer */ 45011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nInputPortIndex; /**< The index of the input port (if any) using 45111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel this buffer */ 45211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_BUFFERHEADERTYPE; 45311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 45411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_EXTRADATATYPE enumeration is used to define the 45511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * possible extra data payload types. 45611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * NB: this enum is binary backwards compatible with the previous 45711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_EXTRADATA_QUANT define. This should be replaced with 45811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_ExtraDataQuantization. 45911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 46011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_EXTRADATATYPE 46111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{ 46211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ExtraDataNone = 0, /**< Indicates that no more extra data sections follow */ 46311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ExtraDataQuantization, /**< The data payload contains quantization data */ 46411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ExtraDataKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 46511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ExtraDataVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 46611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ExtraDataMax = 0x7FFFFFFF 46711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_EXTRADATATYPE; 46811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 46911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 47011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_OTHER_EXTRADATATYPE { 47111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nSize; 47211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_VERSIONTYPE nVersion; 47311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nPortIndex; 47411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EXTRADATATYPE eType; /* Extra Data type */ 47511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nDataSize; /* Size of the supporting data to follow */ 47611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U8 data[1]; /* Supporting data hint */ 47711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_OTHER_EXTRADATATYPE; 47811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 47911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** @ingroup comp */ 48011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_PORT_PARAM_TYPE { 48111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nSize; /**< size of the structure in bytes */ 48211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 48311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nPorts; /**< The number of ports for this component */ 48411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nStartPortNumber; /** first port number for this type of port */ 48511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_PORT_PARAM_TYPE; 48611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 48711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** @ingroup comp */ 48811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_EVENTTYPE 48911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{ 49011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventCmdComplete, /**< component has sucessfully completed a command */ 49111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventError, /**< component has detected an error condition */ 49211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventMark, /**< component has detected a buffer mark */ 49311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventPortSettingsChanged, /**< component is reported a port settings change */ 49411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventBufferFlag, /**< component has detected an EOS */ 49511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventResourcesAcquired, /**< component has been granted resources and is 49611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel automatically starting the state change from 49711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StateWaitForResources to OMX_StateIdle. */ 49811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventComponentResumed, /**< Component resumed due to reacquisition of resources */ 49911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventDynamicResourcesAvailable, /**< Component has acquired previously unavailable dynamic resources */ 50011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventPortFormatDetected, /**< Component has detected a supported format. */ 50111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 50211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 50311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_EventMax = 0x7FFFFFFF 50411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_EVENTTYPE; 50511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 50611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_CALLBACKTYPE 50711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{ 50811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The EventHandler method is used to notify the application when an 50911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel event of interest occurs. Events are defined in the OMX_EVENTTYPE 51011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel enumeration. Please see that enumeration for details of what will 51111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel be returned for each type of event. Callbacks should not return 51211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel an error to the component, so if an error occurs, the application 51311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel shall handle it internally. This is a blocking call. 51411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 51511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The application should return from this call within 5 msec to avoid 51611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel blocking the component for an excessively long period of time. 51711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 51811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param hComponent 51911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle of the component to access. This is the component 52011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the GetHandle function. 52111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param pAppData 52211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an application defined value that was provided in the 52311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pAppData parameter to the OMX_GetHandle method for the component. 52411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This application defined value is provided so that the application 52511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel can have a component specific context when receiving the callback. 52611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param eEvent 52711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Event that the component wants to notify the application about. 52811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param nData1 52911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nData will be the OMX_ERRORTYPE for an error event and will be 53011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel an OMX_COMMANDTYPE for a command complete event and OMX_INDEXTYPE for a OMX_PortSettingsChanged event. 53111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param nData2 53211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nData2 will hold further information related to the event. Can be OMX_STATETYPE for 53311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel a OMX_CommandStateSet command or port index for a OMX_PortSettingsChanged event. 53411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Default value is 0 if not used. ) 53511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param pEventData 53611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Pointer to additional event-specific data (see spec for meaning). 53711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 53811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 53911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE (*EventHandler)( 54011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_HANDLETYPE hComponent, 54111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_PTR pAppData, 54211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_EVENTTYPE eEvent, 54311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_U32 nData1, 54411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_U32 nData2, 54511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_PTR pEventData); 54611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 54711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The EmptyBufferDone method is used to return emptied buffers from an 54811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel input port back to the application for reuse. This is a blocking call 54911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel so the application should not attempt to refill the buffers during this 55011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel call, but should queue them and refill them in another thread. There 55111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel is no error return, so the application shall handle any errors generated 55211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel internally. 55311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 55411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The application should return from this call within 5 msec. 55511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 55611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param hComponent 55711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle of the component to access. This is the component 55811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the GetHandle function. 55911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param pAppData 56011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an application defined value that was provided in the 56111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pAppData parameter to the OMX_GetHandle method for the component. 56211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This application defined value is provided so that the application 56311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel can have a component specific context when receiving the callback. 56411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param pBuffer 56511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer 56611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel or AllocateBuffer indicating the buffer that was emptied. 56711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup buf 56811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 56911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE (*EmptyBufferDone)( 57011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_HANDLETYPE hComponent, 57111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_PTR pAppData, 57211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 57311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 57411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** The FillBufferDone method is used to return filled buffers from an 57511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel output port back to the application for emptying and then reuse. 57611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This is a blocking call so the application should not attempt to 57711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel empty the buffers during this call, but should queue the buffers 57811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel and empty them in another thread. There is no error return, so 57911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the application shall handle any errors generated internally. The 58011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel application shall also update the buffer header to indicate the 58111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel number of bytes placed into the buffer. 58211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 58311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The application should return from this call within 5 msec. 58411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 58511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param hComponent 58611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle of the component to access. This is the component 58711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the GetHandle function. 58811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param pAppData 58911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an application defined value that was provided in the 59011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pAppData parameter to the OMX_GetHandle method for the component. 59111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This application defined value is provided so that the application 59211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel can have a component specific context when receiving the callback. 59311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param pBuffer 59411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer 59511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel or AllocateBuffer indicating the buffer that was filled. 59611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup buf 59711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 59811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE (*FillBufferDone)( 59911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_OUT OMX_HANDLETYPE hComponent, 60011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_OUT OMX_PTR pAppData, 60111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer); 60211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 60311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_CALLBACKTYPE; 60411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 60511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_BUFFERSUPPLIERTYPE enumeration is used to dictate port supplier 60611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel preference when tunneling between two ports. 60711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup tun buf 60811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*/ 60911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_BUFFERSUPPLIERTYPE 61011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{ 61111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_BufferSupplyUnspecified = 0x0, /**< port supplying the buffers is unspecified, 61211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel or don't care */ 61311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_BufferSupplyInput, /**< input port supplies the buffers */ 61411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_BufferSupplyOutput, /**< output port supplies the buffers */ 61511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_BufferSupplyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 61611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_BufferSupplyVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 61711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_BufferSupplyMax = 0x7FFFFFFF 61811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_BUFFERSUPPLIERTYPE; 61911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 62011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 62111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** buffer supplier parameter 62211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * @ingroup tun 62311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 62411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_PARAM_BUFFERSUPPLIERTYPE { 62511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nSize; /**< size of the structure in bytes */ 62611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 62711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nPortIndex; /**< port that this structure applies to */ 62811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_BUFFERSUPPLIERTYPE eBufferSupplier; /**< buffer supplier */ 62911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_PARAM_BUFFERSUPPLIERTYPE; 63011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 63111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 63211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**< indicates that buffers received by an input port of a tunnel 63311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel may not modify the data in the buffers 63411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup tun 63511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 63611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_PORTTUNNELFLAG_READONLY 0x00000001 63711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 63811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 63911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_TUNNELSETUPTYPE structure is used to pass data from an output 64011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel port to an input port as part the two ComponentTunnelRequest calls 64111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel resulting from a OMX_SetupTunnel call from the IL Client. 64211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup tun 64311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 64411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_TUNNELSETUPTYPE 64511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{ 64611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nTunnelFlags; /**< bit flags for tunneling */ 64711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_BUFFERSUPPLIERTYPE eSupplier; /**< supplier preference */ 64811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_TUNNELSETUPTYPE; 64911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 65011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* OMX Component headers is included to enable the core to use 65111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel macros for functions into the component for OMX release 1.0. 65211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Developers should not access any structures or data from within 65311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the component header directly */ 65411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* TO BE REMOVED - #include <OMX_Component.h> */ 65511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 65611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** GetComponentVersion will return information about the component. 65711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This is a blocking call. This macro will go directly from the 65811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel application to the component (via a core macro). The 65911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component will return from this call within 5 msec. 66011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 66111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle of component to execute the command 66211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] pComponentName 66311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an empty string of length 128 bytes. The component 66411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel will write its name into this string. The name will be 66511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel terminated by a single zero byte. The name of a component will 66611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel be 127 bytes or less to leave room for the trailing zero byte. 66711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel An example of a valid component name is "OMX.ABC.ChannelMixer\0". 66811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] pComponentVersion 66911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an OMX Version structure that the component will fill 67011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel in. The component will fill in a value that indicates the 67111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component version. NOTE: the component version is NOT the same 67211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel as the OMX Specification version (found in all structures). The 67311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component version is defined by the vendor of the component and 67411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel its value is entirely up to the component vendor. 67511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] pSpecVersion 67611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an OMX Version structure that the component will fill 67711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel in. The SpecVersion is the version of the specification that the 67811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component was built against. Please note that this value may or 67911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel may not match the structure's version. For example, if the 68011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component was built against the 2.0 specification, but the 68111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel application (which creates the structure is built against the 68211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 1.0 specification the versions would be different. 68311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] pComponentUUID 68411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to the UUID of the component which will be filled in by 68511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the component. The UUID is a unique identifier that is set at 68611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel RUN time for the component and is unique to each instantion of 68711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the component. 68811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 68911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 69011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 69111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp 69211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 69311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_GetComponentVersion( \ 69411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 69511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentName, \ 69611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentVersion, \ 69711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pSpecVersion, \ 69811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentUUID) \ 69911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->GetComponentVersion( \ 70011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 70111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentName, \ 70211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentVersion, \ 70311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pSpecVersion, \ 70411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentUUID) /* Macro End */ 70511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 70611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 70711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** Send a command to the component. This call is a non-blocking call. 70811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should check the parameters and then queue the command 70911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel to the component thread to be executed. The component thread shall 71011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel send the EventHandler() callback at the conclusion of the command. 71111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This macro will go directly from the application to the component (via 71211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel a core macro). The component will return from this call within 5 msec. 71311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 71411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel When the command is "OMX_CommandStateSet" the component will queue a 71511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel state transition to the new state idenfied in nParam. 71611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 71711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel When the command is "OMX_CommandFlush", to flush a port's buffer queues, 71811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the command will force the component to return all buffers NOT CURRENTLY 71911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel BEING PROCESSED to the application, in the order in which the buffers 72011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel were received. 72111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 72211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel When the command is "OMX_CommandPortDisable" or 72311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel "OMX_CommandPortEnable", the component's port (given by the value of 72411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nParam) will be stopped or restarted. 72511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 72611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel When the command "OMX_CommandMarkBuffer" is used to mark a buffer, the 72711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pCmdData will point to a OMX_MARKTYPE structure containing the component 72811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle of the component to examine the buffer chain for the mark. nParam1 72911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel contains the index of the port on which the buffer mark is applied. 73011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 73111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Specification text for more details. 73211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 73311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 73411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle of component to execute the command 73511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] Cmd 73611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Command for the component to execute 73711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nParam 73811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Parameter for the command to be executed. When Cmd has the value 73911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_CommandStateSet, value is a member of OMX_STATETYPE. When Cmd has 74011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the value OMX_CommandFlush, value of nParam indicates which port(s) 74111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel to flush. -1 is used to flush all ports a single port index will 74211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel only flush that port. When Cmd has the value "OMX_CommandPortDisable" 74311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel or "OMX_CommandPortEnable", the component's port is given by 74411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the value of nParam. When Cmd has the value "OMX_CommandMarkBuffer" 74511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the components pot is given by the value of nParam. 74611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] pCmdData 74711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Parameter pointing to the OMX_MARKTYPE structure when Cmd has the value 74811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel "OMX_CommandMarkBuffer". 74911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 75011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 75111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 75211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp 75311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 75411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_SendCommand( \ 75511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 75611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Cmd, \ 75711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nParam, \ 75811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pCmdData) \ 75911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->SendCommand( \ 76011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 76111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Cmd, \ 76211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nParam, \ 76311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pCmdData) /* Macro End */ 76411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 76511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 76611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_GetParameter macro will get one of the current parameter 76711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel settings from the component. This macro cannot only be invoked when 76811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the component is in the OMX_StateInvalid state. The nParamIndex 76911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel parameter is used to indicate which structure is being requested from 77011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the component. The application shall allocate the correct structure 77111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel and shall fill in the structure size and version information before 77211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel invoking this macro. When the parameter applies to a port, the 77311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel caller shall fill in the appropriate nPortIndex value indicating the 77411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel port on which the parameter applies. If the component has not had 77511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel any settings changed, then the component should return a set of 77611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel valid DEFAULT parameters for the component. This is a blocking 77711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel call. 77811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 77911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 20 msec. 78011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 78111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 78211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 78311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the OMX_GetHandle function. 78411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nParamIndex 78511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Index of the structure to be filled. This value is from the 78611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_INDEXTYPE enumeration. 78711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in,out] pComponentParameterStructure 78811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Pointer to application allocated structure to be filled by the 78911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component. 79011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 79111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 79211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 79311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp 79411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 79511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_GetParameter( \ 79611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 79711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nParamIndex, \ 79811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentParameterStructure) \ 79911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->GetParameter( \ 80011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 80111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nParamIndex, \ 80211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentParameterStructure) /* Macro End */ 80311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 80411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 80511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_SetParameter macro will send an initialization parameter 80611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel structure to a component. Each structure shall be sent one at a time, 80711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel in a separate invocation of the macro. This macro can only be 80811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel invoked when the component is in the OMX_StateLoaded state, or the 80911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel port is disabled (when the parameter applies to a port). The 81011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nParamIndex parameter is used to indicate which structure is being 81111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel passed to the component. The application shall allocate the 81211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel correct structure and shall fill in the structure size and version 81311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel information (as well as the actual data) before invoking this macro. 81411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The application is free to dispose of this structure after the call 81511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel as the component is required to copy any data it shall retain. This 81611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel is a blocking call. 81711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 81811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 20 msec. 81911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 82011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 82111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 82211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the OMX_GetHandle function. 82311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nIndex 82411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Index of the structure to be sent. This value is from the 82511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_INDEXTYPE enumeration. 82611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] pComponentParameterStructure 82711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to application allocated structure to be used for 82811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel initialization by the component. 82911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 83011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 83111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 83211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp 83311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 83411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_SetParameter( \ 83511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 83611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nParamIndex, \ 83711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentParameterStructure) \ 83811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->SetParameter( \ 83911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 84011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nParamIndex, \ 84111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentParameterStructure) /* Macro End */ 84211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 84311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 84411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_GetConfig macro will get one of the configuration structures 84511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel from a component. This macro can be invoked anytime after the 84611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component has been loaded. The nParamIndex call parameter is used to 84711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel indicate which structure is being requested from the component. The 84811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel application shall allocate the correct structure and shall fill in the 84911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel structure size and version information before invoking this macro. 85011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the component has not had this configuration parameter sent before, 85111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel then the component should return a set of valid DEFAULT values for the 85211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component. This is a blocking call. 85311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 85411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 5 msec. 85511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 85611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 85711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 85811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the OMX_GetHandle function. 85911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nIndex 86011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Index of the structure to be filled. This value is from the 86111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_INDEXTYPE enumeration. 86211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in,out] pComponentConfigStructure 86311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to application allocated structure to be filled by the 86411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component. 86511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 86611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 86711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 86811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp 86911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*/ 87011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_GetConfig( \ 87111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 87211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nConfigIndex, \ 87311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentConfigStructure) \ 87411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->GetConfig( \ 87511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 87611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nConfigIndex, \ 87711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentConfigStructure) /* Macro End */ 87811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 87911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 88011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_SetConfig macro will send one of the configuration 88111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel structures to a component. Each structure shall be sent one at a time, 88211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel each in a separate invocation of the macro. This macro can be invoked 88311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel anytime after the component has been loaded. The application shall 88411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel allocate the correct structure and shall fill in the structure size 88511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel and version information (as well as the actual data) before invoking 88611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel this macro. The application is free to dispose of this structure after 88711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the call as the component is required to copy any data it shall retain. 88811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This is a blocking call. 88911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 89011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 5 msec. 89111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 89211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 89311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 89411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the OMX_GetHandle function. 89511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nConfigIndex 89611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Index of the structure to be sent. This value is from the 89711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_INDEXTYPE enumeration above. 89811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] pComponentConfigStructure 89911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to application allocated structure to be used for 90011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel initialization by the component. 90111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 90211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 90311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 90411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp 90511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 90611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_SetConfig( \ 90711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 90811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nConfigIndex, \ 90911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentConfigStructure) \ 91011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->SetConfig( \ 91111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 91211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nConfigIndex, \ 91311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pComponentConfigStructure) /* Macro End */ 91411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 91511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 91611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_GetExtensionIndex macro will invoke a component to translate 91711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel a vendor specific configuration or parameter string into an OMX 91811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel structure index. There is no requirement for the vendor to support 91911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel this command for the indexes already found in the OMX_INDEXTYPE 92011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel enumeration (this is done to save space in small components). The 92111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component shall support all vendor supplied extension indexes not found 92211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel in the master OMX_INDEXTYPE enumeration. This is a blocking call. 92311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 92411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 5 msec. 92511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 92611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 92711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 92811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the GetHandle function. 92911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] cParameterName 93011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_STRING that shall be less than 128 characters long including 93111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the trailing null byte. This is the string that will get 93211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel translated by the component into a configuration index. 93311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] pIndexType 93411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel a pointer to a OMX_INDEXTYPE to receive the index value. 93511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 93611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 93711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 93811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp 93911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 94011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_GetExtensionIndex( \ 94111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 94211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel cParameterName, \ 94311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pIndexType) \ 94411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->GetExtensionIndex( \ 94511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 94611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel cParameterName, \ 94711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pIndexType) /* Macro End */ 94811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 94911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 95011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_GetState macro will invoke the component to get the current 95111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel state of the component and place the state value into the location 95211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointed to by pState. 95311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 95411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 5 msec. 95511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 95611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 95711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 95811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the OMX_GetHandle function. 95911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] pState 96011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to the location to receive the state. The value returned 96111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel is one of the OMX_STATETYPE members 96211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 96311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 96411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 96511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp 96611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 96711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_GetState( \ 96811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 96911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pState) \ 97011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->GetState( \ 97111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 97211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pState) /* Macro End */ 97311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 97411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 97511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_UseBuffer macro will request that the component use 97611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel a buffer (and allocate its own buffer header) already allocated 97711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel by another component, or by the IL Client. This is a blocking 97811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel call. 97911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 98011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 20 msec. 98111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 98211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 98311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 98411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the OMX_GetHandle function. 98511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] ppBuffer 98611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an OMX_BUFFERHEADERTYPE structure used to receive the 98711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to the buffer header 98811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 98911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 99011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 99111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp buf 99211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 99311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 99411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_UseBuffer( \ 99511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 99611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ppBufferHdr, \ 99711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortIndex, \ 99811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pAppPrivate, \ 99911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nSizeBytes, \ 100011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pBuffer) \ 100111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->UseBuffer( \ 100211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 100311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ppBufferHdr, \ 100411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortIndex, \ 100511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pAppPrivate, \ 100611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nSizeBytes, \ 100711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pBuffer) 100811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 100911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 101011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_AllocateBuffer macro will request that the component allocate 101111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel a new buffer and buffer header. The component will allocate the 101211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel buffer and the buffer header and return a pointer to the buffer 101311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel header. This is a blocking call. 101411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 101511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 5 msec. 101611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 101711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 101811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 101911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the OMX_GetHandle function. 102011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] ppBuffer 102111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an OMX_BUFFERHEADERTYPE structure used to receive 102211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the pointer to the buffer header 102311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nPortIndex 102411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortIndex is used to select the port on the component the buffer will 102511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel be used with. The port can be found by using the nPortIndex 102611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel value as an index into the Port Definition array of the component. 102711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] pAppPrivate 102811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pAppPrivate is used to initialize the pAppPrivate member of the 102911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel buffer header structure. 103011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nSizeBytes 103111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel size of the buffer to allocate. Used when bAllocateNew is true. 103211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 103311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 103411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 103511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp buf 103611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 103711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_AllocateBuffer( \ 103811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 103911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ppBuffer, \ 104011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortIndex, \ 104111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pAppPrivate, \ 104211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nSizeBytes) \ 104311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->AllocateBuffer( \ 104411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 104511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ppBuffer, \ 104611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortIndex, \ 104711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pAppPrivate, \ 104811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nSizeBytes) /* Macro End */ 104911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 105011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 105111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_FreeBuffer macro will release a buffer header from the component 105211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel which was allocated using either OMX_AllocateBuffer or OMX_UseBuffer. If 105311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the component allocated the buffer (see the OMX_UseBuffer macro) then 105411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the component shall free the buffer and buffer header. This is a 105511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel blocking call. 105611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 105711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 20 msec. 105811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 105911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 106011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 106111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the OMX_GetHandle function. 106211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nPortIndex 106311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortIndex is used to select the port on the component the buffer will 106411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel be used with. 106511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] pBuffer 106611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer 106711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel or AllocateBuffer. 106811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 106911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 107011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 107111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp buf 107211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 107311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_FreeBuffer( \ 107411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 107511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortIndex, \ 107611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pBuffer) \ 107711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->FreeBuffer( \ 107811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 107911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortIndex, \ 108011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pBuffer) /* Macro End */ 108111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 108211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 108311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_EmptyThisBuffer macro will send a buffer full of data to an 108411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel input port of a component. The buffer will be emptied by the component 108511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel and returned to the application via the EmptyBufferDone call back. 108611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This is a non-blocking call in that the component will record the buffer 108711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel and return immediately and then empty the buffer, later, at the proper 108811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel time. As expected, this macro may be invoked only while the component 108911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel is in the OMX_StateExecuting. If nPortIndex does not specify an input 109011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel port, the component shall return an error. 109111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 109211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 5 msec. 109311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 109411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 109511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 109611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the OMX_GetHandle function. 109711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] pBuffer 109811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer 109911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel or AllocateBuffer. 110011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 110111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 110211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 110311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp buf 110411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 110511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_EmptyThisBuffer( \ 110611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 110711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pBuffer) \ 110811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->EmptyThisBuffer( \ 110911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 111011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pBuffer) /* Macro End */ 111111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 111211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 111311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_FillThisBuffer macro will send an empty buffer to an 111411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel output port of a component. The buffer will be filled by the component 111511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel and returned to the application via the FillBufferDone call back. 111611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This is a non-blocking call in that the component will record the buffer 111711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel and return immediately and then fill the buffer, later, at the proper 111811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel time. As expected, this macro may be invoked only while the component 111911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel is in the OMX_ExecutingState. If nPortIndex does not specify an output 112011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel port, the component shall return an error. 112111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 112211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 5 msec. 112311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 112411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 112511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 112611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the OMX_GetHandle function. 112711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] pBuffer 112811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer 112911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel or AllocateBuffer. 113011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 113111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 113211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 113311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp buf 113411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 113511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_FillThisBuffer( \ 113611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 113711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pBuffer) \ 113811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->FillThisBuffer( \ 113911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 114011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pBuffer) /* Macro End */ 114111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 114211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 114311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 114411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_UseEGLImage macro will request that the component use 114511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel a EGLImage provided by EGL (and allocate its own buffer header) 114611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This is a blocking call. 114711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 114811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The component should return from this call within 20 msec. 114911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 115011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 115111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 115211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the OMX_GetHandle function. 115311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] ppBuffer 115411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an OMX_BUFFERHEADERTYPE structure used to receive the 115511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to the buffer header. Note that the memory location used 115611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel for this buffer is NOT visible to the IL Client. 115711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nPortIndex 115811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortIndex is used to select the port on the component the buffer will 115911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel be used with. The port can be found by using the nPortIndex 116011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel value as an index into the Port Definition array of the component. 116111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] pAppPrivate 116211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pAppPrivate is used to initialize the pAppPrivate member of the 116311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel buffer header structure. 116411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] eglImage 116511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel eglImage contains the handle of the EGLImage to use as a buffer on the 116611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel specified port. The component is expected to validate properties of 116711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the EGLImage against the configuration of the port to ensure the component 116811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel can use the EGLImage as a buffer. 116911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 117011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 117111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 117211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup comp buf 117311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 117411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_UseEGLImage( \ 117511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 117611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ppBufferHdr, \ 117711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortIndex, \ 117811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pAppPrivate, \ 117911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel eglImage) \ 118011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ((OMX_COMPONENTTYPE*)hComponent)->UseEGLImage( \ 118111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel hComponent, \ 118211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel ppBufferHdr, \ 118311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortIndex, \ 118411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pAppPrivate, \ 118511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel eglImage) 118611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 118711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_Init method is used to initialize the OMX core. It shall be the 118811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel first call made into OMX and it should only be executed one time without 118911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel an interviening OMX_Deinit call. 119011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 119111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The core should return from this call within 20 msec. 119211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 119311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 119411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 119511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 119611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup core 119711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 119811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Init(void); 119911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 120011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 120111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_Deinit method is used to deinitialize the OMX core. It shall be 120211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the last call made into OMX. In the event that the core determines that 120311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel thare are components loaded when this call is made, the core may return 120411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel with an error rather than try to unload the components. 120511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 120611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The core should return from this call within 20 msec. 120711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 120811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 120911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 121011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 121111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup core 121211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 121311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Deinit(void); 121411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 121511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 121611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_ComponentNameEnum method will enumerate through all the names of 121711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel recognised valid components in the system. This function is provided 121811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel as a means to detect all the components in the system run-time. There is 121911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel no strict ordering to the enumeration order of component names, although 122011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel each name will only be enumerated once. If the OMX core supports run-time 122111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel installation of new components, it is only requried to detect newly 122211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel installed components when the first call to enumerate component names 122311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel is made (i.e. when nIndex is 0x0). 122411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 122511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The core should return from this call in 20 msec. 122611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 122711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] cComponentName 122811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to a null terminated string with the component name. The 122911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel names of the components are strings less than 127 bytes in length 123011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel plus the trailing null for a maximum size of 128 bytes. An example 123111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are 123211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel assigned by the vendor, but shall start with "OMX." and then have 123311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the Vendor designation next. 123411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nNameLength 123511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel number of characters in the cComponentName string. With all 123611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component name strings restricted to less than 128 characters 123711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel (including the trailing null) it is recomended that the caller 123811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel provide a input string for the cComponentName of 128 characters. 123911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nIndex 124011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel number containing the enumeration index for the component. 124111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Multiple calls to OMX_ComponentNameEnum with increasing values 124211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel of nIndex will enumerate through the component names in the 124311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel system until OMX_ErrorNoMore is returned. The value of nIndex 124411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel is 0 to (N-1), where N is the number of valid installed components 124511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel in the system. 124611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 124711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 124811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. When the value of nIndex exceeds the number of 124911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel components in the system minus 1, OMX_ErrorNoMore will be 125011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel returned. Otherwise the appropriate OMX error will be returned. 125111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup core 125211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 125311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_ComponentNameEnum( 125411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_OUT OMX_STRING cComponentName, 125511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_U32 nNameLength, 125611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_U32 nIndex); 125711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 125811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 125911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_GetHandle method will locate the component specified by the 126011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component name given, load that component into memory and then invoke 126111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the component's methods to create an instance of the component. 126211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 126311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The core should return from this call within 20 msec. 126411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 126511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] pHandle 126611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an OMX_HANDLETYPE pointer to be filled in by this method. 126711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] cComponentName 126811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to a null terminated string with the component name. The 126911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel names of the components are strings less than 127 bytes in length 127011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel plus the trailing null for a maximum size of 128 bytes. An example 127111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are 127211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel assigned by the vendor, but shall start with "OMX." and then have 127311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the Vendor designation next. 127411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] pAppData 127511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to an application defined value that will be returned 127611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel during callbacks so that the application can identify the source 127711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel of the callback. 127811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] pCallBacks 127911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel pointer to a OMX_CALLBACKTYPE structure that will be passed to the 128011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component to initialize it with. 128111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 128211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 128311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 128411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup core 128511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 128611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_GetHandle( 128711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_OUT OMX_HANDLETYPE* pHandle, 128811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_STRING cComponentName, 128911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_PTR pAppData, 129011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_CALLBACKTYPE* pCallBacks); 129111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 129211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 129311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_FreeHandle method will free a handle allocated by the OMX_GetHandle 129411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel method. If the component reference count goes to zero, the component will 129511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel be unloaded from memory. 129611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 129711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The core should return from this call within 20 msec when the component is 129811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel in the OMX_StateLoaded state. 129911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 130011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hComponent 130111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. This is the component 130211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel handle returned by the call to the GetHandle function. 130311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 130411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 130511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 130611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup core 130711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 130811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_FreeHandle( 130911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_HANDLETYPE hComponent); 131011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 131111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 131211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 131311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_SetupTunnel method will handle the necessary calls to the components 131411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel to setup the specified tunnel the two components. NOTE: This is 131511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel an actual method (not a #define macro). This method will make calls into 131611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the component ComponentTunnelRequest method to do the actual tunnel 131711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel connection. 131811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 131911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The ComponentTunnelRequest method on both components will be called. 132011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This method shall not be called unless the component is in the 132111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StateLoaded state except when the ports used for the tunnel are 132211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel disabled. In this case, the component may be in the OMX_StateExecuting, 132311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_StatePause, or OMX_StateIdle states. 132411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 132511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The core should return from this call within 20 msec. 132611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 132711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hOutput 132811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Handle of the component to be accessed. Also this is the handle 132911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel of the component whose port, specified in the nPortOutput parameter 133011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel will be used the source for the tunnel. This is the component handle 133111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel returned by the call to the OMX_GetHandle function. There is a 133211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel requirement that hOutput be the source for the data when 133311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel tunelling (i.e. nPortOutput is an output port). If 0x0, the component 133411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel specified in hInput will have it's port specified in nPortInput 133511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel setup for communication with the application / IL client. 133611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nPortOutput 133711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortOutput is used to select the source port on component to be 133811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel used in the tunnel. 133911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] hInput 134011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This is the component to setup the tunnel with. This is the handle 134111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel of the component whose port, specified in the nPortInput parameter 134211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel will be used the destination for the tunnel. This is the component handle 134311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel returned by the call to the OMX_GetHandle function. There is a 134411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel requirement that hInput be the destination for the data when 134511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel tunelling (i.e. nPortInut is an input port). If 0x0, the component 134611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel specified in hOutput will have it's port specified in nPortPOutput 134711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel setup for communication with the application / IL client. 134811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] nPortInput 134911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel nPortInput is used to select the destination port on component to be 135011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel used in the tunnel. 135111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @return OMX_ERRORTYPE 135211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If the command successfully executes, the return code will be 135311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 135411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel When OMX_ErrorNotImplemented is returned, one or both components is 135511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel a non-interop component and does not support tunneling. 135611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 135711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel On failure, the ports of both components are setup for communication 135811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel with the application / IL Client. 135911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup core tun 136011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 136111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_SetupTunnel( 136211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_HANDLETYPE hOutput, 136311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_U32 nPortOutput, 136411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_HANDLETYPE hInput, 136511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_U32 nPortInput); 136611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 136711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** @ingroup cp */ 136811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_API OMX_ERRORTYPE OMX_GetContentPipe( 136911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_OUT OMX_HANDLETYPE *hPipe, 137011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_STRING szURI); 137111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 137211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_GetComponentsOfRole method will return the number of components that support the given 137311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel role and (if the compNames field is non-NULL) the names of those components. The call will fail if 137411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the 137511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel client should: 137611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * first call this function with the compNames field NULL to determine the number of component names 137711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * second call this function with the compNames field pointing to an array of names allocated 137811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel according to the number returned by the first call. 137911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 138011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The core should return from this call within 5 msec. 138111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 138211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] role 138311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This is generic standard component name consisting only of component class 138411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel name and the type within that class (e.g. 'audio_decoder.aac'). 138511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [inout] pNumComps 138611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This is used both as input and output. 138711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 138811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If compNames is NULL, the input is ignored and the output specifies how many components support 138911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel the given role. 139011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 139111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If compNames is not NULL, on input it bounds the size of the input structure and 139211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel on output, it specifies the number of components string names listed within the compNames parameter. 139311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [inout] compNames 139411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings which accepts 139511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel a list of the names of all physical components that implement the specified standard component name. 139611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel Each name is NULL terminated. numComps indicates the number of names. 139711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup core 139811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 139911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_API OMX_ERRORTYPE OMX_GetComponentsOfRole ( 140011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_STRING role, 140111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_INOUT OMX_U32 *pNumComps, 140211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_INOUT OMX_U8 **compNames); 140311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 140411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** The OMX_GetRolesOfComponent method will return the number of roles supported by the given 140511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel component and (if the roles field is non-NULL) the names of those roles. The call will fail if 140611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the 140711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel client should: 140811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * first call this function with the roles field NULL to determine the number of role names 140911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * second call this function with the roles field pointing to an array of names allocated 141011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel according to the number returned by the first call. 141111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 141211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel The core should return from this call within 5 msec. 141311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 141411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [in] compName 141511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This is the name of the component being queried about. 141611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [inout] pNumRoles 141711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This is used both as input and output. 141811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 141911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If roles is NULL, the input is ignored and the output specifies how many roles the component supports. 142011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 142111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If compNames is not NULL, on input it bounds the size of the input structure and 142211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel on output, it specifies the number of roles string names listed within the roles parameter. 142311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @param [out] roles 142411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings 142511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel which accepts a list of the names of all standard components roles implemented on the 142611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel specified component name. numComps indicates the number of names. 142711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel @ingroup core 142811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */ 142911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_API OMX_ERRORTYPE OMX_GetRolesOfComponent ( 143011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_IN OMX_STRING compName, 143111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_INOUT OMX_U32 *pNumRoles, 143211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_OUT OMX_U8 **roles); 143311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 143411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#ifdef __cplusplus 143511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} 143611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#endif /* __cplusplus */ 143711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 143811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#endif 143911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* File EOF */ 144011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel 1441