Home | History | Annotate | Download | only in inc
      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