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