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 OMX_TI_COLOR_FormatYUV420PackedSemiPlanar = 0x7F000100, 169 OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00, 170 OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka = 0x7FA30C03, 171 OMX_SEC_COLOR_FormatNV12Tiled = 0x7FC00002, 172 OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar32m = 0x7FA30C04, 173 OMX_COLOR_FormatMax = 0x7FFFFFFF 174 } OMX_COLOR_FORMATTYPE; 175 176 177 /** 178 * Defines the matrix for conversion from RGB to YUV or vice versa. 179 * iColorMatrix should be initialized with the fixed point values 180 * used in converting between formats. 181 */ 182 typedef struct OMX_CONFIG_COLORCONVERSIONTYPE { 183 OMX_U32 nSize; /**< Size of the structure in bytes */ 184 OMX_VERSIONTYPE nVersion; /**< OMX specification version info */ 185 OMX_U32 nPortIndex; /**< Port that this struct applies to */ 186 OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */ 187 OMX_S32 xColorOffset[4]; /**< Stored in signed Q16 format */ 188 }OMX_CONFIG_COLORCONVERSIONTYPE; 189 190 191 /** 192 * Structure defining percent to scale each frame dimension. For example: 193 * To make the width 50% larger, use fWidth = 1.5 and to make the width 194 * 1/2 the original size, use fWidth = 0.5 195 */ 196 typedef struct OMX_CONFIG_SCALEFACTORTYPE { 197 OMX_U32 nSize; /**< Size of the structure in bytes */ 198 OMX_VERSIONTYPE nVersion; /**< OMX specification version info */ 199 OMX_U32 nPortIndex; /**< Port that this struct applies to */ 200 OMX_S32 xWidth; /**< Fixed point value stored as Q16 */ 201 OMX_S32 xHeight; /**< Fixed point value stored as Q16 */ 202 }OMX_CONFIG_SCALEFACTORTYPE; 203 204 205 /** 206 * Enumeration of possible image filter types 207 */ 208 typedef enum OMX_IMAGEFILTERTYPE { 209 OMX_ImageFilterNone, 210 OMX_ImageFilterNoise, 211 OMX_ImageFilterEmboss, 212 OMX_ImageFilterNegative, 213 OMX_ImageFilterSketch, 214 OMX_ImageFilterOilPaint, 215 OMX_ImageFilterHatch, 216 OMX_ImageFilterGpen, 217 OMX_ImageFilterAntialias, 218 OMX_ImageFilterDeRing, 219 OMX_ImageFilterSolarize, 220 OMX_ImageFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 221 OMX_ImageFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 222 OMX_ImageFilterMax = 0x7FFFFFFF 223 } OMX_IMAGEFILTERTYPE; 224 225 226 /** 227 * Image filter configuration 228 * 229 * STRUCT MEMBERS: 230 * nSize : Size of the structure in bytes 231 * nVersion : OMX specification version information 232 * nPortIndex : Port that this structure applies to 233 * eImageFilter : Image filter type enumeration 234 */ 235 typedef struct OMX_CONFIG_IMAGEFILTERTYPE { 236 OMX_U32 nSize; 237 OMX_VERSIONTYPE nVersion; 238 OMX_U32 nPortIndex; 239 OMX_IMAGEFILTERTYPE eImageFilter; 240 } OMX_CONFIG_IMAGEFILTERTYPE; 241 242 243 /** 244 * Customized U and V for color enhancement 245 * 246 * STRUCT MEMBERS: 247 * nSize : Size of the structure in bytes 248 * nVersion : OMX specification version information 249 * nPortIndex : Port that this structure applies to 250 * bColorEnhancement : Enable/disable color enhancement 251 * nCustomizedU : Practical values: 16-240, range: 0-255, value set for 252 * U component 253 * nCustomizedV : Practical values: 16-240, range: 0-255, value set for 254 * V component 255 */ 256 typedef struct OMX_CONFIG_COLORENHANCEMENTTYPE { 257 OMX_U32 nSize; 258 OMX_VERSIONTYPE nVersion; 259 OMX_U32 nPortIndex; 260 OMX_BOOL bColorEnhancement; 261 OMX_U8 nCustomizedU; 262 OMX_U8 nCustomizedV; 263 } OMX_CONFIG_COLORENHANCEMENTTYPE; 264 265 266 /** 267 * Define color key and color key mask 268 * 269 * STRUCT MEMBERS: 270 * nSize : Size of the structure in bytes 271 * nVersion : OMX specification version information 272 * nPortIndex : Port that this structure applies to 273 * nARGBColor : 32bit Alpha, Red, Green, Blue Color 274 * nARGBMask : 32bit Mask for Alpha, Red, Green, Blue channels 275 */ 276 typedef struct OMX_CONFIG_COLORKEYTYPE { 277 OMX_U32 nSize; 278 OMX_VERSIONTYPE nVersion; 279 OMX_U32 nPortIndex; 280 OMX_U32 nARGBColor; 281 OMX_U32 nARGBMask; 282 } OMX_CONFIG_COLORKEYTYPE; 283 284 285 /** 286 * List of color blend types for pre/post processing 287 * 288 * ENUMS: 289 * None : No color blending present 290 * AlphaConstant : Function is (alpha_constant * src) + 291 * (1 - alpha_constant) * dst) 292 * AlphaPerPixel : Function is (alpha * src) + (1 - alpha) * dst) 293 * Alternate : Function is alternating pixels from src and dst 294 * And : Function is (src & dst) 295 * Or : Function is (src | dst) 296 * Invert : Function is ~src 297 */ 298 typedef enum OMX_COLORBLENDTYPE { 299 OMX_ColorBlendNone, 300 OMX_ColorBlendAlphaConstant, 301 OMX_ColorBlendAlphaPerPixel, 302 OMX_ColorBlendAlternate, 303 OMX_ColorBlendAnd, 304 OMX_ColorBlendOr, 305 OMX_ColorBlendInvert, 306 OMX_ColorBlendKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 307 OMX_ColorBlendVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 308 OMX_ColorBlendMax = 0x7FFFFFFF 309 } OMX_COLORBLENDTYPE; 310 311 312 /** 313 * Color blend configuration 314 * 315 * STRUCT MEMBERS: 316 * nSize : Size of the structure in bytes 317 * nVersion : OMX specification version information 318 * nPortIndex : Port that this structure applies to 319 * nRGBAlphaConstant : Constant global alpha values when global alpha is used 320 * eColorBlend : Color blend type enumeration 321 */ 322 typedef struct OMX_CONFIG_COLORBLENDTYPE { 323 OMX_U32 nSize; 324 OMX_VERSIONTYPE nVersion; 325 OMX_U32 nPortIndex; 326 OMX_U32 nRGBAlphaConstant; 327 OMX_COLORBLENDTYPE eColorBlend; 328 } OMX_CONFIG_COLORBLENDTYPE; 329 330 331 /** 332 * Hold frame dimension 333 * 334 * STRUCT MEMBERS: 335 * nSize : Size of the structure in bytes 336 * nVersion : OMX specification version information 337 * nPortIndex : Port that this structure applies to 338 * nWidth : Frame width in pixels 339 * nHeight : Frame height in pixels 340 */ 341 typedef struct OMX_FRAMESIZETYPE { 342 OMX_U32 nSize; 343 OMX_VERSIONTYPE nVersion; 344 OMX_U32 nPortIndex; 345 OMX_U32 nWidth; 346 OMX_U32 nHeight; 347 } OMX_FRAMESIZETYPE; 348 349 350 /** 351 * Rotation configuration 352 * 353 * STRUCT MEMBERS: 354 * nSize : Size of the structure in bytes 355 * nVersion : OMX specification version information 356 * nPortIndex : Port that this structure applies to 357 * nRotation : +/- integer rotation value 358 */ 359 typedef struct OMX_CONFIG_ROTATIONTYPE { 360 OMX_U32 nSize; 361 OMX_VERSIONTYPE nVersion; 362 OMX_U32 nPortIndex; 363 OMX_S32 nRotation; 364 } OMX_CONFIG_ROTATIONTYPE; 365 366 367 /** 368 * Possible mirroring directions for pre/post processing 369 * 370 * ENUMS: 371 * None : No mirroring 372 * Vertical : Vertical mirroring, flip on X axis 373 * Horizontal : Horizontal mirroring, flip on Y axis 374 * Both : Both vertical and horizontal mirroring 375 */ 376 typedef enum OMX_MIRRORTYPE { 377 OMX_MirrorNone = 0, 378 OMX_MirrorVertical, 379 OMX_MirrorHorizontal, 380 OMX_MirrorBoth, 381 OMX_MirrorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 382 OMX_MirrorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 383 OMX_MirrorMax = 0x7FFFFFFF 384 } OMX_MIRRORTYPE; 385 386 387 /** 388 * Mirroring configuration 389 * 390 * STRUCT MEMBERS: 391 * nSize : Size of the structure in bytes 392 * nVersion : OMX specification version information 393 * nPortIndex : Port that this structure applies to 394 * eMirror : Mirror type enumeration 395 */ 396 typedef struct OMX_CONFIG_MIRRORTYPE { 397 OMX_U32 nSize; 398 OMX_VERSIONTYPE nVersion; 399 OMX_U32 nPortIndex; 400 OMX_MIRRORTYPE eMirror; 401 } OMX_CONFIG_MIRRORTYPE; 402 403 404 /** 405 * Position information only 406 * 407 * STRUCT MEMBERS: 408 * nSize : Size of the structure in bytes 409 * nVersion : OMX specification version information 410 * nPortIndex : Port that this structure applies to 411 * nX : X coordinate for the point 412 * nY : Y coordinate for the point 413 */ 414 typedef struct OMX_CONFIG_POINTTYPE { 415 OMX_U32 nSize; 416 OMX_VERSIONTYPE nVersion; 417 OMX_U32 nPortIndex; 418 OMX_S32 nX; 419 OMX_S32 nY; 420 } OMX_CONFIG_POINTTYPE; 421 422 423 /** 424 * Frame size plus position 425 * 426 * STRUCT MEMBERS: 427 * nSize : Size of the structure in bytes 428 * nVersion : OMX specification version information 429 * nPortIndex : Port that this structure applies to 430 * nLeft : X Coordinate of the top left corner of the rectangle 431 * nTop : Y Coordinate of the top left corner of the rectangle 432 * nWidth : Width of the rectangle 433 * nHeight : Height of the rectangle 434 */ 435 typedef struct OMX_CONFIG_RECTTYPE { 436 OMX_U32 nSize; 437 OMX_VERSIONTYPE nVersion; 438 OMX_U32 nPortIndex; 439 OMX_S32 nLeft; 440 OMX_S32 nTop; 441 OMX_U32 nWidth; 442 OMX_U32 nHeight; 443 } OMX_CONFIG_RECTTYPE; 444 445 446 /** 447 * Deblocking state; it is required to be set up before starting the codec 448 * 449 * STRUCT MEMBERS: 450 * nSize : Size of the structure in bytes 451 * nVersion : OMX specification version information 452 * nPortIndex : Port that this structure applies to 453 * bDeblocking : Enable/disable deblocking mode 454 */ 455 typedef struct OMX_PARAM_DEBLOCKINGTYPE { 456 OMX_U32 nSize; 457 OMX_VERSIONTYPE nVersion; 458 OMX_U32 nPortIndex; 459 OMX_BOOL bDeblocking; 460 } OMX_PARAM_DEBLOCKINGTYPE; 461 462 463 /** 464 * Stabilization state 465 * 466 * STRUCT MEMBERS: 467 * nSize : Size of the structure in bytes 468 * nVersion : OMX specification version information 469 * nPortIndex : Port that this structure applies to 470 * bStab : Enable/disable frame stabilization state 471 */ 472 typedef struct OMX_CONFIG_FRAMESTABTYPE { 473 OMX_U32 nSize; 474 OMX_VERSIONTYPE nVersion; 475 OMX_U32 nPortIndex; 476 OMX_BOOL bStab; 477 } OMX_CONFIG_FRAMESTABTYPE; 478 479 480 /** 481 * White Balance control type 482 * 483 * STRUCT MEMBERS: 484 * SunLight : Referenced in JSR-234 485 * Flash : Optimal for device's integrated flash 486 */ 487 typedef enum OMX_WHITEBALCONTROLTYPE { 488 OMX_WhiteBalControlOff = 0, 489 OMX_WhiteBalControlAuto, 490 OMX_WhiteBalControlSunLight, 491 OMX_WhiteBalControlCloudy, 492 OMX_WhiteBalControlShade, 493 OMX_WhiteBalControlTungsten, 494 OMX_WhiteBalControlFluorescent, 495 OMX_WhiteBalControlIncandescent, 496 OMX_WhiteBalControlFlash, 497 OMX_WhiteBalControlHorizon, 498 OMX_WhiteBalControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 499 OMX_WhiteBalControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 500 OMX_WhiteBalControlMax = 0x7FFFFFFF 501 } OMX_WHITEBALCONTROLTYPE; 502 503 504 /** 505 * White Balance control configuration 506 * 507 * STRUCT MEMBERS: 508 * nSize : Size of the structure in bytes 509 * nVersion : OMX specification version information 510 * nPortIndex : Port that this structure applies to 511 * eWhiteBalControl : White balance enumeration 512 */ 513 typedef struct OMX_CONFIG_WHITEBALCONTROLTYPE { 514 OMX_U32 nSize; 515 OMX_VERSIONTYPE nVersion; 516 OMX_U32 nPortIndex; 517 OMX_WHITEBALCONTROLTYPE eWhiteBalControl; 518 } OMX_CONFIG_WHITEBALCONTROLTYPE; 519 520 521 /** 522 * Exposure control type 523 */ 524 typedef enum OMX_EXPOSURECONTROLTYPE { 525 OMX_ExposureControlOff = 0, 526 OMX_ExposureControlAuto, 527 OMX_ExposureControlNight, 528 OMX_ExposureControlBackLight, 529 OMX_ExposureControlSpotLight, 530 OMX_ExposureControlSports, 531 OMX_ExposureControlSnow, 532 OMX_ExposureControlBeach, 533 OMX_ExposureControlLargeAperture, 534 OMX_ExposureControlSmallApperture, 535 OMX_ExposureControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 536 OMX_ExposureControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 537 OMX_ExposureControlMax = 0x7FFFFFFF 538 } OMX_EXPOSURECONTROLTYPE; 539 540 541 /** 542 * White Balance control configuration 543 * 544 * STRUCT MEMBERS: 545 * nSize : Size of the structure in bytes 546 * nVersion : OMX specification version information 547 * nPortIndex : Port that this structure applies to 548 * eExposureControl : Exposure control enumeration 549 */ 550 typedef struct OMX_CONFIG_EXPOSURECONTROLTYPE { 551 OMX_U32 nSize; 552 OMX_VERSIONTYPE nVersion; 553 OMX_U32 nPortIndex; 554 OMX_EXPOSURECONTROLTYPE eExposureControl; 555 } OMX_CONFIG_EXPOSURECONTROLTYPE; 556 557 558 /** 559 * Defines sensor supported mode. 560 * 561 * STRUCT MEMBERS: 562 * nSize : Size of the structure in bytes 563 * nVersion : OMX specification version information 564 * nPortIndex : Port that this structure applies to 565 * nFrameRate : Single shot mode is indicated by a 0 566 * bOneShot : Enable for single shot, disable for streaming 567 * sFrameSize : Framesize 568 */ 569 typedef struct OMX_PARAM_SENSORMODETYPE { 570 OMX_U32 nSize; 571 OMX_VERSIONTYPE nVersion; 572 OMX_U32 nPortIndex; 573 OMX_U32 nFrameRate; 574 OMX_BOOL bOneShot; 575 OMX_FRAMESIZETYPE sFrameSize; 576 } OMX_PARAM_SENSORMODETYPE; 577 578 579 /** 580 * Defines contrast level 581 * 582 * STRUCT MEMBERS: 583 * nSize : Size of the structure in bytes 584 * nVersion : OMX specification version information 585 * nPortIndex : Port that this structure applies to 586 * nContrast : Values allowed for contrast -100 to 100, zero means no change 587 */ 588 typedef struct OMX_CONFIG_CONTRASTTYPE { 589 OMX_U32 nSize; 590 OMX_VERSIONTYPE nVersion; 591 OMX_U32 nPortIndex; 592 OMX_S32 nContrast; 593 } OMX_CONFIG_CONTRASTTYPE; 594 595 596 /** 597 * Defines brightness level 598 * 599 * STRUCT MEMBERS: 600 * nSize : Size of the structure in bytes 601 * nVersion : OMX specification version information 602 * nPortIndex : Port that this structure applies to 603 * nBrightness : 0-100% 604 */ 605 typedef struct OMX_CONFIG_BRIGHTNESSTYPE { 606 OMX_U32 nSize; 607 OMX_VERSIONTYPE nVersion; 608 OMX_U32 nPortIndex; 609 OMX_U32 nBrightness; 610 } OMX_CONFIG_BRIGHTNESSTYPE; 611 612 613 /** 614 * Defines backlight level configuration for a video sink, e.g. LCD panel 615 * 616 * STRUCT MEMBERS: 617 * nSize : Size of the structure in bytes 618 * nVersion : OMX specification version information 619 * nPortIndex : Port that this structure applies to 620 * nBacklight : Values allowed for backlight 0-100% 621 * nTimeout : Number of milliseconds before backlight automatically turns 622 * off. A value of 0x0 disables backight timeout 623 */ 624 typedef struct OMX_CONFIG_BACKLIGHTTYPE { 625 OMX_U32 nSize; 626 OMX_VERSIONTYPE nVersion; 627 OMX_U32 nPortIndex; 628 OMX_U32 nBacklight; 629 OMX_U32 nTimeout; 630 } OMX_CONFIG_BACKLIGHTTYPE; 631 632 633 /** 634 * Defines setting for Gamma 635 * 636 * STRUCT MEMBERS: 637 * nSize : Size of the structure in bytes 638 * nVersion : OMX specification version information 639 * nPortIndex : Port that this structure applies to 640 * nGamma : Values allowed for gamma -100 to 100, zero means no change 641 */ 642 typedef struct OMX_CONFIG_GAMMATYPE { 643 OMX_U32 nSize; 644 OMX_VERSIONTYPE nVersion; 645 OMX_U32 nPortIndex; 646 OMX_S32 nGamma; 647 } OMX_CONFIG_GAMMATYPE; 648 649 650 /** 651 * Define for setting saturation 652 * 653 * STRUCT MEMBERS: 654 * nSize : Size of the structure in bytes 655 * nVersion : OMX specification version information 656 * nPortIndex : Port that this structure applies to 657 * nSaturation : Values allowed for saturation -100 to 100, zero means 658 * no change 659 */ 660 typedef struct OMX_CONFIG_SATURATIONTYPE { 661 OMX_U32 nSize; 662 OMX_VERSIONTYPE nVersion; 663 OMX_U32 nPortIndex; 664 OMX_S32 nSaturation; 665 } OMX_CONFIG_SATURATIONTYPE; 666 667 668 /** 669 * Define for setting Lightness 670 * 671 * STRUCT MEMBERS: 672 * nSize : Size of the structure in bytes 673 * nVersion : OMX specification version information 674 * nPortIndex : Port that this structure applies to 675 * nLightness : Values allowed for lightness -100 to 100, zero means no 676 * change 677 */ 678 typedef struct OMX_CONFIG_LIGHTNESSTYPE { 679 OMX_U32 nSize; 680 OMX_VERSIONTYPE nVersion; 681 OMX_U32 nPortIndex; 682 OMX_S32 nLightness; 683 } OMX_CONFIG_LIGHTNESSTYPE; 684 685 686 /** 687 * Plane blend configuration 688 * 689 * STRUCT MEMBERS: 690 * nSize : Size of the structure in bytes 691 * nVersion : OMX specification version information 692 * nPortIndex : Index of input port associated with the plane. 693 * nDepth : Depth of the plane in relation to the screen. Higher 694 * numbered depths are "behind" lower number depths. 695 * This number defaults to the Port Index number. 696 * nAlpha : Transparency blending component for the entire plane. 697 * See blending modes for more detail. 698 */ 699 typedef struct OMX_CONFIG_PLANEBLENDTYPE { 700 OMX_U32 nSize; 701 OMX_VERSIONTYPE nVersion; 702 OMX_U32 nPortIndex; 703 OMX_U32 nDepth; 704 OMX_U32 nAlpha; 705 } OMX_CONFIG_PLANEBLENDTYPE; 706 707 708 /** 709 * Define interlace type 710 * 711 * STRUCT MEMBERS: 712 * nSize : Size of the structure in bytes 713 * nVersion : OMX specification version information 714 * nPortIndex : Port that this structure applies to 715 * bEnable : Enable control variable for this functionality 716 * (see below) 717 * nInterleavePortIndex : Index of input or output port associated with 718 * the interleaved plane. 719 * pPlanarPortIndexes[4] : Index of input or output planar ports. 720 */ 721 typedef struct OMX_PARAM_INTERLEAVETYPE { 722 OMX_U32 nSize; 723 OMX_VERSIONTYPE nVersion; 724 OMX_U32 nPortIndex; 725 OMX_BOOL bEnable; 726 OMX_U32 nInterleavePortIndex; 727 } OMX_PARAM_INTERLEAVETYPE; 728 729 730 /** 731 * Defines the picture effect used for an input picture 732 */ 733 typedef enum OMX_TRANSITIONEFFECTTYPE { 734 OMX_EffectNone, 735 OMX_EffectFadeFromBlack, 736 OMX_EffectFadeToBlack, 737 OMX_EffectUnspecifiedThroughConstantColor, 738 OMX_EffectDissolve, 739 OMX_EffectWipe, 740 OMX_EffectUnspecifiedMixOfTwoScenes, 741 OMX_EffectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 742 OMX_EffectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 743 OMX_EffectMax = 0x7FFFFFFF 744 } OMX_TRANSITIONEFFECTTYPE; 745 746 747 /** 748 * Structure used to configure current transition effect 749 * 750 * STRUCT MEMBERS: 751 * nSize : Size of the structure in bytes 752 * nVersion : OMX specification version information 753 * nPortIndex : Port that this structure applies to 754 * eEffect : Effect to enable 755 */ 756 typedef struct OMX_CONFIG_TRANSITIONEFFECTTYPE { 757 OMX_U32 nSize; 758 OMX_VERSIONTYPE nVersion; 759 OMX_U32 nPortIndex; 760 OMX_TRANSITIONEFFECTTYPE eEffect; 761 } OMX_CONFIG_TRANSITIONEFFECTTYPE; 762 763 764 /** 765 * Defines possible data unit types for encoded video data. The data unit 766 * types are used both for encoded video input for playback as well as 767 * encoded video output from recording. 768 */ 769 typedef enum OMX_DATAUNITTYPE { 770 OMX_DataUnitCodedPicture, 771 OMX_DataUnitVideoSegment, 772 OMX_DataUnitSeveralSegments, 773 OMX_DataUnitArbitraryStreamSection, 774 OMX_DataUnitKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 775 OMX_DataUnitVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 776 OMX_DataUnitMax = 0x7FFFFFFF 777 } OMX_DATAUNITTYPE; 778 779 780 /** 781 * Defines possible encapsulation types for coded video data unit. The 782 * encapsulation information is used both for encoded video input for 783 * playback as well as encoded video output from recording. 784 */ 785 typedef enum OMX_DATAUNITENCAPSULATIONTYPE { 786 OMX_DataEncapsulationElementaryStream, 787 OMX_DataEncapsulationGenericPayload, 788 OMX_DataEncapsulationRtpPayload, 789 OMX_DataEncapsulationKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 790 OMX_DataEncapsulationVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 791 OMX_DataEncapsulationMax = 0x7FFFFFFF 792 } OMX_DATAUNITENCAPSULATIONTYPE; 793 794 795 /** 796 * Structure used to configure the type of being decoded/encoded 797 */ 798 typedef struct OMX_PARAM_DATAUNITTYPE { 799 OMX_U32 nSize; /**< Size of the structure in bytes */ 800 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 801 OMX_U32 nPortIndex; /**< Port that this structure applies to */ 802 OMX_DATAUNITTYPE eUnitType; 803 OMX_DATAUNITENCAPSULATIONTYPE eEncapsulationType; 804 } OMX_PARAM_DATAUNITTYPE; 805 806 807 /** 808 * Defines dither types 809 */ 810 typedef enum OMX_DITHERTYPE { 811 OMX_DitherNone, 812 OMX_DitherOrdered, 813 OMX_DitherErrorDiffusion, 814 OMX_DitherOther, 815 OMX_DitherKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 816 OMX_DitherVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 817 OMX_DitherMax = 0x7FFFFFFF 818 } OMX_DITHERTYPE; 819 820 821 /** 822 * Structure used to configure current type of dithering 823 */ 824 typedef struct OMX_CONFIG_DITHERTYPE { 825 OMX_U32 nSize; /**< Size of the structure in bytes */ 826 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ 827 OMX_U32 nPortIndex; /**< Port that this structure applies to */ 828 OMX_DITHERTYPE eDither; /**< Type of dithering to use */ 829 } OMX_CONFIG_DITHERTYPE; 830 831 typedef struct OMX_CONFIG_CAPTUREMODETYPE { 832 OMX_U32 nSize; 833 OMX_VERSIONTYPE nVersion; 834 OMX_U32 nPortIndex; /**< Port that this structure applies to */ 835 OMX_BOOL bContinuous; /**< If true then ignore frame rate and emit capture 836 * data as fast as possible (otherwise obey port's frame rate). */ 837 OMX_BOOL bFrameLimited; /**< If true then terminate capture after the port emits the 838 * specified number of frames (otherwise the port does not 839 * terminate the capture until instructed to do so by the client). 840 * Even if set, the client may manually terminate the capture prior 841 * to reaching the limit. */ 842 OMX_U32 nFrameLimit; /**< Limit on number of frames emitted during a capture (only 843 * valid if bFrameLimited is set). */ 844 } OMX_CONFIG_CAPTUREMODETYPE; 845 846 typedef enum OMX_METERINGTYPE { 847 848 OMX_MeteringModeAverage, /**< Center-weighted average metering. */ 849 OMX_MeteringModeSpot, /**< Spot (partial) metering. */ 850 OMX_MeteringModeMatrix, /**< Matrix or evaluative metering. */ 851 852 OMX_MeteringKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 853 OMX_MeteringVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 854 OMX_EVModeMax = 0x7fffffff 855 } OMX_METERINGTYPE; 856 857 typedef struct OMX_CONFIG_EXPOSUREVALUETYPE { 858 OMX_U32 nSize; 859 OMX_VERSIONTYPE nVersion; 860 OMX_U32 nPortIndex; 861 OMX_METERINGTYPE eMetering; 862 OMX_S32 xEVCompensation; /**< Fixed point value stored as Q16 */ 863 OMX_U32 nApertureFNumber; /**< e.g. nApertureFNumber = 2 implies "f/2" - Q16 format */ 864 OMX_BOOL bAutoAperture; /**< Whether aperture number is defined automatically */ 865 OMX_U32 nShutterSpeedMsec; /**< Shutterspeed in milliseconds */ 866 OMX_BOOL bAutoShutterSpeed; /**< Whether shutter speed is defined automatically */ 867 OMX_U32 nSensitivity; /**< e.g. nSensitivity = 100 implies "ISO 100" */ 868 OMX_BOOL bAutoSensitivity; /**< Whether sensitivity is defined automatically */ 869 } OMX_CONFIG_EXPOSUREVALUETYPE; 870 871 /** 872 * Focus region configuration 873 * 874 * STRUCT MEMBERS: 875 * nSize : Size of the structure in bytes 876 * nVersion : OMX specification version information 877 * nPortIndex : Port that this structure applies to 878 * bCenter : Use center region as focus region of interest 879 * bLeft : Use left region as focus region of interest 880 * bRight : Use right region as focus region of interest 881 * bTop : Use top region as focus region of interest 882 * bBottom : Use bottom region as focus region of interest 883 * bTopLeft : Use top left region as focus region of interest 884 * bTopRight : Use top right region as focus region of interest 885 * bBottomLeft : Use bottom left region as focus region of interest 886 * bBottomRight : Use bottom right region as focus region of interest 887 */ 888 typedef struct OMX_CONFIG_FOCUSREGIONTYPE { 889 OMX_U32 nSize; 890 OMX_VERSIONTYPE nVersion; 891 OMX_U32 nPortIndex; 892 OMX_BOOL bCenter; 893 OMX_BOOL bLeft; 894 OMX_BOOL bRight; 895 OMX_BOOL bTop; 896 OMX_BOOL bBottom; 897 OMX_BOOL bTopLeft; 898 OMX_BOOL bTopRight; 899 OMX_BOOL bBottomLeft; 900 OMX_BOOL bBottomRight; 901 } OMX_CONFIG_FOCUSREGIONTYPE; 902 903 /** 904 * Focus Status type 905 */ 906 typedef enum OMX_FOCUSSTATUSTYPE { 907 OMX_FocusStatusOff = 0, 908 OMX_FocusStatusRequest, 909 OMX_FocusStatusReached, 910 OMX_FocusStatusUnableToReach, 911 OMX_FocusStatusLost, 912 OMX_FocusStatusKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 913 OMX_FocusStatusVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 914 OMX_FocusStatusMax = 0x7FFFFFFF 915 } OMX_FOCUSSTATUSTYPE; 916 917 /** 918 * Focus status configuration 919 * 920 * STRUCT MEMBERS: 921 * nSize : Size of the structure in bytes 922 * nVersion : OMX specification version information 923 * nPortIndex : Port that this structure applies to 924 * eFocusStatus : Specifies the focus status 925 * bCenterStatus : Use center region as focus region of interest 926 * bLeftStatus : Use left region as focus region of interest 927 * bRightStatus : Use right region as focus region of interest 928 * bTopStatus : Use top region as focus region of interest 929 * bBottomStatus : Use bottom region as focus region of interest 930 * bTopLeftStatus : Use top left region as focus region of interest 931 * bTopRightStatus : Use top right region as focus region of interest 932 * bBottomLeftStatus : Use bottom left region as focus region of interest 933 * bBottomRightStatus : Use bottom right region as focus region of interest 934 */ 935 typedef struct OMX_PARAM_FOCUSSTATUSTYPE { 936 OMX_U32 nSize; 937 OMX_VERSIONTYPE nVersion; 938 OMX_U32 nPortIndex; 939 OMX_FOCUSSTATUSTYPE eFocusStatus; 940 OMX_BOOL bCenterStatus; 941 OMX_BOOL bLeftStatus; 942 OMX_BOOL bRightStatus; 943 OMX_BOOL bTopStatus; 944 OMX_BOOL bBottomStatus; 945 OMX_BOOL bTopLeftStatus; 946 OMX_BOOL bTopRightStatus; 947 OMX_BOOL bBottomLeftStatus; 948 OMX_BOOL bBottomRightStatus; 949 } OMX_PARAM_FOCUSSTATUSTYPE; 950 951 /** @} */ 952 953 #ifdef __cplusplus 954 } 955 #endif /* __cplusplus */ 956 957 #endif 958 /* File EOF */ 959