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