• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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