1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* 2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright (c) 2008 The Khronos Group Inc. 3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Permission is hereby granted, free of charge, to any person obtaining 5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * a copy of this software and associated documentation files (the 6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * "Software"), to deal in the Software without restriction, including 7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * without limitation the rights to use, copy, modify, merge, publish, 8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * distribute, sublicense, and/or sell copies of the Software, and to 9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * permit persons to whom the Software is furnished to do so, subject 10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * to the following conditions: 11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The above copyright notice and this permission notice shall be included 12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * in all copies or substantial portions of the Software. 13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** OMX_Core.h - OpenMax IL version 1.1.2 25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The OMX_Core header file contains the definitions used by both the 26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * application and the component to access common items. 27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_Core_h 30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_Core_h 31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __cplusplus 33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinextern "C" { 34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif /* __cplusplus */ 35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Each OMX header shall include all required header files to allow the 38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * header to compile without errors. The includes below are required 39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * for this header file to compile successfully 40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Index.h> 43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_COMMANDTYPE enumeration is used to specify the action in the 46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_SendCommand macro. 47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup core 48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_COMMANDTYPE 50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandStateSet, /**< Change the component state */ 52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandFlush, /**< Flush the data queue(s) of a component */ 53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortDisable, /**< Disable a port on a component. */ 54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortEnable, /**< Enable a port on a component. */ 55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandMarkBuffer, /**< Mark a component/buffer for observation */ 56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandMax = 0X7FFFFFFF 59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_COMMANDTYPE; 60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_STATETYPE enumeration is used to indicate or change the component 64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * state. This enumeration reflects the current state of the component when 65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * used with the OMX_GetState macro or becomes the parameter in a state change 66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * command when used with the OMX_SendCommand macro. 67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The component will be in the Loaded state after the component is initially 69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * loaded into memory. In the Loaded state, the component is not allowed to 70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * allocate or hold resources other than to build it's internal parameter 71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * and configuration tables. The application will send one or more 72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * SetParameters/GetParameters and SetConfig/GetConfig commands to the 73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * component and the component will record each of these parameter and 74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * configuration changes for use later. When the application sends the 75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Idle command, the component will acquire the resources needed for the 76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * specified configuration and will transition to the idle state if the 77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * allocation is successful. If the component cannot successfully 78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * transition to the idle state for any reason, the state of the component 79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * shall be fully rolled back to the Loaded state (e.g. all allocated 80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * resources shall be released). When the component receives the command 81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * to go to the Executing state, it shall begin processing buffers by 82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * sending all input buffers it holds to the application. While 83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the component is in the Idle state, the application may also send the 84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Pause command. If the component receives the pause command while in the 85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Idle state, the component shall send all input buffers it holds to the 86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * application, but shall not begin processing buffers. This will allow the 87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * application to prefill buffers. 88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup comp 90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_STATETYPE 93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StateInvalid, /**< component has detected that it's internal data 95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin structures are corrupted to the point that 96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin it cannot determine it's state properly */ 97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StateLoaded, /**< component has been loaded but has not completed 98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin initialization. The OMX_SetParameter macro 99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin and the OMX_GetParameter macro are the only 100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin valid macros allowed to be sent to the 101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component in this state. */ 102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StateIdle, /**< component initialization has been completed 103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin successfully and the component is ready to 104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin to start. */ 105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StateExecuting, /**< component has accepted the start command and 106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is processing data (if data is available) */ 107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StatePause, /**< component has received pause command */ 108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StateWaitForResources, /**< component is waiting for resources, either after 109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin preemption or before it gets the resources requested. 110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin See specification for complete details. */ 111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StateMax = 0X7FFFFFFF 114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_STATETYPE; 115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_ERRORTYPE enumeration defines the standard OMX Errors. These 117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * errors should cover most of the common failure cases. However, 118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * vendors are free to add additional error messages of their own as 119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * long as they follow these rules: 120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 1. Vendor error messages shall be in the range of 0x90000000 to 121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 0x9000FFFF. 122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 2. Vendor error messages shall be defined in a header file provided 123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * with the component. No error messages are allowed that are 124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * not defined. 125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_ERRORTYPE 127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone = 0, 129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** There were insufficient resources to perform the requested operation */ 131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorInsufficientResources = (OMX_S32) 0x80001000, 132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** There was an error, but the cause of the error could not be determined */ 134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorUndefined = (OMX_S32) 0x80001001, 135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The component name string was not valid */ 137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorInvalidComponentName = (OMX_S32) 0x80001002, 138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** No component with the specified name string was found */ 140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorComponentNotFound = (OMX_S32) 0x80001003, 141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The component specified did not have a "OMX_ComponentInit" or 143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "OMX_ComponentDeInit entry point */ 144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorInvalidComponent = (OMX_S32) 0x80001004, 145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** One or more parameters were not valid */ 147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorBadParameter = (OMX_S32) 0x80001005, 148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The requested function is not implemented */ 150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNotImplemented = (OMX_S32) 0x80001006, 151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The buffer was emptied before the next buffer was ready */ 153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorUnderflow = (OMX_S32) 0x80001007, 154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The buffer was not available when it was needed */ 156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorOverflow = (OMX_S32) 0x80001008, 157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The hardware failed to respond as expected */ 159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorHardware = (OMX_S32) 0x80001009, 160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The component is in the state OMX_StateInvalid */ 162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorInvalidState = (OMX_S32) 0x8000100A, 163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** Stream is found to be corrupt */ 165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorStreamCorrupt = (OMX_S32) 0x8000100B, 166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** Ports being connected are not compatible */ 168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorPortsNotCompatible = (OMX_S32) 0x8000100C, 169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** Resources allocated to an idle component have been 171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin lost resulting in the component returning to the loaded state */ 172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorResourcesLost = (OMX_S32) 0x8000100D, 173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** No more indicies can be enumerated */ 175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNoMore = (OMX_S32) 0x8000100E, 176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The component detected a version mismatch */ 178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorVersionMismatch = (OMX_S32) 0x8000100F, 179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The component is not ready to return data at this time */ 181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNotReady = (OMX_S32) 0x80001010, 182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** There was a timeout that occurred */ 184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorTimeout = (OMX_S32) 0x80001011, 185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** This error occurs when trying to transition into the state you are already in */ 187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorSameState = (OMX_S32) 0x80001012, 188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** Resources allocated to an executing or paused component have been 190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin preempted, causing the component to return to the idle state */ 191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorResourcesPreempted = (OMX_S32) 0x80001013, 192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** A non-supplier port sends this error to the IL client (via the EventHandler callback) 194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin during the allocation of buffers (on a transition from the LOADED to the IDLE state or 195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin on a port restart) when it deems that it has waited an unusually long time for the supplier 196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin to send it an allocated buffer via a UseBuffer call. */ 197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorPortUnresponsiveDuringAllocation = (OMX_S32) 0x80001014, 198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** A non-supplier port sends this error to the IL client (via the EventHandler callback) 200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin during the deallocation of buffers (on a transition from the IDLE to LOADED state or 201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin on a port stop) when it deems that it has waited an unusually long time for the supplier 202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin to request the deallocation of a buffer header via a FreeBuffer call. */ 203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorPortUnresponsiveDuringDeallocation = (OMX_S32) 0x80001015, 204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** A supplier port sends this error to the IL client (via the EventHandler callback) 206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin during the stopping of a port (either on a transition from the IDLE to LOADED 207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin state or a port stop) when it deems that it has waited an unusually long time for 208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the non-supplier to return a buffer via an EmptyThisBuffer or FillThisBuffer call. */ 209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorPortUnresponsiveDuringStop = (OMX_S32) 0x80001016, 210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** Attempting a state transtion that is not allowed */ 212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorIncorrectStateTransition = (OMX_S32) 0x80001017, 213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Attempting a command that is not allowed during the present state. */ 215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorIncorrectStateOperation = (OMX_S32) 0x80001018, 216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The values encapsulated in the parameter or config structure are not supported. */ 218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorUnsupportedSetting = (OMX_S32) 0x80001019, 219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The parameter or config indicated by the given index is not supported. */ 221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorUnsupportedIndex = (OMX_S32) 0x8000101A, 222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The port index supplied is incorrect. */ 224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorBadPortIndex = (OMX_S32) 0x8000101B, 225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The port has lost one or more of its buffers and it thus unpopulated. */ 227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorPortUnpopulated = (OMX_S32) 0x8000101C, 228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** Component suspended due to temporary loss of resources */ 230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorComponentSuspended = (OMX_S32) 0x8000101D, 231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** Component suspended due to an inability to acquire dynamic resources */ 233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorDynamicResourcesUnavailable = (OMX_S32) 0x8000101E, 234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** When the macroblock error reporting is enabled the component returns new error 236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for every frame that has errors */ 237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorMbErrorsInFrame = (OMX_S32) 0x8000101F, 238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** A component reports this error when it cannot parse or determine the format of an input stream. */ 240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorFormatNotDetected = (OMX_S32) 0x80001020, 241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The content open operation failed. */ 243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorContentPipeOpenFailed = (OMX_S32) 0x80001021, 244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The content creation operation failed. */ 246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorContentPipeCreationFailed = (OMX_S32) 0x80001022, 247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** Separate table information is being used */ 249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorSeperateTablesUsed = (OMX_S32) 0x80001023, 250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** Tunneling is unsupported by the component*/ 252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorTunnelingUnsupported = (OMX_S32) 0x80001024, 253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorKhronosExtensions = (OMX_S32)0x8F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorVendorStartUnused = (OMX_S32)0x90000000, /**< Reserved region for introducing Vendor Extensions */ 256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorMax = 0x7FFFFFFF 257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_ERRORTYPE; 258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @ingroup core */ 260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef OMX_ERRORTYPE (* OMX_COMPONENTINITTYPE)(OMX_IN OMX_HANDLETYPE hComponent); 261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @ingroup core */ 263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_COMPONENTREGISTERTYPE 264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin const char * pName; /* Component name, 128 byte limit (including '\0') applies */ 266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTINITTYPE pInitialize; /* Component instance initialization function */ 267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_COMPONENTREGISTERTYPE; 268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @ingroup core */ 270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinextern OMX_COMPONENTREGISTERTYPE OMX_ComponentRegistered[]; 271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @ingroup rpm */ 273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_PRIORITYMGMTTYPE { 274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nSize; /**< size of the structure in bytes */ 275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nGroupPriority; /**< Priority of the component group */ 277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nGroupID; /**< ID of the component group */ 278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_PRIORITYMGMTTYPE; 279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Component name and Role names are limited to 128 characters including the terminating '\0'. */ 281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_MAX_STRINGNAME_SIZE 128 282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @ingroup comp */ 284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_PARAM_COMPONENTROLETYPE { 285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nSize; /**< size of the structure in bytes */ 286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 cRole[OMX_MAX_STRINGNAME_SIZE]; /**< name of standard component which defines component role */ 288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_PARAM_COMPONENTROLETYPE; 289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** End of Stream Buffer Flag: 291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * A component sets EOS when it has no more data to emit on a particular 293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * output port. Thus an output port shall set EOS on the last buffer it 294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * emits. A component's determination of when an output port should 295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * cease sending data is implemenation specific. 296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup buf 297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_BUFFERFLAG_EOS 0x00000001 300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** Start Time Buffer Flag: 302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The source of a stream (e.g. a demux component) sets the STARTTIME 304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * flag on the buffer that contains the starting timestamp for the 305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * stream. The starting timestamp corresponds to the first data that 306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * should be displayed at startup or after a seek. 307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The first timestamp of the stream is not necessarily the start time. 308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * For instance, in the case of a seek to a particular video frame, 309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the target frame may be an interframe. Thus the first buffer of 310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the stream will be the intra-frame preceding the target frame and 311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the starttime will occur with the target frame (with any other 312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * required frames required to reconstruct the target intervening). 313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The STARTTIME flag is directly associated with the buffer's 315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * timestamp ' thus its association to buffer data and its 316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * propagation is identical to the timestamp's. 317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * When a Sync Component client receives a buffer with the 319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * STARTTIME flag it shall perform a SetConfig on its sync port 320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * using OMX_ConfigTimeClientStartTime and passing the buffer's 321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * timestamp. 322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup buf 324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_BUFFERFLAG_STARTTIME 0x00000002 327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** Decode Only Buffer Flag: 331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The source of a stream (e.g. a demux component) sets the DECODEONLY 333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * flag on any buffer that should shall be decoded but should not be 334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * displayed. This flag is used, for instance, when a source seeks to 335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * a target interframe that requires the decode of frames preceding the 336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * target to facilitate the target's reconstruction. In this case the 337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * source would emit the frames preceding the target downstream 338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * but mark them as decode only. 339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The DECODEONLY is associated with buffer data and propagated in a 341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * manner identical to the buffer timestamp. 342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * A component that renders data should ignore all buffers with 344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * the DECODEONLY flag set. 345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup buf 347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_BUFFERFLAG_DECODEONLY 0x00000004 350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Data Corrupt Flag: This flag is set when the IL client believes the data in the associated buffer is corrupt 353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup buf 354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_BUFFERFLAG_DATACORRUPT 0x00000008 357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* End of Frame: The buffer contains exactly one end of frame and no data 359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * occurs after the end of frame. This flag is an optional hint. The absence 360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * of this flag does not imply the absence of an end of frame within the buffer. 361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup buf 362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_BUFFERFLAG_ENDOFFRAME 0x00000010 364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Sync Frame Flag: This flag is set when the buffer content contains a coded sync frame ' 366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * a frame that has no dependency on any other frame information 367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup buf 368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_BUFFERFLAG_SYNCFRAME 0x00000020 370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Extra data present flag: there is extra data appended to the data stream 372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * residing in the buffer 373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup buf 374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_BUFFERFLAG_EXTRADATA 0x00000040 376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** Codec Config Buffer Flag: 378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* OMX_BUFFERFLAG_CODECCONFIG is an optional flag that is set by an 379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* output port when all bytes in the buffer form part or all of a set of 380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* codec specific configuration data. Examples include SPS/PPS nal units 381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* for OMX_VIDEO_CodingAVC or AudioSpecificConfig data for 382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* OMX_AUDIO_CodingAAC. Any component that for a given stream sets 383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* OMX_BUFFERFLAG_CODECCONFIG shall not mix codec configuration bytes 384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* with frame data in the same buffer, and shall send all buffers 385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* containing codec configuration bytes before any buffers containing 386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* frame data that those configurations bytes describe. 387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* If the stream format for a particular codec has a frame specific 388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* header at the start of each frame, for example OMX_AUDIO_CodingMP3 or 389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* OMX_AUDIO_CodingAAC in ADTS mode, then these shall be presented as 390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* normal without setting OMX_BUFFERFLAG_CODECCONFIG. 391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup buf 392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_BUFFERFLAG_CODECCONFIG 0x00000080 394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @ingroup buf */ 398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_BUFFERHEADERTYPE 399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nSize; /**< size of the structure in bytes */ 401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* pBuffer; /**< Pointer to actual block of memory 403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin that is acting as the buffer */ 404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nAllocLen; /**< size of the buffer allocated, in bytes */ 405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFilledLen; /**< number of bytes currently in the 406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin buffer */ 407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nOffset; /**< start offset of valid data in bytes from 408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the start of the buffer */ 409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pAppPrivate; /**< pointer to any data the application 410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wants to associate with this buffer */ 411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pPlatformPrivate; /**< pointer to any data the platform 412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wants to associate with this buffer */ 413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pInputPortPrivate; /**< pointer to any data the input port 414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wants to associate with this buffer */ 415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pOutputPortPrivate; /**< pointer to any data the output port 416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wants to associate with this buffer */ 417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will generate a 418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin mark event upon processing this buffer. */ 419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pMarkData; /**< Application specific data associated with 420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the mark sent on a mark event to disambiguate 421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin this mark from others. */ 422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nTickCount; /**< Optional entry that the component and 423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin application can update with a tick count 424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin when they access the component. This 425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin value should be in microseconds. Since 426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin this is a value relative to an arbitrary 427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin starting point, this value cannot be used 428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin to determine absolute time. This is an 429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin optional entry and not all components 430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin will update it.*/ 431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TICKS nTimeStamp; /**< Timestamp corresponding to the sample 432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin starting at the first logical sample 433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin boundary in the buffer. Timestamps of 434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin successive samples within the buffer may 435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin be inferred by adding the duration of the 436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin of the preceding buffer to the timestamp 437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin of the preceding buffer.*/ 438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFlags; /**< buffer specific flags */ 439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nOutputPortIndex; /**< The index of the output port (if any) using 440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin this buffer */ 441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nInputPortIndex; /**< The index of the input port (if any) using 442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin this buffer */ 443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_BUFFERHEADERTYPE; 444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_EXTRADATATYPE enumeration is used to define the 446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * possible extra data payload types. 447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * NB: this enum is binary backwards compatible with the previous 448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_EXTRADATA_QUANT define. This should be replaced with 449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OMX_ExtraDataQuantization. 450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_EXTRADATATYPE 452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ExtraDataNone = 0, /**< Indicates that no more extra data sections follow */ 454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ExtraDataQuantization, /**< The data payload contains quantization data */ 455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ExtraDataKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ExtraDataVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ExtraDataMax = 0x7FFFFFFF 458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_EXTRADATATYPE; 459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_OTHER_EXTRADATATYPE { 462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nSize; 463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE nVersion; 464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPortIndex; 465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EXTRADATATYPE eType; /* Extra Data type */ 466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nDataSize; /* Size of the supporting data to follow */ 467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 data[1]; /* Supporting data hint */ 468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_OTHER_EXTRADATATYPE; 469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @ingroup comp */ 471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_PORT_PARAM_TYPE { 472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nSize; /**< size of the structure in bytes */ 473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPorts; /**< The number of ports for this component */ 475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nStartPortNumber; /** first port number for this type of port */ 476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_PORT_PARAM_TYPE; 477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @ingroup comp */ 479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_EVENTTYPE 480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventCmdComplete, /**< component has sucessfully completed a command */ 482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventError, /**< component has detected an error condition */ 483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventMark, /**< component has detected a buffer mark */ 484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventPortSettingsChanged, /**< component is reported a port settings change */ 485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventBufferFlag, /**< component has detected an EOS */ 486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventResourcesAcquired, /**< component has been granted resources and is 487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin automatically starting the state change from 488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StateWaitForResources to OMX_StateIdle. */ 489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventComponentResumed, /**< Component resumed due to reacquisition of resources */ 490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventDynamicResourcesAvailable, /**< Component has acquired previously unavailable dynamic resources */ 491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventPortFormatDetected, /**< Component has detected a supported format. */ 492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EventMax = 0x7FFFFFFF 495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_EVENTTYPE; 496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_CALLBACKTYPE 498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The EventHandler method is used to notify the application when an 500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin event of interest occurs. Events are defined in the OMX_EVENTTYPE 501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin enumeration. Please see that enumeration for details of what will 502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin be returned for each type of event. Callbacks should not return 503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin an error to the component, so if an error occurs, the application 504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin shall handle it internally. This is a blocking call. 505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The application should return from this call within 5 msec to avoid 507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin blocking the component for an excessively long period of time. 508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param hComponent 510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle of the component to access. This is the component 511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the GetHandle function. 512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param pAppData 513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an application defined value that was provided in the 514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAppData parameter to the OMX_GetHandle method for the component. 515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This application defined value is provided so that the application 516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin can have a component specific context when receiving the callback. 517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param eEvent 518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Event that the component wants to notify the application about. 519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param nData1 520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nData will be the OMX_ERRORTYPE for an error event and will be 521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin an OMX_COMMANDTYPE for a command complete event and OMX_INDEXTYPE for a OMX_PortSettingsChanged event. 522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param nData2 523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nData2 will hold further information related to the event. Can be OMX_STATETYPE for 524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin a OMX_CommandStateSet command or port index for a OMX_PortSettingsChanged event. 525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Default value is 0 if not used. ) 526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param pEventData 527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Pointer to additional event-specific data (see spec for meaning). 528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE (*EventHandler)( 531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_PTR pAppData, 533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_EVENTTYPE eEvent, 534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nData1, 535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nData2, 536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_PTR pEventData); 537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The EmptyBufferDone method is used to return emptied buffers from an 539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin input port back to the application for reuse. This is a blocking call 540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin so the application should not attempt to refill the buffers during this 541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin call, but should queue them and refill them in another thread. There 542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is no error return, so the application shall handle any errors generated 543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin internally. 544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The application should return from this call within 5 msec. 546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param hComponent 548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle of the component to access. This is the component 549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the GetHandle function. 550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param pAppData 551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an application defined value that was provided in the 552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAppData parameter to the OMX_GetHandle method for the component. 553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This application defined value is provided so that the application 554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin can have a component specific context when receiving the callback. 555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param pBuffer 556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer 557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin or AllocateBuffer indicating the buffer that was emptied. 558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup buf 559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE (*EmptyBufferDone)( 561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_PTR pAppData, 563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /** The FillBufferDone method is used to return filled buffers from an 566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin output port back to the application for emptying and then reuse. 567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This is a blocking call so the application should not attempt to 568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin empty the buffers during this call, but should queue the buffers 569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin and empty them in another thread. There is no error return, so 570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the application shall handle any errors generated internally. The 571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin application shall also update the buffer header to indicate the 572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin number of bytes placed into the buffer. 573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The application should return from this call within 5 msec. 575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param hComponent 577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle of the component to access. This is the component 578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the GetHandle function. 579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param pAppData 580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an application defined value that was provided in the 581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAppData parameter to the OMX_GetHandle method for the component. 582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This application defined value is provided so that the application 583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin can have a component specific context when receiving the callback. 584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param pBuffer 585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer 586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin or AllocateBuffer indicating the buffer that was filled. 587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup buf 588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE (*FillBufferDone)( 590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_OUT OMX_HANDLETYPE hComponent, 591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_OUT OMX_PTR pAppData, 592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer); 593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_CALLBACKTYPE; 595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_BUFFERSUPPLIERTYPE enumeration is used to dictate port supplier 597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin preference when tunneling between two ports. 598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup tun buf 599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_BUFFERSUPPLIERTYPE 601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BufferSupplyUnspecified = 0x0, /**< port supplying the buffers is unspecified, 603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin or don't care */ 604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BufferSupplyInput, /**< input port supplies the buffers */ 605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BufferSupplyOutput, /**< output port supplies the buffers */ 606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BufferSupplyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BufferSupplyVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BufferSupplyMax = 0x7FFFFFFF 609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_BUFFERSUPPLIERTYPE; 610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** buffer supplier parameter 613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup tun 614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_PARAM_BUFFERSUPPLIERTYPE { 616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nSize; /**< size of the structure in bytes */ 617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPortIndex; /**< port that this structure applies to */ 619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERSUPPLIERTYPE eBufferSupplier; /**< buffer supplier */ 620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_PARAM_BUFFERSUPPLIERTYPE; 621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**< indicates that buffers received by an input port of a tunnel 624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin may not modify the data in the buffers 625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup tun 626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_PORTTUNNELFLAG_READONLY 0x00000001 628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_TUNNELSETUPTYPE structure is used to pass data from an output 631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin port to an input port as part the two ComponentTunnelRequest calls 632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin resulting from a OMX_SetupTunnel call from the IL Client. 633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup tun 634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_TUNNELSETUPTYPE 636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nTunnelFlags; /**< bit flags for tunneling */ 638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERSUPPLIERTYPE eSupplier; /**< supplier preference */ 639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_TUNNELSETUPTYPE; 640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* OMX Component headers is included to enable the core to use 642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin macros for functions into the component for OMX release 1.0. 643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Developers should not access any structures or data from within 644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the component header directly */ 645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* TO BE REMOVED - #include <OMX_Component.h> */ 646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** GetComponentVersion will return information about the component. 648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This is a blocking call. This macro will go directly from the 649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin application to the component (via a core macro). The 650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component will return from this call within 5 msec. 651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle of component to execute the command 653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] pComponentName 654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an empty string of length 128 bytes. The component 655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin will write its name into this string. The name will be 656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin terminated by a single zero byte. The name of a component will 657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin be 127 bytes or less to leave room for the trailing zero byte. 658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin An example of a valid component name is "OMX.ABC.ChannelMixer\0". 659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] pComponentVersion 660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an OMX Version structure that the component will fill 661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin in. The component will fill in a value that indicates the 662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component version. NOTE: the component version is NOT the same 663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin as the OMX Specification version (found in all structures). The 664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component version is defined by the vendor of the component and 665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin its value is entirely up to the component vendor. 666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] pSpecVersion 667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an OMX Version structure that the component will fill 668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin in. The SpecVersion is the version of the specification that the 669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component was built against. Please note that this value may or 670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin may not match the structure's version. For example, if the 671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component was built against the 2.0 specification, but the 672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin application (which creates the structure is built against the 673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1.0 specification the versions would be different. 674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] pComponentUUID 675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to the UUID of the component which will be filled in by 676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the component. The UUID is a unique identifier that is set at 677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin RUN time for the component and is unique to each instantion of 678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the component. 679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp 683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_GetComponentVersion( \ 685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentName, \ 687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentVersion, \ 688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pSpecVersion, \ 689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentUUID) \ 690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->GetComponentVersion( \ 691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentName, \ 693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentVersion, \ 694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pSpecVersion, \ 695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentUUID) /* Macro End */ 696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** Send a command to the component. This call is a non-blocking call. 699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should check the parameters and then queue the command 700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin to the component thread to be executed. The component thread shall 701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin send the EventHandler() callback at the conclusion of the command. 702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This macro will go directly from the application to the component (via 703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin a core macro). The component will return from this call within 5 msec. 704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin When the command is "OMX_CommandStateSet" the component will queue a 706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin state transition to the new state idenfied in nParam. 707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin When the command is "OMX_CommandFlush", to flush a port's buffer queues, 709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the command will force the component to return all buffers NOT CURRENTLY 710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin BEING PROCESSED to the application, in the order in which the buffers 711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin were received. 712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin When the command is "OMX_CommandPortDisable" or 714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "OMX_CommandPortEnable", the component's port (given by the value of 715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nParam) will be stopped or restarted. 716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin When the command "OMX_CommandMarkBuffer" is used to mark a buffer, the 718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCmdData will point to a OMX_MARKTYPE structure containing the component 719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle of the component to examine the buffer chain for the mark. nParam1 720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin contains the index of the port on which the buffer mark is applied. 721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Specification text for more details. 723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle of component to execute the command 726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] Cmd 727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Command for the component to execute 728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nParam 729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Parameter for the command to be executed. When Cmd has the value 730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandStateSet, value is a member of OMX_STATETYPE. When Cmd has 731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the value OMX_CommandFlush, value of nParam indicates which port(s) 732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin to flush. -1 is used to flush all ports a single port index will 733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin only flush that port. When Cmd has the value "OMX_CommandPortDisable" 734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin or "OMX_CommandPortEnable", the component's port is given by 735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the value of nParam. When Cmd has the value "OMX_CommandMarkBuffer" 736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the components pot is given by the value of nParam. 737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] pCmdData 738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Parameter pointing to the OMX_MARKTYPE structure when Cmd has the value 739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "OMX_CommandMarkBuffer". 740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp 744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_SendCommand( \ 746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Cmd, \ 748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nParam, \ 749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCmdData) \ 750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->SendCommand( \ 751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Cmd, \ 753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nParam, \ 754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCmdData) /* Macro End */ 755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_GetParameter macro will get one of the current parameter 758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin settings from the component. This macro cannot only be invoked when 759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the component is in the OMX_StateInvalid state. The nParamIndex 760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin parameter is used to indicate which structure is being requested from 761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the component. The application shall allocate the correct structure 762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin and shall fill in the structure size and version information before 763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin invoking this macro. When the parameter applies to a port, the 764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin caller shall fill in the appropriate nPortIndex value indicating the 765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin port on which the parameter applies. If the component has not had 766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin any settings changed, then the component should return a set of 767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin valid DEFAULT parameters for the component. This is a blocking 768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin call. 769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 20 msec. 771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the OMX_GetHandle function. 775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nParamIndex 776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Index of the structure to be filled. This value is from the 777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE enumeration. 778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in,out] pComponentParameterStructure 779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Pointer to application allocated structure to be filled by the 780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component. 781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp 785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_GetParameter( \ 787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nParamIndex, \ 789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentParameterStructure) \ 790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->GetParameter( \ 791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nParamIndex, \ 793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentParameterStructure) /* Macro End */ 794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_SetParameter macro will send an initialization parameter 797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin structure to a component. Each structure shall be sent one at a time, 798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin in a separate invocation of the macro. This macro can only be 799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin invoked when the component is in the OMX_StateLoaded state, or the 800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin port is disabled (when the parameter applies to a port). The 801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nParamIndex parameter is used to indicate which structure is being 802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin passed to the component. The application shall allocate the 803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin correct structure and shall fill in the structure size and version 804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin information (as well as the actual data) before invoking this macro. 805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The application is free to dispose of this structure after the call 806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin as the component is required to copy any data it shall retain. This 807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is a blocking call. 808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 20 msec. 810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the OMX_GetHandle function. 814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nIndex 815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Index of the structure to be sent. This value is from the 816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE enumeration. 817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] pComponentParameterStructure 818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to application allocated structure to be used for 819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin initialization by the component. 820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp 824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_SetParameter( \ 826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nParamIndex, \ 828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentParameterStructure) \ 829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->SetParameter( \ 830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nParamIndex, \ 832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentParameterStructure) /* Macro End */ 833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_GetConfig macro will get one of the configuration structures 836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin from a component. This macro can be invoked anytime after the 837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component has been loaded. The nParamIndex call parameter is used to 838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin indicate which structure is being requested from the component. The 839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin application shall allocate the correct structure and shall fill in the 840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin structure size and version information before invoking this macro. 841fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the component has not had this configuration parameter sent before, 842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin then the component should return a set of valid DEFAULT values for the 843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component. This is a blocking call. 844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 5 msec. 846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the OMX_GetHandle function. 850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nIndex 851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Index of the structure to be filled. This value is from the 852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE enumeration. 853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in,out] pComponentConfigStructure 854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to application allocated structure to be filled by the 855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component. 856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp 860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_GetConfig( \ 862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nConfigIndex, \ 864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentConfigStructure) \ 865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->GetConfig( \ 866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nConfigIndex, \ 868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentConfigStructure) /* Macro End */ 869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_SetConfig macro will send one of the configuration 872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin structures to a component. Each structure shall be sent one at a time, 873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin each in a separate invocation of the macro. This macro can be invoked 874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin anytime after the component has been loaded. The application shall 875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin allocate the correct structure and shall fill in the structure size 876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin and version information (as well as the actual data) before invoking 877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin this macro. The application is free to dispose of this structure after 878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the call as the component is required to copy any data it shall retain. 879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This is a blocking call. 880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 5 msec. 882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the OMX_GetHandle function. 886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nConfigIndex 887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Index of the structure to be sent. This value is from the 888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE enumeration above. 889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] pComponentConfigStructure 890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to application allocated structure to be used for 891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin initialization by the component. 892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp 896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_SetConfig( \ 898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nConfigIndex, \ 900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentConfigStructure) \ 901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->SetConfig( \ 902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nConfigIndex, \ 904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentConfigStructure) /* Macro End */ 905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_GetExtensionIndex macro will invoke a component to translate 908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin a vendor specific configuration or parameter string into an OMX 909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin structure index. There is no requirement for the vendor to support 910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin this command for the indexes already found in the OMX_INDEXTYPE 911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin enumeration (this is done to save space in small components). The 912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component shall support all vendor supplied extension indexes not found 913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin in the master OMX_INDEXTYPE enumeration. This is a blocking call. 914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 5 msec. 916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the GetHandle function. 920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] cParameterName 921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STRING that shall be less than 128 characters long including 922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the trailing null byte. This is the string that will get 923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin translated by the component into a configuration index. 924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] pIndexType 925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin a pointer to a OMX_INDEXTYPE to receive the index value. 926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp 930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_GetExtensionIndex( \ 932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin cParameterName, \ 934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pIndexType) \ 935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->GetExtensionIndex( \ 936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin cParameterName, \ 938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pIndexType) /* Macro End */ 939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_GetState macro will invoke the component to get the current 942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin state of the component and place the state value into the location 943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointed to by pState. 944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 5 msec. 946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the OMX_GetHandle function. 950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] pState 951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to the location to receive the state. The value returned 952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is one of the OMX_STATETYPE members 953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp 957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_GetState( \ 959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pState) \ 961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->GetState( \ 962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pState) /* Macro End */ 964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_UseBuffer macro will request that the component use 967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin a buffer (and allocate its own buffer header) already allocated 968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin by another component, or by the IL Client. This is a blocking 969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin call. 970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 20 msec. 972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the OMX_GetHandle function. 976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] ppBuffer 977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an OMX_BUFFERHEADERTYPE structure used to receive the 978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to the buffer header 979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp buf 983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_UseBuffer( \ 986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ppBufferHdr, \ 988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex, \ 989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAppPrivate, \ 990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nSizeBytes, \ 991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer) \ 992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->UseBuffer( \ 993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ppBufferHdr, \ 995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex, \ 996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAppPrivate, \ 997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nSizeBytes, \ 998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer) 999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_AllocateBuffer macro will request that the component allocate 1002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin a new buffer and buffer header. The component will allocate the 1003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin buffer and the buffer header and return a pointer to the buffer 1004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin header. This is a blocking call. 1005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 5 msec. 1007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 1009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 1010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the OMX_GetHandle function. 1011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] ppBuffer 1012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an OMX_BUFFERHEADERTYPE structure used to receive 1013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the pointer to the buffer header 1014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nPortIndex 1015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex is used to select the port on the component the buffer will 1016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin be used with. The port can be found by using the nPortIndex 1017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin value as an index into the Port Definition array of the component. 1018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] pAppPrivate 1019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAppPrivate is used to initialize the pAppPrivate member of the 1020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin buffer header structure. 1021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nSizeBytes 1022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin size of the buffer to allocate. Used when bAllocateNew is true. 1023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 1024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 1025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 1026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp buf 1027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_AllocateBuffer( \ 1029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 1030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ppBuffer, \ 1031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex, \ 1032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAppPrivate, \ 1033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nSizeBytes) \ 1034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->AllocateBuffer( \ 1035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 1036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ppBuffer, \ 1037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex, \ 1038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAppPrivate, \ 1039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nSizeBytes) /* Macro End */ 1040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_FreeBuffer macro will release a buffer header from the component 1043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin which was allocated using either OMX_AllocateBuffer or OMX_UseBuffer. If 1044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the component allocated the buffer (see the OMX_UseBuffer macro) then 1045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the component shall free the buffer and buffer header. This is a 1046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin blocking call. 1047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 20 msec. 1049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 1051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 1052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the OMX_GetHandle function. 1053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nPortIndex 1054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex is used to select the port on the component the buffer will 1055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin be used with. 1056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] pBuffer 1057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer 1058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin or AllocateBuffer. 1059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 1060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 1061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 1062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp buf 1063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_FreeBuffer( \ 1065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 1066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex, \ 1067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer) \ 1068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->FreeBuffer( \ 1069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 1070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex, \ 1071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer) /* Macro End */ 1072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1074fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_EmptyThisBuffer macro will send a buffer full of data to an 1075fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin input port of a component. The buffer will be emptied by the component 1076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin and returned to the application via the EmptyBufferDone call back. 1077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This is a non-blocking call in that the component will record the buffer 1078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin and return immediately and then empty the buffer, later, at the proper 1079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin time. As expected, this macro may be invoked only while the component 1080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is in the OMX_StateExecuting. If nPortIndex does not specify an input 1081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin port, the component shall return an error. 1082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 5 msec. 1084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 1086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 1087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the OMX_GetHandle function. 1088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] pBuffer 1089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer 1090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin or AllocateBuffer. 1091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 1092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 1093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 1094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp buf 1095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_EmptyThisBuffer( \ 1097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 1098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer) \ 1099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->EmptyThisBuffer( \ 1100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 1101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer) /* Macro End */ 1102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_FillThisBuffer macro will send an empty buffer to an 1105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin output port of a component. The buffer will be filled by the component 1106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin and returned to the application via the FillBufferDone call back. 1107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This is a non-blocking call in that the component will record the buffer 1108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin and return immediately and then fill the buffer, later, at the proper 1109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin time. As expected, this macro may be invoked only while the component 1110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is in the OMX_ExecutingState. If nPortIndex does not specify an output 1111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin port, the component shall return an error. 1112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 5 msec. 1114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 1116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 1117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the OMX_GetHandle function. 1118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] pBuffer 1119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer 1120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin or AllocateBuffer. 1121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 1122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 1123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 1124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp buf 1125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_FillThisBuffer( \ 1127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 1128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer) \ 1129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->FillThisBuffer( \ 1130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 1131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer) /* Macro End */ 1132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_UseEGLImage macro will request that the component use 1136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin a EGLImage provided by EGL (and allocate its own buffer header) 1137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This is a blocking call. 1138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The component should return from this call within 20 msec. 1140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 1142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 1143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the OMX_GetHandle function. 1144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] ppBuffer 1145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an OMX_BUFFERHEADERTYPE structure used to receive the 1146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to the buffer header. Note that the memory location used 1147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for this buffer is NOT visible to the IL Client. 1148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nPortIndex 1149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex is used to select the port on the component the buffer will 1150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin be used with. The port can be found by using the nPortIndex 1151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin value as an index into the Port Definition array of the component. 1152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] pAppPrivate 1153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAppPrivate is used to initialize the pAppPrivate member of the 1154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin buffer header structure. 1155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] eglImage 1156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eglImage contains the handle of the EGLImage to use as a buffer on the 1157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin specified port. The component is expected to validate properties of 1158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the EGLImage against the configuration of the port to ensure the component 1159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin can use the EGLImage as a buffer. 1160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 1161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 1162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 1163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup comp buf 1164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_UseEGLImage( \ 1166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 1167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ppBufferHdr, \ 1168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex, \ 1169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAppPrivate, \ 1170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eglImage) \ 1171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_COMPONENTTYPE*)hComponent)->UseEGLImage( \ 1172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin hComponent, \ 1173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ppBufferHdr, \ 1174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortIndex, \ 1175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAppPrivate, \ 1176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eglImage) 1177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_Init method is used to initialize the OMX core. It shall be the 1179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin first call made into OMX and it should only be executed one time without 1180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin an interviening OMX_Deinit call. 1181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The core should return from this call within 20 msec. 1183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 1185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 1186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 1187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup core 1188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_API OMX_ERRORTYPE OMX_APIENTRY TIOMX_Init(void); 1190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_Deinit method is used to deinitialize the OMX core. It shall be 1193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the last call made into OMX. In the event that the core determines that 1194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin thare are components loaded when this call is made, the core may return 1195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin with an error rather than try to unload the components. 1196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The core should return from this call within 20 msec. 1198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 1200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 1201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 1202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup core 1203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_API OMX_ERRORTYPE OMX_APIENTRY TIOMX_Deinit(void); 1205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_ComponentNameEnum method will enumerate through all the names of 1208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin recognised valid components in the system. This function is provided 1209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin as a means to detect all the components in the system run-time. There is 1210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin no strict ordering to the enumeration order of component names, although 1211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin each name will only be enumerated once. If the OMX core supports run-time 1212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin installation of new components, it is only requried to detect newly 1213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin installed components when the first call to enumerate component names 1214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is made (i.e. when nIndex is 0x0). 1215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The core should return from this call in 20 msec. 1217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] cComponentName 1219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to a null terminated string with the component name. The 1220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin names of the components are strings less than 127 bytes in length 1221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plus the trailing null for a maximum size of 128 bytes. An example 1222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are 1223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assigned by the vendor, but shall start with "OMX." and then have 1224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the Vendor designation next. 1225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nNameLength 1226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin number of characters in the cComponentName string. With all 1227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component name strings restricted to less than 128 characters 1228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (including the trailing null) it is recomended that the caller 1229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin provide a input string for the cComponentName of 128 characters. 1230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nIndex 1231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin number containing the enumeration index for the component. 1232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Multiple calls to OMX_ComponentNameEnum with increasing values 1233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin of nIndex will enumerate through the component names in the 1234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin system until OMX_ErrorNoMore is returned. The value of nIndex 1235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin is 0 to (N-1), where N is the number of valid installed components 1236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin in the system. 1237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 1238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 1239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. When the value of nIndex exceeds the number of 1240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin components in the system minus 1, OMX_ErrorNoMore will be 1241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin returned. Otherwise the appropriate OMX error will be returned. 1242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup core 1243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_API OMX_ERRORTYPE OMX_APIENTRY TIOMX_ComponentNameEnum( 1245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_OUT OMX_STRING cComponentName, 1246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nNameLength, 1247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nIndex); 1248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_GetHandle method will locate the component specified by the 1251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component name given, load that component into memory and then invoke 1252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the component's methods to create an instance of the component. 1253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The core should return from this call within 20 msec. 1255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] pHandle 1257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an OMX_HANDLETYPE pointer to be filled in by this method. 1258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] cComponentName 1259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to a null terminated string with the component name. The 1260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin names of the components are strings less than 127 bytes in length 1261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin plus the trailing null for a maximum size of 128 bytes. An example 1262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are 1263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assigned by the vendor, but shall start with "OMX." and then have 1264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the Vendor designation next. 1265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] pAppData 1266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to an application defined value that will be returned 1267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin during callbacks so that the application can identify the source 1268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin of the callback. 1269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] pCallBacks 1270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pointer to a OMX_CALLBACKTYPE structure that will be passed to the 1271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component to initialize it with. 1272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 1273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 1274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 1275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup core 1276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_API OMX_ERRORTYPE OMX_APIENTRY TIOMX_GetHandle( 1278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_OUT OMX_HANDLETYPE* pHandle, 1279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_STRING cComponentName, 1280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_PTR pAppData, 1281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_CALLBACKTYPE* pCallBacks); 1282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_FreeHandle method will free a handle allocated by the OMX_GetHandle 1285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin method. If the component reference count goes to zero, the component will 1286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin be unloaded from memory. 1287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The core should return from this call within 20 msec when the component is 1289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin in the OMX_StateLoaded state. 1290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hComponent 1292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. This is the component 1293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin handle returned by the call to the GetHandle function. 1294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 1295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 1296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 1297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup core 1298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_API OMX_ERRORTYPE OMX_APIENTRY TIOMX_FreeHandle( 1300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent); 1301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_SetupTunnel method will handle the necessary calls to the components 1305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin to setup the specified tunnel the two components. NOTE: This is 1306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin an actual method (not a #define macro). This method will make calls into 1307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the component ComponentTunnelRequest method to do the actual tunnel 1308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin connection. 1309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The ComponentTunnelRequest method on both components will be called. 1311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This method shall not be called unless the component is in the 1312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StateLoaded state except when the ports used for the tunnel are 1313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin disabled. In this case, the component may be in the OMX_StateExecuting, 1314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_StatePause, or OMX_StateIdle states. 1315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The core should return from this call within 20 msec. 1317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hOutput 1319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Handle of the component to be accessed. Also this is the handle 1320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin of the component whose port, specified in the nPortOutput parameter 1321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin will be used the source for the tunnel. This is the component handle 1322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin returned by the call to the OMX_GetHandle function. There is a 1323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin requirement that hOutput be the source for the data when 1324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin tunelling (i.e. nPortOutput is an output port). If 0x0, the component 1325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin specified in hInput will have it's port specified in nPortInput 1326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin setup for communication with the application / IL client. 1327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nPortOutput 1328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortOutput is used to select the source port on component to be 1329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin used in the tunnel. 1330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] hInput 1331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This is the component to setup the tunnel with. This is the handle 1332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin of the component whose port, specified in the nPortInput parameter 1333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin will be used the destination for the tunnel. This is the component handle 1334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin returned by the call to the OMX_GetHandle function. There is a 1335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin requirement that hInput be the destination for the data when 1336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin tunelling (i.e. nPortInut is an input port). If 0x0, the component 1337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin specified in hOutput will have it's port specified in nPortPOutput 1338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin setup for communication with the application / IL client. 1339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] nPortInput 1340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nPortInput is used to select the destination port on component to be 1341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin used in the tunnel. 1342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @return OMX_ERRORTYPE 1343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If the command successfully executes, the return code will be 1344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. 1345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin When OMX_ErrorNotImplemented is returned, one or both components is 1346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin a non-interop component and does not support tunneling. 1347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin On failure, the ports of both components are setup for communication 1349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin with the application / IL Client. 1350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup core tun 1351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_API OMX_ERRORTYPE OMX_APIENTRY TIOMX_SetupTunnel( 1353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hOutput, 1354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nPortOutput, 1355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hInput, 1356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_U32 nPortInput); 1357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @ingroup cp */ 1359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_API OMX_ERRORTYPE OMX_GetContentPipe( 1360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_OUT OMX_HANDLETYPE *hPipe, 1361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_STRING szURI); 1362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_GetComponentsOfRole method will return the number of components that support the given 1364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin role and (if the compNames field is non-NULL) the names of those components. The call will fail if 1365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the 1366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin client should: 1367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * first call this function with the compNames field NULL to determine the number of component names 1368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * second call this function with the compNames field pointing to an array of names allocated 1369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin according to the number returned by the first call. 1370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The core should return from this call within 5 msec. 1372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] role 1374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This is generic standard component name consisting only of component class 1375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin name and the type within that class (e.g. 'audio_decoder.aac'). 1376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [inout] pNumComps 1377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This is used both as input and output. 1378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If compNames is NULL, the input is ignored and the output specifies how many components support 1380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin the given role. 1381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If compNames is not NULL, on input it bounds the size of the input structure and 1383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin on output, it specifies the number of components string names listed within the compNames parameter. 1384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [inout] compNames 1385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings which accepts 1386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin a list of the names of all physical components that implement the specified standard component name. 1387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Each name is NULL terminated. numComps indicates the number of names. 1388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup core 1389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_API OMX_ERRORTYPE TIOMX_GetComponentsOfRole ( 1391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_STRING role, 1392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INOUT OMX_U32 *pNumComps, 1393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INOUT OMX_U8 **compNames); 1394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** The OMX_GetRolesOfComponent method will return the number of roles supported by the given 1396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin component and (if the roles field is non-NULL) the names of those roles. The call will fail if 1397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the 1398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin client should: 1399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * first call this function with the roles field NULL to determine the number of role names 1400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * second call this function with the roles field pointing to an array of names allocated 1401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin according to the number returned by the first call. 1402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin The core should return from this call within 5 msec. 1404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [in] compName 1406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This is the name of the component being queried about. 1407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [inout] pNumRoles 1408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin This is used both as input and output. 1409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If roles is NULL, the input is ignored and the output specifies how many roles the component supports. 1411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If compNames is not NULL, on input it bounds the size of the input structure and 1413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin on output, it specifies the number of roles string names listed within the roles parameter. 1414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @param [out] roles 1415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings 1416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin which accepts a list of the names of all standard components roles implemented on the 1417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin specified component name. numComps indicates the number of names. 1418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin @ingroup core 1419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_API OMX_ERRORTYPE TIOMX_GetRolesOfComponent ( 1421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_IN OMX_STRING compName, 1422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INOUT OMX_U32 *pNumRoles, 1423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_OUT OMX_U8 **roles); 1424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __cplusplus 1426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif /* __cplusplus */ 1428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* File EOF */ 1431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1432