| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 1 | /* ------------------------------------------------------------------ |
| 2 | * Copyright (C) 1998-2009 PacketVideo |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either |
| 13 | * express or implied. |
| 14 | * See the License for the specific language governing permissions |
| 15 | * and limitations under the License. |
| 16 | * ------------------------------------------------------------------- |
| 17 | */ |
| 18 | /* |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 19 | * Copyright (c) 2008 The Khronos Group Inc. |
| 20 | * |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 21 | * Permission is hereby granted, free of charge, to any person obtaining |
| 22 | * a copy of this software and associated documentation files (the |
| 23 | * "Software"), to deal in the Software without restriction, including |
| 24 | * without limitation the rights to use, copy, modify, merge, publish, |
| 25 | * distribute, sublicense, and/or sell copies of the Software, and to |
| 26 | * permit persons to whom the Software is furnished to do so, subject |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 27 | * to the following conditions: |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 28 | * The above copyright notice and this permission notice shall be included |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 29 | * in all copies or substantial portions of the Software. |
| 30 | * |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 31 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| 32 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| 33 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
| 34 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY |
| 35 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
| 36 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 37 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 38 | * |
| 39 | */ |
| 40 | |
| 41 | /** OMX_Component.h - OpenMax IL version 1.1.2 |
| 42 | * The OMX_Component header file contains the definitions used to define |
| 43 | * the public interface of a component. This header file is intended to |
| 44 | * be used by both the application and the component. |
| 45 | */ |
| 46 | |
| 47 | #ifndef OMX_Component_h |
| 48 | #define OMX_Component_h |
| 49 | |
| 50 | #ifdef __cplusplus |
| 51 | extern "C" { |
| 52 | #endif /* __cplusplus */ |
| 53 | |
| 54 | |
| 55 | |
| 56 | /* Each OMX header must include all required header files to allow the |
| 57 | * header to compile without errors. The includes below are required |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 58 | * for this header file to compile successfully |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 59 | */ |
| 60 | |
| 61 | #include <OMX_Audio.h> |
| 62 | #include <OMX_Video.h> |
| 63 | #include <OMX_Image.h> |
| 64 | #include <OMX_Other.h> |
| 65 | |
| 66 | /** @ingroup comp */ |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 67 | typedef enum OMX_PORTDOMAINTYPE { |
| 68 | OMX_PortDomainAudio, |
| 69 | OMX_PortDomainVideo, |
| 70 | OMX_PortDomainImage, |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 71 | OMX_PortDomainOther, |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 72 | OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 73 | OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ |
| 74 | OMX_PortDomainMax = 0x7ffffff |
| 75 | } OMX_PORTDOMAINTYPE; |
| 76 | |
| 77 | /** @ingroup comp */ |
| 78 | typedef struct OMX_PARAM_PORTDEFINITIONTYPE { |
| 79 | OMX_U32 nSize; /**< Size of the structure in bytes */ |
| 80 | OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ |
| 81 | OMX_U32 nPortIndex; /**< Port number the structure applies to */ |
| 82 | OMX_DIRTYPE eDir; /**< Direction (input or output) of this port */ |
| 83 | OMX_U32 nBufferCountActual; /**< The actual number of buffers allocated on this port */ |
| 84 | OMX_U32 nBufferCountMin; /**< The minimum number of buffers this port requires */ |
| 85 | OMX_U32 nBufferSize; /**< Size, in bytes, for buffers to be used for this channel */ |
| 86 | OMX_BOOL bEnabled; /**< Ports default to enabled and are enabled/disabled by |
| 87 | OMX_CommandPortEnable/OMX_CommandPortDisable. |
| 88 | When disabled a port is unpopulated. A disabled port |
| 89 | is not populated with buffers on a transition to IDLE. */ |
| 90 | OMX_BOOL bPopulated; /**< Port is populated with all of its buffers as indicated by |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 91 | nBufferCountActual. A disabled port is always unpopulated. |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 92 | An enabled port is populated on a transition to OMX_StateIdle |
| 93 | and unpopulated on a transition to loaded. */ |
| 94 | OMX_PORTDOMAINTYPE eDomain; /**< Domain of the port. Determines the contents of metadata below. */ |
| 95 | union { |
| 96 | OMX_AUDIO_PORTDEFINITIONTYPE audio; |
| 97 | OMX_VIDEO_PORTDEFINITIONTYPE video; |
| 98 | OMX_IMAGE_PORTDEFINITIONTYPE image; |
| 99 | OMX_OTHER_PORTDEFINITIONTYPE other; |
| 100 | } format; |
| 101 | OMX_BOOL bBuffersContiguous; |
| 102 | OMX_U32 nBufferAlignment; |
| 103 | } OMX_PARAM_PORTDEFINITIONTYPE; |
| 104 | |
| 105 | /** @ingroup comp */ |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 106 | typedef struct OMX_PARAM_U32TYPE { |
| 107 | OMX_U32 nSize; /**< Size of this structure, in Bytes */ |
| 108 | OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ |
| 109 | OMX_U32 nPortIndex; /**< port that this structure applies to */ |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 110 | OMX_U32 nU32; /**< U32 value */ |
| 111 | } OMX_PARAM_U32TYPE; |
| 112 | |
| 113 | /** @ingroup rpm */ |
| 114 | typedef enum OMX_SUSPENSIONPOLICYTYPE { |
| 115 | OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */ |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 116 | OMX_SuspensionEnabled, /**< Suspension allowed */ |
| 117 | OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 118 | OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ |
| 119 | OMX_SuspensionPolicyMax = 0x7fffffff |
| 120 | } OMX_SUSPENSIONPOLICYTYPE; |
| 121 | |
| 122 | /** @ingroup rpm */ |
| 123 | typedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE { |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 124 | OMX_U32 nSize; |
| 125 | OMX_VERSIONTYPE nVersion; |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 126 | OMX_SUSPENSIONPOLICYTYPE ePolicy; |
| 127 | } OMX_PARAM_SUSPENSIONPOLICYTYPE; |
| 128 | |
| 129 | /** @ingroup rpm */ |
| 130 | typedef enum OMX_SUSPENSIONTYPE { |
| 131 | OMX_NotSuspended, /**< component is not suspended */ |
| 132 | OMX_Suspended, /**< component is suspended */ |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 133 | OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 134 | OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ |
| 135 | OMX_SuspendMax = 0x7FFFFFFF |
| 136 | } OMX_SUSPENSIONTYPE; |
| 137 | |
| 138 | /** @ingroup rpm */ |
| 139 | typedef struct OMX_PARAM_SUSPENSIONTYPE { |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 140 | OMX_U32 nSize; |
| 141 | OMX_VERSIONTYPE nVersion; |
| 142 | OMX_SUSPENSIONTYPE eType; |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 143 | } OMX_PARAM_SUSPENSIONTYPE ; |
| 144 | |
| 145 | typedef struct OMX_CONFIG_BOOLEANTYPE { |
| 146 | OMX_U32 nSize; |
| 147 | OMX_VERSIONTYPE nVersion; |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 148 | OMX_BOOL bEnabled; |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 149 | } OMX_CONFIG_BOOLEANTYPE; |
| 150 | |
| 151 | /* Parameter specifying the content uri to use. */ |
| 152 | /** @ingroup cp */ |
| 153 | typedef struct OMX_PARAM_CONTENTURITYPE |
| 154 | { |
| 155 | OMX_U32 nSize; /**< size of the structure in bytes, including |
| 156 | actual URI name */ |
| 157 | OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ |
| 158 | OMX_U8 contentURI[1]; /**< The URI name */ |
| 159 | } OMX_PARAM_CONTENTURITYPE; |
| 160 | |
| 161 | /* Parameter specifying the pipe to use. */ |
| 162 | /** @ingroup cp */ |
| 163 | typedef struct OMX_PARAM_CONTENTPIPETYPE |
| 164 | { |
| 165 | OMX_U32 nSize; /**< size of the structure in bytes */ |
| 166 | OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ |
| 167 | OMX_HANDLETYPE hPipe; /**< The pipe handle*/ |
| 168 | } OMX_PARAM_CONTENTPIPETYPE; |
| 169 | |
| 170 | /** @ingroup rpm */ |
| 171 | typedef struct OMX_RESOURCECONCEALMENTTYPE { |
| 172 | OMX_U32 nSize; /**< size of the structure in bytes */ |
| 173 | OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 174 | OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment |
| 175 | methods (like degrading algorithm quality to |
| 176 | lower resource consumption or functional bypass) |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 177 | on a component as a resolution to resource conflicts. */ |
| 178 | } OMX_RESOURCECONCEALMENTTYPE; |
| 179 | |
| 180 | |
| 181 | /** @ingroup metadata */ |
| 182 | typedef enum OMX_METADATACHARSETTYPE { |
| 183 | OMX_MetadataCharsetUnknown = 0, |
| 184 | OMX_MetadataCharsetASCII, |
| 185 | OMX_MetadataCharsetBinary, |
| 186 | OMX_MetadataCharsetCodePage1252, |
| 187 | OMX_MetadataCharsetUTF8, |
| 188 | OMX_MetadataCharsetJavaConformantUTF8, |
| 189 | OMX_MetadataCharsetUTF7, |
| 190 | OMX_MetadataCharsetImapUTF7, |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 191 | OMX_MetadataCharsetUTF16LE, |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 192 | OMX_MetadataCharsetUTF16BE, |
| 193 | OMX_MetadataCharsetGB12345, |
| 194 | OMX_MetadataCharsetHZGB2312, |
| 195 | OMX_MetadataCharsetGB2312, |
| 196 | OMX_MetadataCharsetGB18030, |
| 197 | OMX_MetadataCharsetGBK, |
| 198 | OMX_MetadataCharsetBig5, |
| 199 | OMX_MetadataCharsetISO88591, |
| 200 | OMX_MetadataCharsetISO88592, |
| 201 | OMX_MetadataCharsetISO88593, |
| 202 | OMX_MetadataCharsetISO88594, |
| 203 | OMX_MetadataCharsetISO88595, |
| 204 | OMX_MetadataCharsetISO88596, |
| 205 | OMX_MetadataCharsetISO88597, |
| 206 | OMX_MetadataCharsetISO88598, |
| 207 | OMX_MetadataCharsetISO88599, |
| 208 | OMX_MetadataCharsetISO885910, |
| 209 | OMX_MetadataCharsetISO885913, |
| 210 | OMX_MetadataCharsetISO885914, |
| 211 | OMX_MetadataCharsetISO885915, |
| 212 | OMX_MetadataCharsetShiftJIS, |
| 213 | OMX_MetadataCharsetISO2022JP, |
| 214 | OMX_MetadataCharsetISO2022JP1, |
| 215 | OMX_MetadataCharsetISOEUCJP, |
| 216 | OMX_MetadataCharsetSMS7Bit, |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 217 | OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 218 | OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ |
| 219 | OMX_MetadataCharsetTypeMax= 0x7FFFFFFF |
| 220 | } OMX_METADATACHARSETTYPE; |
| 221 | |
| 222 | /** @ingroup metadata */ |
| 223 | typedef enum OMX_METADATASCOPETYPE |
| 224 | { |
| 225 | OMX_MetadataScopeAllLevels, |
| 226 | OMX_MetadataScopeTopLevel, |
| 227 | OMX_MetadataScopePortLevel, |
| 228 | OMX_MetadataScopeNodeLevel, |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 229 | OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 230 | OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ |
| 231 | OMX_MetadataScopeTypeMax = 0x7fffffff |
| 232 | } OMX_METADATASCOPETYPE; |
| 233 | |
| 234 | /** @ingroup metadata */ |
| 235 | typedef enum OMX_METADATASEARCHMODETYPE |
| 236 | { |
| 237 | OMX_MetadataSearchValueSizeByIndex, |
| 238 | OMX_MetadataSearchItemByIndex, |
| 239 | OMX_MetadataSearchNextItemByKey, |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 240 | OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 241 | OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ |
| 242 | OMX_MetadataSearchTypeMax = 0x7fffffff |
| 243 | } OMX_METADATASEARCHMODETYPE; |
| 244 | /** @ingroup metadata */ |
| 245 | typedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE |
| 246 | { |
| 247 | OMX_U32 nSize; |
| 248 | OMX_VERSIONTYPE nVersion; |
| 249 | OMX_METADATASCOPETYPE eScopeMode; |
| 250 | OMX_U32 nScopeSpecifier; |
| 251 | OMX_U32 nMetadataItemCount; |
| 252 | } OMX_CONFIG_METADATAITEMCOUNTTYPE; |
| 253 | |
| 254 | /** @ingroup metadata */ |
| 255 | typedef struct OMX_CONFIG_METADATAITEMTYPE |
| 256 | { |
| 257 | OMX_U32 nSize; |
| 258 | OMX_VERSIONTYPE nVersion; |
| 259 | OMX_METADATASCOPETYPE eScopeMode; |
| 260 | OMX_U32 nScopeSpecifier; |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 261 | OMX_U32 nMetadataItemIndex; |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 262 | OMX_METADATASEARCHMODETYPE eSearchMode; |
| 263 | OMX_METADATACHARSETTYPE eKeyCharset; |
| 264 | OMX_U8 nKeySizeUsed; |
| 265 | OMX_U8 nKey[128]; |
| 266 | OMX_METADATACHARSETTYPE eValueCharset; |
| 267 | OMX_STRING sLanguageCountry; |
| 268 | OMX_U32 nValueMaxSize; |
| 269 | OMX_U32 nValueSizeUsed; |
| 270 | OMX_U8 nValue[1]; |
| 271 | } OMX_CONFIG_METADATAITEMTYPE; |
| 272 | |
| 273 | /* @ingroup metadata */ |
| 274 | typedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE |
| 275 | { |
| 276 | OMX_U32 nSize; |
| 277 | OMX_VERSIONTYPE nVersion; |
| 278 | OMX_BOOL bAllKeys; |
| 279 | OMX_U32 nParentNodeID; |
| 280 | OMX_U32 nNumNodes; |
| 281 | } OMX_CONFIG_CONTAINERNODECOUNTTYPE; |
| 282 | |
| 283 | /** @ingroup metadata */ |
| 284 | typedef struct OMX_CONFIG_CONTAINERNODEIDTYPE |
| 285 | { |
| 286 | OMX_U32 nSize; |
| 287 | OMX_VERSIONTYPE nVersion; |
| 288 | OMX_BOOL bAllKeys; |
| 289 | OMX_U32 nParentNodeID; |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 290 | OMX_U32 nNodeIndex; |
| 291 | OMX_U32 nNodeID; |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 292 | OMX_STRING cNodeName; |
| 293 | OMX_BOOL bIsLeafType; |
| 294 | } OMX_CONFIG_CONTAINERNODEIDTYPE; |
| 295 | |
| 296 | /** @ingroup metadata */ |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 297 | typedef struct OMX_PARAM_METADATAFILTERTYPE |
| 298 | { |
| 299 | OMX_U32 nSize; |
| 300 | OMX_VERSIONTYPE nVersion; |
| 301 | OMX_BOOL bAllKeys; /* if true then this structure refers to all keys and |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 302 | * the three key fields below are ignored */ |
| 303 | OMX_METADATACHARSETTYPE eKeyCharset; |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 304 | OMX_U32 nKeySizeUsed; |
| 305 | OMX_U8 nKey [128]; |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 306 | OMX_U32 nLanguageCountrySizeUsed; |
| 307 | OMX_U8 nLanguageCountry[128]; |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 308 | OMX_BOOL bEnabled; /* if true then key is part of filter (e.g. |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 309 | * retained for query later). If false then |
| 310 | * key is not part of filter */ |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 311 | } OMX_PARAM_METADATAFILTERTYPE; |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 312 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 313 | /** The OMX_HANDLETYPE structure defines the component handle. The component |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 314 | * handle is used to access all of the component's public methods and also |
| 315 | * contains pointers to the component's private data area. The component |
| 316 | * handle is initialized by the OMX core (with help from the component) |
| 317 | * during the process of loading the component. After the component is |
| 318 | * successfully loaded, the application can safely access any of the |
| 319 | * component's public functions (although some may return an error because |
| 320 | * the state is inappropriate for the access). |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 321 | * |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 322 | * @ingroup comp |
| 323 | */ |
| 324 | typedef struct OMX_COMPONENTTYPE |
| 325 | { |
| 326 | /** The size of this structure, in bytes. It is the responsibility |
| 327 | of the allocator of this structure to fill in this value. Since |
| 328 | this structure is allocated by the GetHandle function, this |
| 329 | function will fill in this value. */ |
| 330 | OMX_U32 nSize; |
| 331 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 332 | /** nVersion is the version of the OMX specification that the structure |
| 333 | is built against. It is the responsibility of the creator of this |
| 334 | structure to initialize this value and every user of this structure |
| 335 | should verify that it knows how to use the exact version of |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 336 | this structure found herein. */ |
| 337 | OMX_VERSIONTYPE nVersion; |
| 338 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 339 | /** pComponentPrivate is a pointer to the component private data area. |
| 340 | This member is allocated and initialized by the component when the |
| 341 | component is first loaded. The application should not access this |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 342 | data area. */ |
| 343 | OMX_PTR pComponentPrivate; |
| 344 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 345 | /** pApplicationPrivate is a pointer that is a parameter to the |
| 346 | OMX_GetHandle method, and contains an application private value |
| 347 | provided by the IL client. This application private data is |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 348 | returned to the IL Client by OMX in all callbacks */ |
| 349 | OMX_PTR pApplicationPrivate; |
| 350 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 351 | /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 352 | specification for details on the GetComponentVersion method. |
| 353 | */ |
| 354 | OMX_ERRORTYPE (*GetComponentVersion)( |
| 355 | OMX_IN OMX_HANDLETYPE hComponent, |
| 356 | OMX_OUT OMX_STRING pComponentName, |
| 357 | OMX_OUT OMX_VERSIONTYPE* pComponentVersion, |
| 358 | OMX_OUT OMX_VERSIONTYPE* pSpecVersion, |
| 359 | OMX_OUT OMX_UUIDTYPE* pComponentUUID); |
| 360 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 361 | /** refer to OMX_SendCommand in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 362 | specification for details on the SendCommand method. |
| 363 | */ |
| 364 | OMX_ERRORTYPE (*SendCommand)( |
| 365 | OMX_IN OMX_HANDLETYPE hComponent, |
| 366 | OMX_IN OMX_COMMANDTYPE Cmd, |
| 367 | OMX_IN OMX_U32 nParam1, |
| 368 | OMX_IN OMX_PTR pCmdData); |
| 369 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 370 | /** refer to OMX_GetParameter in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 371 | specification for details on the GetParameter method. |
| 372 | */ |
| 373 | OMX_ERRORTYPE (*GetParameter)( |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 374 | OMX_IN OMX_HANDLETYPE hComponent, |
| 375 | OMX_IN OMX_INDEXTYPE nParamIndex, |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 376 | OMX_INOUT OMX_PTR pComponentParameterStructure); |
| 377 | |
| 378 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 379 | /** refer to OMX_SetParameter in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 380 | specification for details on the SetParameter method. |
| 381 | */ |
| 382 | OMX_ERRORTYPE (*SetParameter)( |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 383 | OMX_IN OMX_HANDLETYPE hComponent, |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 384 | OMX_IN OMX_INDEXTYPE nIndex, |
| 385 | OMX_IN OMX_PTR pComponentParameterStructure); |
| 386 | |
| 387 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 388 | /** refer to OMX_GetConfig in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 389 | specification for details on the GetConfig method. |
| 390 | */ |
| 391 | OMX_ERRORTYPE (*GetConfig)( |
| 392 | OMX_IN OMX_HANDLETYPE hComponent, |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 393 | OMX_IN OMX_INDEXTYPE nIndex, |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 394 | OMX_INOUT OMX_PTR pComponentConfigStructure); |
| 395 | |
| 396 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 397 | /** refer to OMX_SetConfig in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 398 | specification for details on the SetConfig method. |
| 399 | */ |
| 400 | OMX_ERRORTYPE (*SetConfig)( |
| 401 | OMX_IN OMX_HANDLETYPE hComponent, |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 402 | OMX_IN OMX_INDEXTYPE nIndex, |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 403 | OMX_IN OMX_PTR pComponentConfigStructure); |
| 404 | |
| 405 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 406 | /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 407 | specification for details on the GetExtensionIndex method. |
| 408 | */ |
| 409 | OMX_ERRORTYPE (*GetExtensionIndex)( |
| 410 | OMX_IN OMX_HANDLETYPE hComponent, |
| 411 | OMX_IN OMX_STRING cParameterName, |
| 412 | OMX_OUT OMX_INDEXTYPE* pIndexType); |
| 413 | |
| 414 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 415 | /** refer to OMX_GetState in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 416 | specification for details on the GetState method. |
| 417 | */ |
| 418 | OMX_ERRORTYPE (*GetState)( |
| 419 | OMX_IN OMX_HANDLETYPE hComponent, |
| 420 | OMX_OUT OMX_STATETYPE* pState); |
| 421 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 422 | |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 423 | /** The ComponentTunnelRequest method will interact with another OMX |
| 424 | component to determine if tunneling is possible and to setup the |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 425 | tunneling. The return codes for this method can be used to |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 426 | determine if tunneling is not possible, or if tunneling is not |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 427 | supported. |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 428 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 429 | Base profile components (i.e. non-interop) do not support this |
| 430 | method and should return OMX_ErrorNotImplemented |
| 431 | |
| 432 | The interop profile component MUST support tunneling to another |
| 433 | interop profile component with a compatible port parameters. |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 434 | A component may also support proprietary communication. |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 435 | |
| 436 | If proprietary communication is supported the negotiation of |
| 437 | proprietary communication is done outside of OMX in a vendor |
| 438 | specific way. It is only required that the proper result be |
| 439 | returned and the details of how the setup is done is left |
| 440 | to the component implementation. |
| 441 | |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 442 | When this method is invoked when nPort in an output port, the |
| 443 | component will: |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 444 | 1. Populate the pTunnelSetup structure with the output port's |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 445 | requirements and constraints for the tunnel. |
| 446 | |
| 447 | When this method is invoked when nPort in an input port, the |
| 448 | component will: |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 449 | 1. Query the necessary parameters from the output port to |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 450 | determine if the ports are compatible for tunneling |
| 451 | 2. If the ports are compatible, the component should store |
| 452 | the tunnel step provided by the output port |
| 453 | 3. Determine which port (either input or output) is the buffer |
| 454 | supplier, and call OMX_SetParameter on the output port to |
| 455 | indicate this selection. |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 456 | |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 457 | The component will return from this call within 5 msec. |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 458 | |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 459 | @param [in] hComp |
| 460 | Handle of the component to be accessed. This is the component |
| 461 | handle returned by the call to the OMX_GetHandle method. |
| 462 | @param [in] nPort |
| 463 | nPort is used to select the port on the component to be used |
| 464 | for tunneling. |
| 465 | @param [in] hTunneledComp |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 466 | Handle of the component to tunnel with. This is the component |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 467 | handle returned by the call to the OMX_GetHandle method. When |
| 468 | this parameter is 0x0 the component should setup the port for |
| 469 | communication with the application / IL Client. |
| 470 | @param [in] nPortOutput |
| 471 | nPortOutput is used indicate the port the component should |
| 472 | tunnel with. |
| 473 | @param [in] pTunnelSetup |
| 474 | Pointer to the tunnel setup structure. When nPort is an output port |
| 475 | the component should populate the fields of this structure. When |
| 476 | When nPort is an input port the component should review the setup |
| 477 | provided by the component with the output port. |
| 478 | @return OMX_ERRORTYPE |
| 479 | If the command successfully executes, the return code will be |
| 480 | OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. |
| 481 | @ingroup tun |
| 482 | */ |
| 483 | |
| 484 | OMX_ERRORTYPE (*ComponentTunnelRequest)( |
| 485 | OMX_IN OMX_HANDLETYPE hComp, |
| 486 | OMX_IN OMX_U32 nPort, |
| 487 | OMX_IN OMX_HANDLETYPE hTunneledComp, |
| 488 | OMX_IN OMX_U32 nTunneledPort, |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 489 | OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup); |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 490 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 491 | /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 492 | specification for details on the UseBuffer method. |
| 493 | @ingroup buf |
| 494 | */ |
| 495 | OMX_ERRORTYPE (*UseBuffer)( |
| 496 | OMX_IN OMX_HANDLETYPE hComponent, |
| 497 | OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, |
| 498 | OMX_IN OMX_U32 nPortIndex, |
| 499 | OMX_IN OMX_PTR pAppPrivate, |
| 500 | OMX_IN OMX_U32 nSizeBytes, |
| 501 | OMX_IN OMX_U8* pBuffer); |
| 502 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 503 | /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 504 | specification for details on the AllocateBuffer method. |
| 505 | @ingroup buf |
| 506 | */ |
| 507 | OMX_ERRORTYPE (*AllocateBuffer)( |
| 508 | OMX_IN OMX_HANDLETYPE hComponent, |
| 509 | OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer, |
| 510 | OMX_IN OMX_U32 nPortIndex, |
| 511 | OMX_IN OMX_PTR pAppPrivate, |
| 512 | OMX_IN OMX_U32 nSizeBytes); |
| 513 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 514 | /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 515 | specification for details on the FreeBuffer method. |
| 516 | @ingroup buf |
| 517 | */ |
| 518 | OMX_ERRORTYPE (*FreeBuffer)( |
| 519 | OMX_IN OMX_HANDLETYPE hComponent, |
| 520 | OMX_IN OMX_U32 nPortIndex, |
| 521 | OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); |
| 522 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 523 | /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 524 | specification for details on the EmptyThisBuffer method. |
| 525 | @ingroup buf |
| 526 | */ |
| 527 | OMX_ERRORTYPE (*EmptyThisBuffer)( |
| 528 | OMX_IN OMX_HANDLETYPE hComponent, |
| 529 | OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); |
| 530 | |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 531 | /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 532 | specification for details on the FillThisBuffer method. |
| 533 | @ingroup buf |
| 534 | */ |
| 535 | OMX_ERRORTYPE (*FillThisBuffer)( |
| 536 | OMX_IN OMX_HANDLETYPE hComponent, |
| 537 | OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); |
| 538 | |
| 539 | /** The SetCallbacks method is used by the core to specify the callback |
| 540 | structure from the application to the component. This is a blocking |
| 541 | call. The component will return from this call within 5 msec. |
| 542 | @param [in] hComponent |
| 543 | Handle of the component to be accessed. This is the component |
| 544 | handle returned by the call to the GetHandle function. |
| 545 | @param [in] pCallbacks |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 546 | pointer to an OMX_CALLBACKTYPE structure used to provide the |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 547 | callback information to the component |
| 548 | @param [in] pAppData |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 549 | pointer to an application defined value. It is anticipated that |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 550 | the application will pass a pointer to a data structure or a "this |
| 551 | pointer" in this area to allow the callback (in the application) |
| 552 | to determine the context of the call |
| 553 | @return OMX_ERRORTYPE |
| 554 | If the command successfully executes, the return code will be |
| 555 | OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. |
| 556 | */ |
| 557 | OMX_ERRORTYPE (*SetCallbacks)( |
| 558 | OMX_IN OMX_HANDLETYPE hComponent, |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 559 | OMX_IN OMX_CALLBACKTYPE* pCallbacks, |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 560 | OMX_IN OMX_PTR pAppData); |
| 561 | |
| 562 | /** ComponentDeInit method is used to deinitialize the component |
| 563 | providing a means to free any resources allocated at component |
| 564 | initialization. NOTE: After this call the component handle is |
| 565 | not valid for further use. |
| 566 | @param [in] hComponent |
| 567 | Handle of the component to be accessed. This is the component |
| 568 | handle returned by the call to the GetHandle function. |
| 569 | @return OMX_ERRORTYPE |
| 570 | If the command successfully executes, the return code will be |
| 571 | OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. |
| 572 | */ |
| 573 | OMX_ERRORTYPE (*ComponentDeInit)( |
| 574 | OMX_IN OMX_HANDLETYPE hComponent); |
| 575 | |
| 576 | /** @ingroup buf */ |
| 577 | OMX_ERRORTYPE (*UseEGLImage)( |
| 578 | OMX_IN OMX_HANDLETYPE hComponent, |
| 579 | OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, |
| 580 | OMX_IN OMX_U32 nPortIndex, |
| 581 | OMX_IN OMX_PTR pAppPrivate, |
| 582 | OMX_IN void* eglImage); |
| 583 | |
| 584 | OMX_ERRORTYPE (*ComponentRoleEnum)( |
| 585 | OMX_IN OMX_HANDLETYPE hComponent, |
| Lajos Molnar | a1ae5a4 | 2014-11-06 17:05:46 -0800 | [diff] [blame] | 586 | OMX_OUT OMX_U8 *cRole, |
| 587 | OMX_IN OMX_U32 nIndex); |
| James Dong | 334de52 | 2012-03-12 12:47:14 -0700 | [diff] [blame] | 588 | |
| 589 | } OMX_COMPONENTTYPE; |
| 590 | |
| 591 | #ifdef __cplusplus |
| 592 | } |
| 593 | #endif /* __cplusplus */ |
| 594 | |
| 595 | #endif |
| 596 | /* File EOF */ |