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 /** 19 * Copyright (c) 2008 The Khronos Group Inc. 20 * 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 27 * to the following conditions: 28 * The above copyright notice and this permission notice shall be included 29 * in all copies or substantial portions of the Software. 30 * 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 37 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 38 * 39 */ 40 41 /** 42 * @file OMX_IVCommon.h - OpenMax IL version 1.1.2 43 * The structures needed by Video and Image components to exchange 44 * parameters and configuration data with the components. 45 */ 46 #ifndef OMX_IVCommon_h 47 #define OMX_IVCommon_h 48 49 #ifdef __cplusplus 50 extern "C" { 51 #endif /* __cplusplus */ 52 53 /** 54 * Each OMX header must include all required header files to allow the header 55 * to compile without errors. The includes below are required for this header 56 * file to compile successfully 57 */ 58 59 #include <OMX_Core.h> 60 61 /** @defgroup iv OpenMAX IL Imaging and Video Domain 62 * Common structures for OpenMAX IL Imaging and Video domains 63 * @{ 64 */ 65 66 67 /** 68 * Enumeration defining possible uncompressed image/video formats. 69 * 70 * ENUMS: 71 * Unused : Placeholder value when format is N/A 72 * Monochrome : black and white 73 * 8bitRGB332 : Red 7:5, Green 4:2, Blue 1:0 74 * 12bitRGB444 : Red 11:8, Green 7:4, Blue 3:0 75 * 16bitARGB4444 : Alpha 15:12, Red 11:8, Green 7:4, Blue 3:0 76 * 16bitARGB1555 : Alpha 15, Red 14:10, Green 9:5, Blue 4:0 77 * 16bitRGB565 : Red 15:11, Green 10:5, Blue 4:0 78 * 16bitBGR565 : Blue 15:11, Green 10:5, Red 4:0 79 * 18bitRGB666 : Red 17:12, Green 11:6, Blue 5:0 80 * 18bitARGB1665 : Alpha 17, Red 16:11, Green 10:5, Blue 4:0 81 * 19bitARGB1666 : Alpha 18, Red 17:12, Green 11:6, Blue 5:0 82 * 24bitRGB888 : Red 24:16, Green 15:8, Blue 7:0 83 * 24bitBGR888 : Blue 24:16, Green 15:8, Red 7:0 84 * 24bitARGB1887 : Alpha 23, Red 22:15, Green 14:7, Blue 6:0 85 * 25bitARGB1888 : Alpha 24, Red 23:16, Green 15:8, Blue 7:0 86 * 32bitBGRA8888 : Blue 31:24, Green 23:16, Red 15:8, Alpha 7:0 87 * 32bitARGB8888 : Alpha 31:24, Red 23:16, Green 15:8, Blue 7:0 88 * YUV411Planar : U,Y are subsampled by a factor of 4 horizontally 89 * YUV411PackedPlanar : packed per payload in planar slices 90 * YUV420Planar : Three arrays Y,U,V. 91 * YUV420PackedPlanar : packed per payload in planar slices 92 * YUV420SemiPlanar : Two arrays, one is all Y, the other is U and V 93 * YUV422Planar : Three arrays Y,U,V. 94 * YUV422PackedPlanar : packed per payload in planar slices 95 * YUV422SemiPlanar : Two arrays, one is all Y, the other is U and V 96 * YCbYCr : Organized as 16bit YUYV (i.e. YCbYCr) 97 * YCrYCb : Organized as 16bit YVYU (i.e. YCrYCb) 98 * CbYCrY : Organized as 16bit UYVY (i.e. CbYCrY) 99 * CrYCbY : Organized as 16bit VYUY (i.e. CrYCbY) 100 * YUV444Interleaved : Each pixel contains equal parts YUV 101 * RawBayer8bit : SMIA camera output format 102 * RawBayer10bit : SMIA camera output format 103 * RawBayer8bitcompressed : SMIA camera output format 104 */ 105 typedef enum OMX_COLOR_FORMATTYPE { 106 OMX_COLOR_FormatUnused, 107 OMX_COLOR_FormatMonochrome, 108 OMX_COLOR_Format8bitRGB332, 109 OMX_COLOR_Format12bitRGB444, 110 OMX_COLOR_Format16bitARGB4444, 111 OMX_COLOR_Format16bitARGB1555, 112 OMX_COLOR_Format16bitRGB565, 113 OMX_COLOR_Format16bitBGR565, 114 OMX_COLOR_Format18bitRGB666, 115 OMX_COLOR_Format18bitARGB1665, 116 OMX_COLOR_Format19bitARGB1666, 117 OMX_COLOR_Format24bitRGB888, 118 OMX_COLOR_Format24bitBGR888, 119 OMX_COLOR_Format24bitARGB1887, 120 OMX_COLOR_Format25bitARGB1888, 121 OMX_COLOR_Format32bitBGRA8888, 122 OMX_COLOR_Format32bitARGB8888, 123 OMX_COLOR_FormatYUV411Planar, 124 OMX_COLOR_FormatYUV411PackedPlanar, 125 OMX_COLOR_FormatYUV420Planar, 126 OMX_COLOR_FormatYUV420PackedPlanar, 127 OMX_COLOR_FormatYUV420SemiPlanar, 128 OMX_COLOR_FormatYUV422Planar, 129 OMX_COLOR_FormatYUV422PackedPlanar, 130 OMX_COLOR_FormatYUV422SemiPlanar, 131 OMX_COLOR_FormatYCbYCr, 132 OMX_COLOR_FormatYCrYCb, 133 OMX_COLOR_FormatCbYCrY, 134 OMX_COLOR_FormatCrYCbY, 135 OMX_COLOR_FormatYUV444Interleaved, 136 OMX_COLOR_FormatRawBayer8bit, 137 OMX_COLOR_FormatRawBayer10bit, 138 OMX_COLOR_FormatRawBayer8bitcompressed, 139 OMX_COLOR_FormatL2, 140 OMX_COLOR_FormatL4, 141 OMX_COLOR_FormatL8, 142 OMX_COLOR_FormatL16, 143 OMX_COLOR_FormatL24, 144 OMX_COLOR_FormatL32, 145 OMX_COLOR_FormatYUV420PackedSemiPlanar, 146 OMX_COLOR_FormatYUV422PackedSemiPlanar, 147 OMX_COLOR_Format18BitBGR666, 148 OMX_COLOR_Format24BitARGB6666, 149 OMX_COLOR_Format24BitABGR6666, 150 OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 151 OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 152 /**<Reserved android opaque colorformat. Tells the encoder that 153 * the actual colorformat will be relayed by the 154 * Gralloc Buffers. 155 * FIXME: In the process of reserving some enum values for 156 * Android-specific OMX IL colorformats. Change this enum to 157 * an acceptable range once that is done. 158 * */ 159 OMX_COLOR_FormatAndroidOpaque = 0x7F000789, 160 OMX_COLOR_Format32BitRGBA8888 = 0x7F00A000, 161 /** Flexible 8-bit YUV format. Codec should report this format 162 * as being supported if it supports any YUV420 packed planar 163 * or semiplanar formats. When port is set to use this format, 164 * codec can substitute any YUV420 packed planar or semiplanar 165 * format for it. */ 166 OMX_COLOR_FormatYUV420Flexible = 0x7F420888, 167 168 // 10-bit or 12-bit YUV format, LSB-justified (0's on higher bits) 169 OMX_COLOR_FormatYUV420Planar16 = 0x7F42016B, 170 171 // Packed 10-bit YUV444 representation that includes 2 bits of alpha. Each pixel is 172 // 32-bit. Bits 0-9 contain the U sample, bits 10-19 contain the Y sample, 173 // bits 20-29 contain the V sample, and bits 30-31 contain the alpha value. 174 OMX_COLOR_FormatYUV444Y410 = 0x7F444AAA, 175 176 OMX_TI_COLOR_FormatYUV420PackedSemiPlanar = 0x7F000100, 177 OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00, 178 OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka = 0x7FA30C03, 179 OMX_SEC_COLOR_FormatNV12Tiled = 0x7FC00002, 180 OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar32m = 0x7FA30C04, 181 OMX_COLOR_FormatMax = 0x7FFFFFFF 182 } OMX_COLOR_FORMATTYPE; 183 184 185 /** 186 * Defines the matrix for conversion from RGB to YUV or vice versa. 187 * iColorMatrix should be initialized with the fixed point values 188 * used in converting between formats. 189 */ 190 typedef struct OMX_CONFIG_COLORCONVERSIONTYPE { 191 OMX_U32 nSize; /**< Size of the structure in bytes */ 192 OMX_VERSIONTYPE nVersion; /**< OMX specification version info */ 193 OMX_U32 nPortIndex; /**< Port that this struct applies to */ 194 OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */ 195 OMX_S32 xColorOffset[4]; /**< Stored in signed Q16 format */ 196 }OMX_CONFIG_COLORCONVERSIONTYPE; 197 198 199 /** 200 * Structure defining percent to scale each frame dimension. For example: 201 * To make the width 50% larger, use fWidth = 1.5 and to make the width 202 * 1/2 the original size, use fWidth = 0.5 203 */ 204 typedef struct OMX_CONFIG_SCALEFACTORTYPE { 205 OMX_U32 nSize; /**< Size of the structure in bytes */ 206 OMX_VERSIONTYPE nVersion; /**< OMX specification version info */ 207 OMX_U32 nPortIndex; /**< Port that this struct applies to */ 208 OMX_S32 xWidth; /**< Fixed point value stored as Q16 */ 209 OMX_S32 xHeight; /**< Fixed point value stored as Q16 */ 210 }OMX_CONFIG_SCALEFACTORTYPE; 211 212 213 /** 214 * Enumeration of possible image filter types 215 */ 216 typedef enum OMX_IMAGEFILTERTYPE { 217 OMX_ImageFilterNone, 218 OMX_ImageFilterNoise, 219 OMX_ImageFilterEmboss, 220 OMX_ImageFilterNegative, 221 OMX_ImageFilterSketch, 222 OMX_ImageFilterOilPaint, 223 OMX_ImageFilterHatch, 224 OMX_ImageFilterGpen, 225 OMX_ImageFilterAntialias, 226 OMX_ImageFilterDeRing, 227 OMX_ImageFilterSolarize, 228 OMX_ImageFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 229 OMX_ImageFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 230 OMX_ImageFilterMax = 0x7FFFFFFF 231 } OMX_IMAGEFILTERTYPE; 232 233 234 /** 235 * Image filter configuration 236 * 237 * STRUCT MEMBERS: 238 * nSize : Size of the structure in bytes 239 * nVersion : OMX specification version information 240 * nPortIndex : Port that this structure applies to 241 * eImageFilter : Image filter type enumeration 242 */ 243 typedef struct OMX_CONFIG_IMAGEFILTERTYPE { 244 OMX_U32 nSize; 245 OMX_VERSIONTYPE nVersion; 246 OMX_U32 nPortIndex; 247 OMX_IMAGEFILTERTYPE eImageFilter; 248 } OMX_CONFIG_IMAGEFILTERTYPE; 249 250 251 /** 252 * Customized U and V for color enhancement 253 * 254 * STRUCT MEMBERS: 255 * nSize : Size of the structure in bytes 256 * nVersion : OMX specification version information 257 * nPortIndex : Port that this structure applies to 258 * bColorEnhancement : Enable/disable color enhancement 259 * nCustomizedU : Practical values: 16-240, range: 0-255, value set for 260 * U component 261 * nCustomizedV : Practical values: 16-240, range: 0-255, value set for 262 * V component 263 */ 264 typedef struct OMX_CONFIG_COLORENHANCEMENTTYPE { 265 OMX_U32 nSize; 266 OMX_VERSIONTYPE nVersion; 267 OMX_U32 nPortIndex; 268 OMX_BOOL bColorEnhancement; 269 OMX_U8 nCustomizedU; 270 OMX_U8 nCustomizedV; 271 } OMX_CONFIG_COLORENHANCEMENTTYPE; 272 273 274 /** 275 * Define color key and color key mask 276 * 277 * STRUCT MEMBERS: 278 * nSize : Size of the structure in bytes 279 * nVersion : OMX specification version information 280 * nPortIndex : Port that this structure applies to 281 * nARGBColor : 32bit Alpha, Red, Green, Blue Color 282 * nARGBMask : 32bit Mask for Alpha, Red, Green, Blue channels 283 */ 284 typedef struct OMX_CONFIG_COLORKEYTYPE { 285 OMX_U32 nSize; 286 OMX_VERSIONTYPE nVersion; 287 OMX_U32 nPortIndex; 288 OMX_U32 nARGBColor; 289 OMX_U32 nARGBMask; 290 } OMX_CONFIG_COLORKEYTYPE; 291 292 293 /** 294 * List of color blend types for pre/post processing 295 * 296 * ENUMS: 297 * None : No color blending present 298 * AlphaConstant : Function is (alpha_constant * src) + 299 * (1 - alpha_constant) * dst) 300 * AlphaPerPixel : Function is (alpha * src) + (1 - alpha) * dst) 301 * Alternate : Function is alternating pixels from src and dst 302 * And : Function is (src & dst) 303 * Or : Function is (src | dst) 304 * Invert : Function is ~src 305 */ 306 typedef enum OMX_COLORBLENDTYPE { 307 OMX_ColorBlendNone, 308 OMX_ColorBlendAlphaConstant, 309 OMX_ColorBlendAlphaPerPixel, 310 OMX_ColorBlendAlternate, 311 OMX_ColorBlendAnd, 312 OMX_ColorBlendOr, 313 OMX_ColorBlendInvert, 314 OMX_ColorBlendKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 315 OMX_ColorBlendVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 316 OMX_ColorBlendMax = 0x7FFFFFFF 317 } OMX_COLORBLENDTYPE; 318 319 320 /** 321 * Color blend configuration 322 * 323 * STRUCT MEMBERS: 324 * nSize : Size of the structure in bytes 325 * nVersion : OMX specification version information 326 * nPortIndex : Port that this structure applies to 327 * nRGBAlphaConstant : Constant global alpha values when global alpha is used 328 * eColorBlend : Color blend type enumeration 329 */ 330 typedef struct OMX_CONFIG_COLORBLENDTYPE { 331 OMX_U32 nSize; 332 OMX_VERSIONTYPE nVersion; 333 OMX_U32 nPortIndex; 334 OMX_U32 nRGBAlphaConstant; 335 OMX_COLORBLENDTYPE eColorBlend; 336 } OMX_CONFIG_COLORBLENDTYPE; 337 338 339 /** 340 * Hold frame dimension 341 * 342 * STRUCT MEMBERS: 343 * nSize : Size of the structure in bytes 344 * nVersion : OMX specification version information 345 * nPortIndex : Port that this structure applies to 346 * nWidth : Frame width in pixels 347 * nHeight : Frame height in pixels 348 */ 349 typedef struct OMX_FRAMESIZETYPE { 350 OMX_U32 nSize; 351 OMX_VERSIONTYPE nVersion; 352 OMX_U32 nPortIndex; 353 OMX_U32 nWidth; 354 OMX_U32 nHeight; 355 } OMX_FRAMESIZETYPE; 356 357 358 /** 359 * Rotation configuration 360 * 361 * STRUCT MEMBERS: 362 * nSize : Size of the structure in bytes 363 * nVersion : OMX specification version information 364 * nPortIndex : Port that this structure applies to 365 * nRotation : +/- integer rotation value 366 */ 367 typedef struct OMX_CONFIG_ROTATIONTYPE { 368 OMX_U32 nSize; 369 OMX_VERSIONTYPE nVersion; 370 OMX_U32 nPortIndex; 371 OMX_S32 nRotation; 372 } OMX_CONFIG_ROTATIONTYPE; 373 374 375 /** 376 * Possible mirroring directions for pre/post processing 377 * 378 * ENUMS: 379 * None : No mirroring 380 * Vertical : Vertical mirroring, flip on X axis 381 * Horizontal : Horizontal mirroring, flip on Y axis 382 * Both : Both vertical and horizontal mirroring 383 */ 384 typedef enum OMX_MIRRORTYPE { 385 OMX_MirrorNone = 0, 386 OMX_MirrorVertical, 387 OMX_MirrorHorizontal, 388 OMX_MirrorBoth, 389 OMX_MirrorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 390 OMX_MirrorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 391 OMX_MirrorMax = 0x7FFFFFFF 392 } OMX_MIRRORTYPE; 393 394 395 /** 396 * Mirroring configuration 397 * 398 * STRUCT MEMBERS: 399 * nSize : Size of the structure in bytes 400 * nVersion : OMX specification version information 401 * nPortIndex : Port that this structure applies to 402 * eMirror : Mirror type enumeration 403 */ 404 typedef struct OMX_CONFIG_MIRRORTYPE { 405 OMX_U32 nSize; 406 OMX_VERSIONTYPE nVersion; 407 OMX_U32 nPortIndex; 408 OMX_MIRRORTYPE eMirror; 409 } OMX_CONFIG_MIRRORTYPE; 410 411 412 /** 413 * Position information only 414 * 415 * STRUCT MEMBERS: 416 * nSize : Size of the structure in bytes 417 * nVersion : OMX specification version information 418 * nPortIndex : Port that this structure applies to 419 * nX : X coordinate for the point 420 * nY : Y coordinate for the point 421 */ 422 typedef struct OMX_CONFIG_POINTTYPE { 423 OMX_U32 nSize; 424 OMX_VERSIONTYPE nVersion; 425 OMX_U32 nPortIndex; 426 OMX_S32 nX; 427 OMX_S32 nY; 428 } OMX_CONFIG_POINTTYPE; 429 430 431 /** 432 * Frame size plus position 433 * 434 * STRUCT MEMBERS: 435 * nSize : Size of the structure in bytes 436 * nVersion : OMX specification version information 437 * nPortIndex : Port that this structure applies to 438 * nLeft : X Coordinate of the top left corner of the rectangle 439 * nTop : Y Coordinate of the top left corner of the rectangle 440 * nWidth : Width of the rectangle 441 * nHeight : Height of the rectangle 442 */ 443 typedef struct OMX_CONFIG_RECTTYPE { 444 OMX_U32 nSize; 445 OMX_VERSIONTYPE nVersion; 446 OMX_U32 nPortIndex; 447 OMX_S32 nLeft; 448 OMX_S32 nTop; 449 OMX_U32 nWidth; 450 OMX_U32 nHeight; 451 } OMX_CONFIG_RECTTYPE; 452 453 454 /** 455 * Deblocking state; it is required to be set up before starting the codec 456 * 457 * STRUCT MEMBERS: 458 * nSize : Size of the structure in bytes 459 * nVersion : OMX specification version information 460 * nPortIndex : Port that this structure applies to 461 * bDeblocking : Enable/disable deblocking mode 462 */ 463 typedef struct OMX_PARAM_DEBLOCKINGTYPE { 464 OMX_U32 nSize; 465 OMX_VERSIONTYPE nVersion; 466 OMX_U32 nPortIndex; 467 OMX_BOOL bDeblocking; 468 } OMX_PARAM_DEBLOCKINGTYPE; 469 470 471 /** 472 * Stabilization state 473 * 474 * STRUCT MEMBERS: 475 * nSize : Size of the structure in bytes 476 * nVersion : OMX specification version information 477 * nPortIndex : Port that this structure applies to 478 * bStab : Enable/disable frame stabilization state 479 */ 480 typedef struct OMX_CONFIG_FRAMESTABTYPE { 481 OMX_U32 nSize; 482 OMX_VERSIONTYPE nVersion; 483 OMX_U32 nPortIndex; 484 OMX_BOOL bStab; 485 } OMX_CONFIG_FRAMESTABTYPE; 486 487 488 /** 489 * White Balance control type 490 * 491 * STRUCT MEMBERS: 492 * SunLight : Referenced in JSR-234 493 * Flash : Optimal for device's integrated flash 494 */ 495 typedef enum OMX_WHITEBALCONTROLTYPE { 496 OMX_WhiteBalControlOff = 0, 497 OMX_WhiteBalControlAuto, 498 OMX_WhiteBalControlSunLight, 499 OMX_WhiteBalControlCloudy, 500 OMX_WhiteBalControlShade, 501 OMX_WhiteBalControlTungsten, 502 OMX_WhiteBalControlFluorescent, 503 OMX_WhiteBalControlIncandescent, 504 OMX_WhiteBalControlFlash, 505 OMX_WhiteBalControlHorizon, 506 OMX_WhiteBalControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 507 OMX_WhiteBalControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 508 OMX_WhiteBalControlMax = 0x7FFFFFFF 509 } OMX_WHITEBALCONTROLTYPE; 510 511 512 /** 513 * White Balance control configuration 514 * 515 * STRUCT MEMBERS: 516 * nSize : Size of the structure in bytes 517 * nVersion : OMX specification version information 518 * nPortIndex : Port that this structure applies to 519 * eWhiteBalControl : White balance enumeration 520 */ 521 typedef struct OMX_CONFIG_WHITEBALCONTROLTYPE { 522 OMX_U32 nSize; 523 OMX_VERSIONTYPE nVersion; 524 OMX_U32 nPortIndex; 525 OMX_WHITEBALCONTROLTYPE eWhiteBalControl; 526 } OMX_CONFIG_WHITEBALCONTROLTYPE; 527 528 529 /** 530 * Exposure control type 531 */ 532 typedef enum OMX_EXPOSURECONTROLTYPE { 533 OMX_ExposureControlOff = 0, 534 OMX_ExposureControlAuto, 535 OMX_ExposureControlNight, 536 OMX_ExposureControlBackLight, 537 OMX_ExposureControlSpotLight, 538 OMX_ExposureControlSports, 539 OMX_ExposureControlSnow, 540 OMX_ExposureControlBeach, 541 OMX_ExposureControlLargeAperture, 542 OMX_ExposureControlSmallApperture, 543 OMX_ExposureControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 544 OMX_ExposureControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 545 OMX_ExposureControlMax = 0x7FFFFFFF 546 } OMX_EXPOSURECONTROLTYPE; 547 548 549 /** 550 * White Balance control configuration 551 * 552 * STRUCT MEMBERS: 553 * nSize : Size of the structure in bytes 554 * nVersion : OMX specification version information 555 * nPortIndex : Port that this structure applies to 556 * eExposureControl : Exposure control enumeration 557 */ 558 typedef struct OMX_CONFIG_EXPOSURECONTROLTYPE { 559 OMX_U32 nSize; 560 OMX_VERSIONTYPE nVersion; 561 OMX_U32 nPortIndex; 562 OMX_EXPOSURECONTROLTYPE eExposureControl; 563 } OMX_CONFIG_EXPOSURECONTROLTYPE; 564 565 566 /** 567 * Defines sensor supported mode. 568 * 569 * STRUCT MEMBERS: 570 * nSize : Size of the structure in bytes 571 * nVersion : OMX specification version information 572 * nPortIndex : Port that this structure applies to 573 * nFrameRate : Single shot mode is indicated by a 0 574 * bOneShot : Enable for single shot, disable for streaming 575 * sFrameSize : Framesize 576 */ 577 typedef struct OMX_PARAM_SENSORMODETYPE { 578 OMX_U32 nSize; 579 OMX_VERSIONTYPE nVersion; 580 OMX_U32 nPortIndex; 581 OMX_U32 nFrameRate; 582 OMX_BOOL bOneShot; 583 OMX_FRAMESIZETYPE sFrameSize; 584 } OMX_PARAM_SENSORMODETYPE; 585 586 587 /** 588 * Defines contrast level 589 * 590 * STRUCT MEMBERS: 591 * nSize : Size of the structure in bytes 592 * nVersion : OMX specification version information 593 * nPortIndex : Port that this structure applies to 594 * nContrast : Values allowed for contrast -100 to 100, zero means no change 595 */ 596 typedef struct OMX_CONFIG_CONTRASTTYPE { 597 OMX_U32 nSize; 598 OMX_VERSIONTYPE nVersion; 599 OMX_U32 nPortIndex; 600 OMX_S32 nContrast; 601 } OMX_CONFIG_CONTRASTTYPE; 602 603 604 /** 605 * Defines brightness level 606 * 607 * STRUCT MEMBERS: 608 * nSize : Size of the structure in bytes 609 * nVersion : OMX specification version information 610 * nPortIndex : Port that this structure applies to 611 * nBrightness : 0-100% 612 */ 613 typedef struct OMX_CONFIG_BRIGHTNESSTYPE { 614 OMX_U32 nSize; 615 OMX_VERSIONTYPE nVersion; 616 OMX_U32 nPortIndex; 617 OMX_U32 nBrightness; 618 } OMX_CONFIG_BRIGHTNESSTYPE; 619 620 621 /** 622 * Defines backlight level configuration for a video sink, e.g. LCD panel 623 * 624 * STRUCT MEMBERS: 625 * nSize : Size of the structure in bytes 626 * nVersion : OMX specification version information 627 * nPortIndex : Port that this structure applies to 628 * nBacklight : Values allowed for backlight 0-100% 629 * nTimeout : Number of milliseconds before backlight automatically turns 630 * off. A value of 0x0 disables backight timeout 631 */ 632 typedef struct OMX_CONFIG_BACKLIGHTTYPE { 633 OMX_U32 nSize; 634 OMX_VERSIONTYPE nVersion; 635 OMX_U32 nPortIndex; 636 OMX_U32 nBacklight; 637 OMX_U32 nTimeout; 638 } OMX_CONFIG_BACKLIGHTTYPE; 639 640 641 /** 642 * Defines setting for Gamma 643 * 644 * STRUCT MEMBERS: 645 * nSize : Size of the structure in bytes 646 * nVersion : OMX specification version information 647 * nPortIndex : Port that this structure applies to 648 * nGamma : Values allowed for gamma -100 to 100, zero means no change 649 */ 650 typedef struct OMX_CONFIG_GAMMATYPE { 651 OMX_U32 nSize; 652 OMX_VERSIONTYPE nVersion; 653 OMX_U32 nPortIndex; 654 OMX_S32 nGamma; 655 } OMX_CONFIG_GAMMATYPE; 656 657 658 /** 659 * Define for setting saturation 660 * 661 * STRUCT MEMBERS: 662 * nSize : Size of the structure in bytes 663 * nVersion : OMX specification version information 664 * nPortIndex : Port that this structure applies to 665 * nSaturation : Values allowed for saturation -100 to 100, zero means 666 * no change 667 */ 668 typedef struct OMX_CONFIG_SATURATIONTYPE { 669 OMX_U32 nSize; 670 OMX_VERSIONTYPE nVersion; 671 OMX_U32 nPortIndex; 672 OMX_S32 nSaturation; 673 } OMX_CONFIG_SATURATIONTYPE; 674 675 676 /** 677 * Define for setting Lightness 678 * 679 * STRUCT MEMBERS: 680 * nSize : Size of the structure in bytes 681 * nVersion : OMX specification version information 682 * nPortIndex : Port that this structure applies to 683 * nLightness : Values allowed for lightness -100 to 100, zero means no 684 * change 685 */ 686 typedef struct OMX_CONFIG_LIGHTNESSTYPE { 687 OMX_U32 nSize; 688 OMX_VERSIONTYPE nVersion; 689 OMX_U32 nPortIndex; 690 OMX_S32 nLightness; 691 } OMX_CONFIG_LIGHTNESSTYPE; 692 693 694 /** 695 * Plane blend configuration 696 * 697 * STRUCT MEMBERS: 698 * nSize : Size of the structure in bytes 699 * nVersion : OMX specification version information 700 * nPortIndex : Index of input port associated with the plane. 701 * nDepth : Depth of the plane in relation to the screen. Higher 702 * numbered depths are "behind" lower number depths. 703 * This number defaults to the Port Index number. 704 * nAlpha : Transparency blending component for the entire plane. 705 * See blending modes for more detail. 706 */ 707 typedef struct OMX_CONFIG_PLANEBLENDTYPE { 708 OMX_U32 nSize; 709 OMX_VERSIONTYPE nVersion; 710 OMX_U32 nPortIndex; 711 OMX_U32 nDepth; 712 OMX_U32 nAlpha; 713 } OMX_CONFIG_PLANEBLENDTYPE; 714 715 716 /** 717 * Define interlace type 718 * 719 * STRUCT MEMBERS: 720 * nSize : Size of the structure in bytes 721 * nVersion : OMX specification version information 722 * nPortIndex : Port that this structure applies to 723 * bEnable : Enable control variable for this functionality 724 * (see below) 725 * nInterleavePortIndex : Index of input or output port associated with 726 * the interleaved plane. 727 * pPlanarPortIndexes[4] : Index of input or output planar ports. 728 */ 729 typedef struct OMX_PARAM_INTERLEAVETYPE { 730 OMX_U32 nSize; 731 OMX_VERSIONTYPE nVersion; 732 OMX_U32 nPortIndex; 733 OMX_BOOL bEnable; 734 OMX_U32 nInterleavePortIndex; 735 } OMX_PARAM_INTERLEAVETYPE; 736 737 738 /** 739 * Defines the picture effect used for an input picture 740 */ 741 typedef enum OMX_TRANSITIONEFFECTTYPE { 742 OMX_EffectNone, 743 OMX_EffectFadeFromBlack, 744 OMX_EffectFadeToBlack, 745 OMX_EffectUnspecifiedThroughConstantColor, 746 OMX_EffectDissolve, 747 OMX_EffectWipe, 748 OMX_EffectUnspecifiedMixOfTwoScenes, 749 OMX_EffectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 750 OMX_EffectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 751 OMX_EffectMax = 0x7FFFFFFF 752 } OMX_TRANSITIONEFFECTTYPE; 753 754 755 /** 756 * Structure used to configure current transition effect 757 * 758 * STRUCT MEMBERS: 759 * nSize : Size of the structure in bytes 760 * nVersion : OMX specification version information 761 * nPortIndex : Port that this structure applies to 762 * eEffect : Effect to enable 763 */ 764 typedef struct OMX_CONFIG_TRANSITIONEFFECTTYPE { 765 OMX_U32 nSize; 766 OMX_VERSIONTYPE nVersion; 767 OMX_U32 nPortIndex; 768 OMX_TRANSITIONEFFECTTYPE eEffect; 769 } OMX_CONFIG_TRANSITIONEFFECTTYPE; 770 771 772 /** 773 * Defines possible data unit types for encoded video data. The data unit 774 * types are used both for encoded video input for playback as well as 775 * encoded video output from recording. 776 */ 777 typedef enum OMX_DATAUNITTYPE { 778 OMX_DataUnitCodedPicture, 779 OMX_DataUnitVideoSegment, 780 OMX_DataUnitSeveralSegments, 781 OMX_DataUnitArbitraryStreamSection, 782 OMX_DataUnitKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 783 OMX_DataUnitVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 784 OMX_DataUnitMax = 0x7FFFFFFF 785 } OMX_DATAUNITTYPE; 786 787 788 /** 789 * Defines possible encapsulation types for coded video data unit. The 790 * encapsulation information is used both for encoded video input for 791 * playback as well as encoded video output from recording. 792 */ 793 typedef enum OMX_DATAUNITENCAPSULATIONTYPE { 794 OMX_DataEncapsulationElementaryStream, 795 OMX_DataEncapsulationGenericPayload, 796 OMX_DataEncapsulationRtpPayload, 797 OMX_DataEncapsulationKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 798 OMX_DataEncapsulationVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 799 OMX_DataEncapsulationMax = 0x7FFFFFFF 800 } OMX_DATAUNITENCAPSULATIONTYPE; 801 802 803 /** 804 * Structure used to configure the type of being decoded/encoded 805 */ 806 typedef struct OMX_PARAM_DATAUNITTYPE { 807 OMX_U32 nSize; /**< Size of the structure in bytes */ 808 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 809 OMX_U32 nPortIndex; /**< Port that this structure applies to */ 810 OMX_DATAUNITTYPE eUnitType; 811 OMX_DATAUNITENCAPSULATIONTYPE eEncapsulationType; 812 } OMX_PARAM_DATAUNITTYPE; 813 814 815 /** 816 * Defines dither types 817 */ 818 typedef enum OMX_DITHERTYPE { 819 OMX_DitherNone, 820 OMX_DitherOrdered, 821 OMX_DitherErrorDiffusion, 822 OMX_DitherOther, 823 OMX_DitherKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 824 OMX_DitherVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 825 OMX_DitherMax = 0x7FFFFFFF 826 } OMX_DITHERTYPE; 827 828 829 /** 830 * Structure used to configure current type of dithering 831 */ 832 typedef struct OMX_CONFIG_DITHERTYPE { 833 OMX_U32 nSize; /**< Size of the structure in bytes */ 834 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 835 OMX_U32 nPortIndex; /**< Port that this structure applies to */ 836 OMX_DITHERTYPE eDither; /**< Type of dithering to use */ 837 } OMX_CONFIG_DITHERTYPE; 838 839 typedef struct OMX_CONFIG_CAPTUREMODETYPE { 840 OMX_U32 nSize; 841 OMX_VERSIONTYPE nVersion; 842 OMX_U32 nPortIndex; /**< Port that this structure applies to */ 843 OMX_BOOL bContinuous; /**< If true then ignore frame rate and emit capture 844 * data as fast as possible (otherwise obey port's frame rate). */ 845 OMX_BOOL bFrameLimited; /**< If true then terminate capture after the port emits the 846 * specified number of frames (otherwise the port does not 847 * terminate the capture until instructed to do so by the client). 848 * Even if set, the client may manually terminate the capture prior 849 * to reaching the limit. */ 850 OMX_U32 nFrameLimit; /**< Limit on number of frames emitted during a capture (only 851 * valid if bFrameLimited is set). */ 852 } OMX_CONFIG_CAPTUREMODETYPE; 853 854 typedef enum OMX_METERINGTYPE { 855 856 OMX_MeteringModeAverage, /**< Center-weighted average metering. */ 857 OMX_MeteringModeSpot, /**< Spot (partial) metering. */ 858 OMX_MeteringModeMatrix, /**< Matrix or evaluative metering. */ 859 860 OMX_MeteringKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 861 OMX_MeteringVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 862 OMX_EVModeMax = 0x7fffffff 863 } OMX_METERINGTYPE; 864 865 typedef struct OMX_CONFIG_EXPOSUREVALUETYPE { 866 OMX_U32 nSize; 867 OMX_VERSIONTYPE nVersion; 868 OMX_U32 nPortIndex; 869 OMX_METERINGTYPE eMetering; 870 OMX_S32 xEVCompensation; /**< Fixed point value stored as Q16 */ 871 OMX_U32 nApertureFNumber; /**< e.g. nApertureFNumber = 2 implies "f/2" - Q16 format */ 872 OMX_BOOL bAutoAperture; /**< Whether aperture number is defined automatically */ 873 OMX_U32 nShutterSpeedMsec; /**< Shutterspeed in milliseconds */ 874 OMX_BOOL bAutoShutterSpeed; /**< Whether shutter speed is defined automatically */ 875 OMX_U32 nSensitivity; /**< e.g. nSensitivity = 100 implies "ISO 100" */ 876 OMX_BOOL bAutoSensitivity; /**< Whether sensitivity is defined automatically */ 877 } OMX_CONFIG_EXPOSUREVALUETYPE; 878 879 /** 880 * Focus region configuration 881 * 882 * STRUCT MEMBERS: 883 * nSize : Size of the structure in bytes 884 * nVersion : OMX specification version information 885 * nPortIndex : Port that this structure applies to 886 * bCenter : Use center region as focus region of interest 887 * bLeft : Use left region as focus region of interest 888 * bRight : Use right region as focus region of interest 889 * bTop : Use top region as focus region of interest 890 * bBottom : Use bottom region as focus region of interest 891 * bTopLeft : Use top left region as focus region of interest 892 * bTopRight : Use top right region as focus region of interest 893 * bBottomLeft : Use bottom left region as focus region of interest 894 * bBottomRight : Use bottom right region as focus region of interest 895 */ 896 typedef struct OMX_CONFIG_FOCUSREGIONTYPE { 897 OMX_U32 nSize; 898 OMX_VERSIONTYPE nVersion; 899 OMX_U32 nPortIndex; 900 OMX_BOOL bCenter; 901 OMX_BOOL bLeft; 902 OMX_BOOL bRight; 903 OMX_BOOL bTop; 904 OMX_BOOL bBottom; 905 OMX_BOOL bTopLeft; 906 OMX_BOOL bTopRight; 907 OMX_BOOL bBottomLeft; 908 OMX_BOOL bBottomRight; 909 } OMX_CONFIG_FOCUSREGIONTYPE; 910 911 /** 912 * Focus Status type 913 */ 914 typedef enum OMX_FOCUSSTATUSTYPE { 915 OMX_FocusStatusOff = 0, 916 OMX_FocusStatusRequest, 917 OMX_FocusStatusReached, 918 OMX_FocusStatusUnableToReach, 919 OMX_FocusStatusLost, 920 OMX_FocusStatusKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 921 OMX_FocusStatusVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 922 OMX_FocusStatusMax = 0x7FFFFFFF 923 } OMX_FOCUSSTATUSTYPE; 924 925 /** 926 * Focus status configuration 927 * 928 * STRUCT MEMBERS: 929 * nSize : Size of the structure in bytes 930 * nVersion : OMX specification version information 931 * nPortIndex : Port that this structure applies to 932 * eFocusStatus : Specifies the focus status 933 * bCenterStatus : Use center region as focus region of interest 934 * bLeftStatus : Use left region as focus region of interest 935 * bRightStatus : Use right region as focus region of interest 936 * bTopStatus : Use top region as focus region of interest 937 * bBottomStatus : Use bottom region as focus region of interest 938 * bTopLeftStatus : Use top left region as focus region of interest 939 * bTopRightStatus : Use top right region as focus region of interest 940 * bBottomLeftStatus : Use bottom left region as focus region of interest 941 * bBottomRightStatus : Use bottom right region as focus region of interest 942 */ 943 typedef struct OMX_PARAM_FOCUSSTATUSTYPE { 944 OMX_U32 nSize; 945 OMX_VERSIONTYPE nVersion; 946 OMX_U32 nPortIndex; 947 OMX_FOCUSSTATUSTYPE eFocusStatus; 948 OMX_BOOL bCenterStatus; 949 OMX_BOOL bLeftStatus; 950 OMX_BOOL bRightStatus; 951 OMX_BOOL bTopStatus; 952 OMX_BOOL bBottomStatus; 953 OMX_BOOL bTopLeftStatus; 954 OMX_BOOL bTopRightStatus; 955 OMX_BOOL bBottomLeftStatus; 956 OMX_BOOL bBottomRightStatus; 957 } OMX_PARAM_FOCUSSTATUSTYPE; 958 959 /** @} */ 960 961 #ifdef __cplusplus 962 } 963 #endif /* __cplusplus */ 964 965 #endif 966 /* File EOF */ 967