1 /* ------------------------------------------------------------------
2  * Copyright (C) 1998-2009 PacketVideo
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13  * express or implied.
14  * See the License for the specific language governing permissions
15  * and limitations under the License.
16  * -------------------------------------------------------------------
17  */
18 /**
19  * Copyright (c) 2008 The Khronos Group Inc.
20  *
21  * Permission is hereby granted, free of charge, to any person obtaining
22  * a copy of this software and associated documentation files (the
23  * "Software"), to deal in the Software without restriction, including
24  * without limitation the rights to use, copy, modify, merge, publish,
25  * distribute, sublicense, and/or sell copies of the Software, and to
26  * permit persons to whom the Software is furnished to do so, subject
27  * to the following conditions:
28  * The above copyright notice and this permission notice shall be included
29  * in all copies or substantial portions of the Software.
30  *
31  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
32  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
33  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
34  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
35  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
36  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
37  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38  *
39  */
40 
41 /**
42  * @file OMX_IVCommon.h - OpenMax IL version 1.1.2
43  *  The structures needed by Video and Image components to exchange
44  *  parameters and configuration data with the components.
45  */
46 #ifndef OMX_IVCommon_h
47 #define OMX_IVCommon_h
48 
49 #ifdef __cplusplus
50 extern "C" {
51 #endif /* __cplusplus */
52 
53 /**
54  * Each OMX header must include all required header files to allow the header
55  * to compile without errors.  The includes below are required for this header
56  * file to compile successfully
57  */
58 
59 #include <OMX_Core.h>
60 
61 /** @defgroup iv OpenMAX IL Imaging and Video Domain
62  * Common structures for OpenMAX IL Imaging and Video domains
63  * @{
64  */
65 
66 
67 /**
68  * Enumeration defining possible uncompressed image/video formats.
69  *
70  * ENUMS:
71  *  Unused                 : Placeholder value when format is N/A
72  *  Monochrome             : black and white
73  *  8bitRGB332             : Red 7:5, Green 4:2, Blue 1:0
74  *  12bitRGB444            : Red 11:8, Green 7:4, Blue 3:0
75  *  16bitARGB4444          : Alpha 15:12, Red 11:8, Green 7:4, Blue 3:0
76  *  16bitARGB1555          : Alpha 15, Red 14:10, Green 9:5, Blue 4:0
77  *  16bitRGB565            : Red 15:11, Green 10:5, Blue 4:0
78  *  16bitBGR565            : Blue 15:11, Green 10:5, Red 4:0
79  *  18bitRGB666            : Red 17:12, Green 11:6, Blue 5:0
80  *  18bitARGB1665          : Alpha 17, Red 16:11, Green 10:5, Blue 4:0
81  *  19bitARGB1666          : Alpha 18, Red 17:12, Green 11:6, Blue 5:0
82  *  24bitRGB888            : Red 24:16, Green 15:8, Blue 7:0
83  *  24bitBGR888            : Blue 24:16, Green 15:8, Red 7:0
84  *  24bitARGB1887          : Alpha 23, Red 22:15, Green 14:7, Blue 6:0
85  *  25bitARGB1888          : Alpha 24, Red 23:16, Green 15:8, Blue 7:0
86  *  32bitBGRA8888          : Blue 31:24, Green 23:16, Red 15:8, Alpha 7:0
87  *  32bitARGB8888          : Alpha 31:24, Red 23:16, Green 15:8, Blue 7:0
88  *  YUV411Planar           : U,Y are subsampled by a factor of 4 horizontally
89  *  YUV411PackedPlanar     : packed per payload in planar slices
90  *  YUV420Planar           : Three arrays Y,U,V.
91  *  YUV420PackedPlanar     : packed per payload in planar slices
92  *  YUV420SemiPlanar       : Two arrays, one is all Y, the other is U and V
93  *  YUV422Planar           : Three arrays Y,U,V.
94  *  YUV422PackedPlanar     : packed per payload in planar slices
95  *  YUV422SemiPlanar       : Two arrays, one is all Y, the other is U and V
96  *  YCbYCr                 : Organized as 16bit YUYV (i.e. YCbYCr)
97  *  YCrYCb                 : Organized as 16bit YVYU (i.e. YCrYCb)
98  *  CbYCrY                 : Organized as 16bit UYVY (i.e. CbYCrY)
99  *  CrYCbY                 : Organized as 16bit VYUY (i.e. CrYCbY)
100  *  YUV444Interleaved      : Each pixel contains equal parts YUV
101  *  RawBayer8bit           : SMIA camera output format
102  *  RawBayer10bit          : SMIA camera output format
103  *  RawBayer8bitcompressed : SMIA camera output format
104  */
105 typedef enum OMX_COLOR_FORMATTYPE {
106     OMX_COLOR_FormatUnused,
107     OMX_COLOR_FormatMonochrome,
108     OMX_COLOR_Format8bitRGB332,
109     OMX_COLOR_Format12bitRGB444,
110     OMX_COLOR_Format16bitARGB4444,
111     OMX_COLOR_Format16bitARGB1555,
112     OMX_COLOR_Format16bitRGB565,
113     OMX_COLOR_Format16bitBGR565,
114     OMX_COLOR_Format18bitRGB666,
115     OMX_COLOR_Format18bitARGB1665,
116     OMX_COLOR_Format19bitARGB1666,
117     OMX_COLOR_Format24bitRGB888,
118     OMX_COLOR_Format24bitBGR888,
119     OMX_COLOR_Format24bitARGB1887,
120     OMX_COLOR_Format25bitARGB1888,
121     OMX_COLOR_Format32bitBGRA8888,
122     OMX_COLOR_Format32bitARGB8888,
123     OMX_COLOR_FormatYUV411Planar,
124     OMX_COLOR_FormatYUV411PackedPlanar,
125     OMX_COLOR_FormatYUV420Planar,
126     OMX_COLOR_FormatYUV420PackedPlanar,
127     OMX_COLOR_FormatYUV420SemiPlanar,
128     OMX_COLOR_FormatYUV422Planar,
129     OMX_COLOR_FormatYUV422PackedPlanar,
130     OMX_COLOR_FormatYUV422SemiPlanar,
131     OMX_COLOR_FormatYCbYCr,
132     OMX_COLOR_FormatYCrYCb,
133     OMX_COLOR_FormatCbYCrY,
134     OMX_COLOR_FormatCrYCbY,
135     OMX_COLOR_FormatYUV444Interleaved,
136     OMX_COLOR_FormatRawBayer8bit,
137     OMX_COLOR_FormatRawBayer10bit,
138     OMX_COLOR_FormatRawBayer8bitcompressed,
139     OMX_COLOR_FormatL2,
140     OMX_COLOR_FormatL4,
141     OMX_COLOR_FormatL8,
142     OMX_COLOR_FormatL16,
143     OMX_COLOR_FormatL24,
144     OMX_COLOR_FormatL32,
145     OMX_COLOR_FormatYUV420PackedSemiPlanar,
146     OMX_COLOR_FormatYUV422PackedSemiPlanar,
147     OMX_COLOR_Format18BitBGR666,
148     OMX_COLOR_Format24BitARGB6666,
149     OMX_COLOR_Format24BitABGR6666,
150     OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
151     OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
152     /**<Reserved android opaque colorformat. Tells the encoder that
153      * the actual colorformat will be  relayed by the
154      * Gralloc Buffers.
155      * FIXME: In the process of reserving some enum values for
156      * Android-specific OMX IL colorformats. Change this enum to
157      * an acceptable range once that is done.
158      * */
159     OMX_COLOR_FormatAndroidOpaque = 0x7F000789,
160     OMX_COLOR_Format32BitRGBA8888 = 0x7F00A000,
161     /** Flexible 8-bit YUV format.  Codec should report this format
162      *  as being supported if it supports any YUV420 packed planar
163      *  or semiplanar formats.  When port is set to use this format,
164      *  codec can substitute any YUV420 packed planar or semiplanar
165      *  format for it. */
166     OMX_COLOR_FormatYUV420Flexible = 0x7F420888,
167 
168     OMX_TI_COLOR_FormatYUV420PackedSemiPlanar = 0x7F000100,
169     OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00,
170     OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka = 0x7FA30C03,
171     OMX_SEC_COLOR_FormatNV12Tiled = 0x7FC00002,
172     OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar32m = 0x7FA30C04,
173     OMX_COLOR_FormatMax = 0x7FFFFFFF
174 } OMX_COLOR_FORMATTYPE;
175 
176 
177 /**
178  * Defines the matrix for conversion from RGB to YUV or vice versa.
179  * iColorMatrix should be initialized with the fixed point values
180  * used in converting between formats.
181  */
182 typedef struct OMX_CONFIG_COLORCONVERSIONTYPE {
183     OMX_U32 nSize;              /**< Size of the structure in bytes */
184     OMX_VERSIONTYPE nVersion;   /**< OMX specification version info */
185     OMX_U32 nPortIndex;         /**< Port that this struct applies to */
186     OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */
187     OMX_S32 xColorOffset[4];    /**< Stored in signed Q16 format */
188 }OMX_CONFIG_COLORCONVERSIONTYPE;
189 
190 
191 /**
192  * Structure defining percent to scale each frame dimension.  For example:
193  * To make the width 50% larger, use fWidth = 1.5 and to make the width
194  * 1/2 the original size, use fWidth = 0.5
195  */
196 typedef struct OMX_CONFIG_SCALEFACTORTYPE {
197     OMX_U32 nSize;            /**< Size of the structure in bytes */
198     OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
199     OMX_U32 nPortIndex;       /**< Port that this struct applies to */
200     OMX_S32 xWidth;           /**< Fixed point value stored as Q16 */
201     OMX_S32 xHeight;          /**< Fixed point value stored as Q16 */
202 }OMX_CONFIG_SCALEFACTORTYPE;
203 
204 
205 /**
206  * Enumeration of possible image filter types
207  */
208 typedef enum OMX_IMAGEFILTERTYPE {
209     OMX_ImageFilterNone,
210     OMX_ImageFilterNoise,
211     OMX_ImageFilterEmboss,
212     OMX_ImageFilterNegative,
213     OMX_ImageFilterSketch,
214     OMX_ImageFilterOilPaint,
215     OMX_ImageFilterHatch,
216     OMX_ImageFilterGpen,
217     OMX_ImageFilterAntialias,
218     OMX_ImageFilterDeRing,
219     OMX_ImageFilterSolarize,
220     OMX_ImageFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
221     OMX_ImageFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
222     OMX_ImageFilterMax = 0x7FFFFFFF
223 } OMX_IMAGEFILTERTYPE;
224 
225 
226 /**
227  * Image filter configuration
228  *
229  * STRUCT MEMBERS:
230  *  nSize        : Size of the structure in bytes
231  *  nVersion     : OMX specification version information
232  *  nPortIndex   : Port that this structure applies to
233  *  eImageFilter : Image filter type enumeration
234  */
235 typedef struct OMX_CONFIG_IMAGEFILTERTYPE {
236     OMX_U32 nSize;
237     OMX_VERSIONTYPE nVersion;
238     OMX_U32 nPortIndex;
239     OMX_IMAGEFILTERTYPE eImageFilter;
240 } OMX_CONFIG_IMAGEFILTERTYPE;
241 
242 
243 /**
244  * Customized U and V for color enhancement
245  *
246  * STRUCT MEMBERS:
247  *  nSize             : Size of the structure in bytes
248  *  nVersion          : OMX specification version information
249  *  nPortIndex        : Port that this structure applies to
250  *  bColorEnhancement : Enable/disable color enhancement
251  *  nCustomizedU      : Practical values: 16-240, range: 0-255, value set for
252  *                      U component
253  *  nCustomizedV      : Practical values: 16-240, range: 0-255, value set for
254  *                      V component
255  */
256 typedef struct OMX_CONFIG_COLORENHANCEMENTTYPE {
257     OMX_U32 nSize;
258     OMX_VERSIONTYPE nVersion;
259     OMX_U32 nPortIndex;
260     OMX_BOOL bColorEnhancement;
261     OMX_U8 nCustomizedU;
262     OMX_U8 nCustomizedV;
263 } OMX_CONFIG_COLORENHANCEMENTTYPE;
264 
265 
266 /**
267  * Define color key and color key mask
268  *
269  * STRUCT MEMBERS:
270  *  nSize      : Size of the structure in bytes
271  *  nVersion   : OMX specification version information
272  *  nPortIndex : Port that this structure applies to
273  *  nARGBColor : 32bit Alpha, Red, Green, Blue Color
274  *  nARGBMask  : 32bit Mask for Alpha, Red, Green, Blue channels
275  */
276 typedef struct OMX_CONFIG_COLORKEYTYPE {
277     OMX_U32 nSize;
278     OMX_VERSIONTYPE nVersion;
279     OMX_U32 nPortIndex;
280     OMX_U32 nARGBColor;
281     OMX_U32 nARGBMask;
282 } OMX_CONFIG_COLORKEYTYPE;
283 
284 
285 /**
286  * List of color blend types for pre/post processing
287  *
288  * ENUMS:
289  *  None          : No color blending present
290  *  AlphaConstant : Function is (alpha_constant * src) +
291  *                  (1 - alpha_constant) * dst)
292  *  AlphaPerPixel : Function is (alpha * src) + (1 - alpha) * dst)
293  *  Alternate     : Function is alternating pixels from src and dst
294  *  And           : Function is (src & dst)
295  *  Or            : Function is (src | dst)
296  *  Invert        : Function is ~src
297  */
298 typedef enum OMX_COLORBLENDTYPE {
299     OMX_ColorBlendNone,
300     OMX_ColorBlendAlphaConstant,
301     OMX_ColorBlendAlphaPerPixel,
302     OMX_ColorBlendAlternate,
303     OMX_ColorBlendAnd,
304     OMX_ColorBlendOr,
305     OMX_ColorBlendInvert,
306     OMX_ColorBlendKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
307     OMX_ColorBlendVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
308     OMX_ColorBlendMax = 0x7FFFFFFF
309 } OMX_COLORBLENDTYPE;
310 
311 
312 /**
313  * Color blend 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  *  nRGBAlphaConstant : Constant global alpha values when global alpha is used
320  *  eColorBlend       : Color blend type enumeration
321  */
322 typedef struct OMX_CONFIG_COLORBLENDTYPE {
323     OMX_U32 nSize;
324     OMX_VERSIONTYPE nVersion;
325     OMX_U32 nPortIndex;
326     OMX_U32 nRGBAlphaConstant;
327     OMX_COLORBLENDTYPE  eColorBlend;
328 } OMX_CONFIG_COLORBLENDTYPE;
329 
330 
331 /**
332  * Hold frame dimension
333  *
334  * STRUCT MEMBERS:
335  *  nSize      : Size of the structure in bytes
336  *  nVersion   : OMX specification version information
337  *  nPortIndex : Port that this structure applies to
338  *  nWidth     : Frame width in pixels
339  *  nHeight    : Frame height in pixels
340  */
341 typedef struct OMX_FRAMESIZETYPE {
342     OMX_U32 nSize;
343     OMX_VERSIONTYPE nVersion;
344     OMX_U32 nPortIndex;
345     OMX_U32 nWidth;
346     OMX_U32 nHeight;
347 } OMX_FRAMESIZETYPE;
348 
349 
350 /**
351  * Rotation configuration
352  *
353  * STRUCT MEMBERS:
354  *  nSize      : Size of the structure in bytes
355  *  nVersion   : OMX specification version information
356  *  nPortIndex : Port that this structure applies to
357  *  nRotation  : +/- integer rotation value
358  */
359 typedef struct OMX_CONFIG_ROTATIONTYPE {
360     OMX_U32 nSize;
361     OMX_VERSIONTYPE nVersion;
362     OMX_U32 nPortIndex;
363     OMX_S32 nRotation;
364 } OMX_CONFIG_ROTATIONTYPE;
365 
366 
367 /**
368  * Possible mirroring directions for pre/post processing
369  *
370  * ENUMS:
371  *  None       : No mirroring
372  *  Vertical   : Vertical mirroring, flip on X axis
373  *  Horizontal : Horizontal mirroring, flip on Y axis
374  *  Both       : Both vertical and horizontal mirroring
375  */
376 typedef enum OMX_MIRRORTYPE {
377     OMX_MirrorNone = 0,
378     OMX_MirrorVertical,
379     OMX_MirrorHorizontal,
380     OMX_MirrorBoth,
381     OMX_MirrorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
382     OMX_MirrorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
383     OMX_MirrorMax = 0x7FFFFFFF
384 } OMX_MIRRORTYPE;
385 
386 
387 /**
388  * Mirroring configuration
389  *
390  * STRUCT MEMBERS:
391  *  nSize      : Size of the structure in bytes
392  *  nVersion   : OMX specification version information
393  *  nPortIndex : Port that this structure applies to
394  *  eMirror    : Mirror type enumeration
395  */
396 typedef struct OMX_CONFIG_MIRRORTYPE {
397     OMX_U32 nSize;
398     OMX_VERSIONTYPE nVersion;
399     OMX_U32 nPortIndex;
400     OMX_MIRRORTYPE  eMirror;
401 } OMX_CONFIG_MIRRORTYPE;
402 
403 
404 /**
405  * Position information only
406  *
407  * STRUCT MEMBERS:
408  *  nSize      : Size of the structure in bytes
409  *  nVersion   : OMX specification version information
410  *  nPortIndex : Port that this structure applies to
411  *  nX         : X coordinate for the point
412  *  nY         : Y coordinate for the point
413  */
414 typedef struct OMX_CONFIG_POINTTYPE {
415     OMX_U32 nSize;
416     OMX_VERSIONTYPE nVersion;
417     OMX_U32 nPortIndex;
418     OMX_S32 nX;
419     OMX_S32 nY;
420 } OMX_CONFIG_POINTTYPE;
421 
422 
423 /**
424  * Frame size plus position
425  *
426  * STRUCT MEMBERS:
427  *  nSize      : Size of the structure in bytes
428  *  nVersion   : OMX specification version information
429  *  nPortIndex : Port that this structure applies to
430  *  nLeft      : X Coordinate of the top left corner of the rectangle
431  *  nTop       : Y Coordinate of the top left corner of the rectangle
432  *  nWidth     : Width of the rectangle
433  *  nHeight    : Height of the rectangle
434  */
435 typedef struct OMX_CONFIG_RECTTYPE {
436     OMX_U32 nSize;
437     OMX_VERSIONTYPE nVersion;
438     OMX_U32 nPortIndex;
439     OMX_S32 nLeft;
440     OMX_S32 nTop;
441     OMX_U32 nWidth;
442     OMX_U32 nHeight;
443 } OMX_CONFIG_RECTTYPE;
444 
445 
446 /**
447  * Deblocking state; it is required to be set up before starting the codec
448  *
449  * STRUCT MEMBERS:
450  *  nSize       : Size of the structure in bytes
451  *  nVersion    : OMX specification version information
452  *  nPortIndex  : Port that this structure applies to
453  *  bDeblocking : Enable/disable deblocking mode
454  */
455 typedef struct OMX_PARAM_DEBLOCKINGTYPE {
456     OMX_U32 nSize;
457     OMX_VERSIONTYPE nVersion;
458     OMX_U32 nPortIndex;
459     OMX_BOOL bDeblocking;
460 } OMX_PARAM_DEBLOCKINGTYPE;
461 
462 
463 /**
464  * Stabilization state
465  *
466  * STRUCT MEMBERS:
467  *  nSize      : Size of the structure in bytes
468  *  nVersion   : OMX specification version information
469  *  nPortIndex : Port that this structure applies to
470  *  bStab      : Enable/disable frame stabilization state
471  */
472 typedef struct OMX_CONFIG_FRAMESTABTYPE {
473     OMX_U32 nSize;
474     OMX_VERSIONTYPE nVersion;
475     OMX_U32 nPortIndex;
476     OMX_BOOL bStab;
477 } OMX_CONFIG_FRAMESTABTYPE;
478 
479 
480 /**
481  * White Balance control type
482  *
483  * STRUCT MEMBERS:
484  *  SunLight : Referenced in JSR-234
485  *  Flash    : Optimal for device's integrated flash
486  */
487 typedef enum OMX_WHITEBALCONTROLTYPE {
488     OMX_WhiteBalControlOff = 0,
489     OMX_WhiteBalControlAuto,
490     OMX_WhiteBalControlSunLight,
491     OMX_WhiteBalControlCloudy,
492     OMX_WhiteBalControlShade,
493     OMX_WhiteBalControlTungsten,
494     OMX_WhiteBalControlFluorescent,
495     OMX_WhiteBalControlIncandescent,
496     OMX_WhiteBalControlFlash,
497     OMX_WhiteBalControlHorizon,
498     OMX_WhiteBalControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
499     OMX_WhiteBalControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
500     OMX_WhiteBalControlMax = 0x7FFFFFFF
501 } OMX_WHITEBALCONTROLTYPE;
502 
503 
504 /**
505  * White Balance control configuration
506  *
507  * STRUCT MEMBERS:
508  *  nSize            : Size of the structure in bytes
509  *  nVersion         : OMX specification version information
510  *  nPortIndex       : Port that this structure applies to
511  *  eWhiteBalControl : White balance enumeration
512  */
513 typedef struct OMX_CONFIG_WHITEBALCONTROLTYPE {
514     OMX_U32 nSize;
515     OMX_VERSIONTYPE nVersion;
516     OMX_U32 nPortIndex;
517     OMX_WHITEBALCONTROLTYPE eWhiteBalControl;
518 } OMX_CONFIG_WHITEBALCONTROLTYPE;
519 
520 
521 /**
522  * Exposure control type
523  */
524 typedef enum OMX_EXPOSURECONTROLTYPE {
525     OMX_ExposureControlOff = 0,
526     OMX_ExposureControlAuto,
527     OMX_ExposureControlNight,
528     OMX_ExposureControlBackLight,
529     OMX_ExposureControlSpotLight,
530     OMX_ExposureControlSports,
531     OMX_ExposureControlSnow,
532     OMX_ExposureControlBeach,
533     OMX_ExposureControlLargeAperture,
534     OMX_ExposureControlSmallApperture,
535     OMX_ExposureControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
536     OMX_ExposureControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
537     OMX_ExposureControlMax = 0x7FFFFFFF
538 } OMX_EXPOSURECONTROLTYPE;
539 
540 
541 /**
542  * White Balance control configuration
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  *  eExposureControl : Exposure control enumeration
549  */
550 typedef struct OMX_CONFIG_EXPOSURECONTROLTYPE {
551     OMX_U32 nSize;
552     OMX_VERSIONTYPE nVersion;
553     OMX_U32 nPortIndex;
554     OMX_EXPOSURECONTROLTYPE eExposureControl;
555 } OMX_CONFIG_EXPOSURECONTROLTYPE;
556 
557 
558 /**
559  * Defines sensor supported mode.
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  *  nFrameRate : Single shot mode is indicated by a 0
566  *  bOneShot   : Enable for single shot, disable for streaming
567  *  sFrameSize : Framesize
568  */
569 typedef struct OMX_PARAM_SENSORMODETYPE {
570     OMX_U32 nSize;
571     OMX_VERSIONTYPE nVersion;
572     OMX_U32 nPortIndex;
573     OMX_U32 nFrameRate;
574     OMX_BOOL bOneShot;
575     OMX_FRAMESIZETYPE sFrameSize;
576 } OMX_PARAM_SENSORMODETYPE;
577 
578 
579 /**
580  * Defines contrast level
581  *
582  * STRUCT MEMBERS:
583  *  nSize      : Size of the structure in bytes
584  *  nVersion   : OMX specification version information
585  *  nPortIndex : Port that this structure applies to
586  *  nContrast  : Values allowed for contrast -100 to 100, zero means no change
587  */
588 typedef struct OMX_CONFIG_CONTRASTTYPE {
589     OMX_U32 nSize;
590     OMX_VERSIONTYPE nVersion;
591     OMX_U32 nPortIndex;
592     OMX_S32 nContrast;
593 } OMX_CONFIG_CONTRASTTYPE;
594 
595 
596 /**
597  * Defines brightness level
598  *
599  * STRUCT MEMBERS:
600  *  nSize       : Size of the structure in bytes
601  *  nVersion    : OMX specification version information
602  *  nPortIndex  : Port that this structure applies to
603  *  nBrightness : 0-100%
604  */
605 typedef struct OMX_CONFIG_BRIGHTNESSTYPE {
606     OMX_U32 nSize;
607     OMX_VERSIONTYPE nVersion;
608     OMX_U32 nPortIndex;
609     OMX_U32 nBrightness;
610 } OMX_CONFIG_BRIGHTNESSTYPE;
611 
612 
613 /**
614  * Defines backlight level configuration for a video sink, e.g. LCD panel
615  *
616  * STRUCT MEMBERS:
617  *  nSize      : Size of the structure in bytes
618  *  nVersion   : OMX specification version information
619  *  nPortIndex : Port that this structure applies to
620  *  nBacklight : Values allowed for backlight 0-100%
621  *  nTimeout   : Number of milliseconds before backlight automatically turns
622  *               off.  A value of 0x0 disables backight timeout
623  */
624 typedef struct OMX_CONFIG_BACKLIGHTTYPE {
625     OMX_U32 nSize;
626     OMX_VERSIONTYPE nVersion;
627     OMX_U32 nPortIndex;
628     OMX_U32 nBacklight;
629     OMX_U32 nTimeout;
630 } OMX_CONFIG_BACKLIGHTTYPE;
631 
632 
633 /**
634  * Defines setting for Gamma
635  *
636  * STRUCT MEMBERS:
637  *  nSize      : Size of the structure in bytes
638  *  nVersion   : OMX specification version information
639  *  nPortIndex : Port that this structure applies to
640  *  nGamma     : Values allowed for gamma -100 to 100, zero means no change
641  */
642 typedef struct OMX_CONFIG_GAMMATYPE {
643     OMX_U32 nSize;
644     OMX_VERSIONTYPE nVersion;
645     OMX_U32 nPortIndex;
646     OMX_S32 nGamma;
647 } OMX_CONFIG_GAMMATYPE;
648 
649 
650 /**
651  * Define for setting saturation
652  *
653  * STRUCT MEMBERS:
654  *  nSize       : Size of the structure in bytes
655  *  nVersion    : OMX specification version information
656  *  nPortIndex  : Port that this structure applies to
657  *  nSaturation : Values allowed for saturation -100 to 100, zero means
658  *                no change
659  */
660 typedef struct OMX_CONFIG_SATURATIONTYPE {
661     OMX_U32 nSize;
662     OMX_VERSIONTYPE nVersion;
663     OMX_U32 nPortIndex;
664     OMX_S32 nSaturation;
665 } OMX_CONFIG_SATURATIONTYPE;
666 
667 
668 /**
669  * Define for setting Lightness
670  *
671  * STRUCT MEMBERS:
672  *  nSize      : Size of the structure in bytes
673  *  nVersion   : OMX specification version information
674  *  nPortIndex : Port that this structure applies to
675  *  nLightness : Values allowed for lightness -100 to 100, zero means no
676  *               change
677  */
678 typedef struct OMX_CONFIG_LIGHTNESSTYPE {
679     OMX_U32 nSize;
680     OMX_VERSIONTYPE nVersion;
681     OMX_U32 nPortIndex;
682     OMX_S32 nLightness;
683 } OMX_CONFIG_LIGHTNESSTYPE;
684 
685 
686 /**
687  * Plane blend configuration
688  *
689  * STRUCT MEMBERS:
690  *  nSize      : Size of the structure in bytes
691  *  nVersion   : OMX specification version information
692  *  nPortIndex : Index of input port associated with the plane.
693  *  nDepth     : Depth of the plane in relation to the screen. Higher
694  *               numbered depths are "behind" lower number depths.
695  *               This number defaults to the Port Index number.
696  *  nAlpha     : Transparency blending component for the entire plane.
697  *               See blending modes for more detail.
698  */
699 typedef struct OMX_CONFIG_PLANEBLENDTYPE {
700     OMX_U32 nSize;
701     OMX_VERSIONTYPE nVersion;
702     OMX_U32 nPortIndex;
703     OMX_U32 nDepth;
704     OMX_U32 nAlpha;
705 } OMX_CONFIG_PLANEBLENDTYPE;
706 
707 
708 /**
709  * Define interlace type
710  *
711  * STRUCT MEMBERS:
712  *  nSize                 : Size of the structure in bytes
713  *  nVersion              : OMX specification version information
714  *  nPortIndex            : Port that this structure applies to
715  *  bEnable               : Enable control variable for this functionality
716  *                          (see below)
717  *  nInterleavePortIndex  : Index of input or output port associated with
718  *                          the interleaved plane.
719  *  pPlanarPortIndexes[4] : Index of input or output planar ports.
720  */
721 typedef struct OMX_PARAM_INTERLEAVETYPE {
722     OMX_U32 nSize;
723     OMX_VERSIONTYPE nVersion;
724     OMX_U32 nPortIndex;
725     OMX_BOOL bEnable;
726     OMX_U32 nInterleavePortIndex;
727 } OMX_PARAM_INTERLEAVETYPE;
728 
729 
730 /**
731  * Defines the picture effect used for an input picture
732  */
733 typedef enum OMX_TRANSITIONEFFECTTYPE {
734     OMX_EffectNone,
735     OMX_EffectFadeFromBlack,
736     OMX_EffectFadeToBlack,
737     OMX_EffectUnspecifiedThroughConstantColor,
738     OMX_EffectDissolve,
739     OMX_EffectWipe,
740     OMX_EffectUnspecifiedMixOfTwoScenes,
741     OMX_EffectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
742     OMX_EffectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
743     OMX_EffectMax = 0x7FFFFFFF
744 } OMX_TRANSITIONEFFECTTYPE;
745 
746 
747 /**
748  * Structure used to configure current transition effect
749  *
750  * STRUCT MEMBERS:
751  * nSize      : Size of the structure in bytes
752  * nVersion   : OMX specification version information
753  * nPortIndex : Port that this structure applies to
754  * eEffect    : Effect to enable
755  */
756 typedef struct OMX_CONFIG_TRANSITIONEFFECTTYPE {
757     OMX_U32 nSize;
758     OMX_VERSIONTYPE nVersion;
759     OMX_U32 nPortIndex;
760     OMX_TRANSITIONEFFECTTYPE eEffect;
761 } OMX_CONFIG_TRANSITIONEFFECTTYPE;
762 
763 
764 /**
765  * Defines possible data unit types for encoded video data. The data unit
766  * types are used both for encoded video input for playback as well as
767  * encoded video output from recording.
768  */
769 typedef enum OMX_DATAUNITTYPE {
770     OMX_DataUnitCodedPicture,
771     OMX_DataUnitVideoSegment,
772     OMX_DataUnitSeveralSegments,
773     OMX_DataUnitArbitraryStreamSection,
774     OMX_DataUnitKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
775     OMX_DataUnitVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
776     OMX_DataUnitMax = 0x7FFFFFFF
777 } OMX_DATAUNITTYPE;
778 
779 
780 /**
781  * Defines possible encapsulation types for coded video data unit. The
782  * encapsulation information is used both for encoded video input for
783  * playback as well as encoded video output from recording.
784  */
785 typedef enum OMX_DATAUNITENCAPSULATIONTYPE {
786     OMX_DataEncapsulationElementaryStream,
787     OMX_DataEncapsulationGenericPayload,
788     OMX_DataEncapsulationRtpPayload,
789     OMX_DataEncapsulationKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
790     OMX_DataEncapsulationVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
791     OMX_DataEncapsulationMax = 0x7FFFFFFF
792 } OMX_DATAUNITENCAPSULATIONTYPE;
793 
794 
795 /**
796  * Structure used to configure the type of being decoded/encoded
797  */
798 typedef struct OMX_PARAM_DATAUNITTYPE {
799     OMX_U32 nSize;            /**< Size of the structure in bytes */
800     OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
801     OMX_U32 nPortIndex;       /**< Port that this structure applies to */
802     OMX_DATAUNITTYPE eUnitType;
803     OMX_DATAUNITENCAPSULATIONTYPE eEncapsulationType;
804 } OMX_PARAM_DATAUNITTYPE;
805 
806 
807 /**
808  * Defines dither types
809  */
810 typedef enum OMX_DITHERTYPE {
811     OMX_DitherNone,
812     OMX_DitherOrdered,
813     OMX_DitherErrorDiffusion,
814     OMX_DitherOther,
815     OMX_DitherKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
816     OMX_DitherVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
817     OMX_DitherMax = 0x7FFFFFFF
818 } OMX_DITHERTYPE;
819 
820 
821 /**
822  * Structure used to configure current type of dithering
823  */
824 typedef struct OMX_CONFIG_DITHERTYPE {
825     OMX_U32 nSize;            /**< Size of the structure in bytes */
826     OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
827     OMX_U32 nPortIndex;       /**< Port that this structure applies to */
828     OMX_DITHERTYPE eDither;   /**< Type of dithering to use */
829 } OMX_CONFIG_DITHERTYPE;
830 
831 typedef struct OMX_CONFIG_CAPTUREMODETYPE {
832     OMX_U32 nSize;
833     OMX_VERSIONTYPE nVersion;
834     OMX_U32 nPortIndex;     /**< Port that this structure applies to */
835     OMX_BOOL bContinuous;   /**< If true then ignore frame rate and emit capture
836                              *   data as fast as possible (otherwise obey port's frame rate). */
837     OMX_BOOL bFrameLimited; /**< If true then terminate capture after the port emits the
838                              *   specified number of frames (otherwise the port does not
839                              *   terminate the capture until instructed to do so by the client).
840                              *   Even if set, the client may manually terminate the capture prior
841                              *   to reaching the limit. */
842     OMX_U32 nFrameLimit;      /**< Limit on number of frames emitted during a capture (only
843                                *   valid if bFrameLimited is set). */
844 } OMX_CONFIG_CAPTUREMODETYPE;
845 
846 typedef enum OMX_METERINGTYPE {
847 
848     OMX_MeteringModeAverage,     /**< Center-weighted average metering. */
849     OMX_MeteringModeSpot,        /**< Spot (partial) metering. */
850     OMX_MeteringModeMatrix,      /**< Matrix or evaluative metering. */
851 
852     OMX_MeteringKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
853     OMX_MeteringVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
854     OMX_EVModeMax = 0x7fffffff
855 } OMX_METERINGTYPE;
856 
857 typedef struct OMX_CONFIG_EXPOSUREVALUETYPE {
858     OMX_U32 nSize;
859     OMX_VERSIONTYPE nVersion;
860     OMX_U32 nPortIndex;
861     OMX_METERINGTYPE eMetering;
862     OMX_S32 xEVCompensation;      /**< Fixed point value stored as Q16 */
863     OMX_U32 nApertureFNumber;     /**< e.g. nApertureFNumber = 2 implies "f/2" - Q16 format */
864     OMX_BOOL bAutoAperture;       /**< Whether aperture number is defined automatically */
865     OMX_U32 nShutterSpeedMsec;    /**< Shutterspeed in milliseconds */
866     OMX_BOOL bAutoShutterSpeed;   /**< Whether shutter speed is defined automatically */
867     OMX_U32 nSensitivity;         /**< e.g. nSensitivity = 100 implies "ISO 100" */
868     OMX_BOOL bAutoSensitivity;    /**< Whether sensitivity is defined automatically */
869 } OMX_CONFIG_EXPOSUREVALUETYPE;
870 
871 /**
872  * Focus region configuration
873  *
874  * STRUCT MEMBERS:
875  *  nSize           : Size of the structure in bytes
876  *  nVersion        : OMX specification version information
877  *  nPortIndex      : Port that this structure applies to
878  *  bCenter         : Use center region as focus region of interest
879  *  bLeft           : Use left region as focus region of interest
880  *  bRight          : Use right region as focus region of interest
881  *  bTop            : Use top region as focus region of interest
882  *  bBottom         : Use bottom region as focus region of interest
883  *  bTopLeft        : Use top left region as focus region of interest
884  *  bTopRight       : Use top right region as focus region of interest
885  *  bBottomLeft     : Use bottom left region as focus region of interest
886  *  bBottomRight    : Use bottom right region as focus region of interest
887  */
888 typedef struct OMX_CONFIG_FOCUSREGIONTYPE {
889     OMX_U32 nSize;
890     OMX_VERSIONTYPE nVersion;
891     OMX_U32 nPortIndex;
892     OMX_BOOL bCenter;
893     OMX_BOOL bLeft;
894     OMX_BOOL bRight;
895     OMX_BOOL bTop;
896     OMX_BOOL bBottom;
897     OMX_BOOL bTopLeft;
898     OMX_BOOL bTopRight;
899     OMX_BOOL bBottomLeft;
900     OMX_BOOL bBottomRight;
901 } OMX_CONFIG_FOCUSREGIONTYPE;
902 
903 /**
904  * Focus Status type
905  */
906 typedef enum OMX_FOCUSSTATUSTYPE {
907     OMX_FocusStatusOff = 0,
908     OMX_FocusStatusRequest,
909     OMX_FocusStatusReached,
910     OMX_FocusStatusUnableToReach,
911     OMX_FocusStatusLost,
912     OMX_FocusStatusKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
913     OMX_FocusStatusVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
914     OMX_FocusStatusMax = 0x7FFFFFFF
915 } OMX_FOCUSSTATUSTYPE;
916 
917 /**
918  * Focus status configuration
919  *
920  * STRUCT MEMBERS:
921  *  nSize               : Size of the structure in bytes
922  *  nVersion            : OMX specification version information
923  *  nPortIndex          : Port that this structure applies to
924  *  eFocusStatus        : Specifies the focus status
925  *  bCenterStatus       : Use center region as focus region of interest
926  *  bLeftStatus         : Use left region as focus region of interest
927  *  bRightStatus        : Use right region as focus region of interest
928  *  bTopStatus          : Use top region as focus region of interest
929  *  bBottomStatus       : Use bottom region as focus region of interest
930  *  bTopLeftStatus      : Use top left region as focus region of interest
931  *  bTopRightStatus     : Use top right region as focus region of interest
932  *  bBottomLeftStatus   : Use bottom left region as focus region of interest
933  *  bBottomRightStatus  : Use bottom right region as focus region of interest
934  */
935 typedef struct OMX_PARAM_FOCUSSTATUSTYPE {
936     OMX_U32 nSize;
937     OMX_VERSIONTYPE nVersion;
938     OMX_U32 nPortIndex;
939     OMX_FOCUSSTATUSTYPE eFocusStatus;
940     OMX_BOOL bCenterStatus;
941     OMX_BOOL bLeftStatus;
942     OMX_BOOL bRightStatus;
943     OMX_BOOL bTopStatus;
944     OMX_BOOL bBottomStatus;
945     OMX_BOOL bTopLeftStatus;
946     OMX_BOOL bTopRightStatus;
947     OMX_BOOL bBottomLeftStatus;
948     OMX_BOOL bBottomRightStatus;
949 } OMX_PARAM_FOCUSSTATUSTYPE;
950 
951 /** @} */
952 
953 #ifdef __cplusplus
954 }
955 #endif /* __cplusplus */
956 
957 #endif
958 /* File EOF */
959