tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

OMX_IVCommon.h (31687B)


      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    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 */