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
33extern "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 */
88typedef 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 */
144typedef 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 */
158typedef 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 */
170typedef 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 */
197typedef 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 */
218typedef 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 */
238typedef 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 */
260typedef 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 */
284typedef 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 */
303typedef 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 */
321typedef 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 */
338typedef 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 */
358typedef 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 */
376typedef 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 */
397typedef 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 */
417typedef 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 */
434typedef 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 */
449typedef 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 */
475typedef 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 */
486typedef 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 */
512typedef 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 */
531typedef 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 */
550typedef 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 */
567typedef 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 */
586typedef 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 */
604typedef 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 */
622typedef 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 */
640typedef 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 */
661typedef 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 */
683typedef 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 */
695typedef 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 */
718typedef 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 */
731typedef 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 */
747typedef 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 */
760typedef 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 */
772typedef 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 */
786typedef 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
793typedef 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
808typedef 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
819typedef 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 */
850typedef 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 */
868typedef 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 */
897typedef 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