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