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