blob: 85bf00df6042881a4c339fc7e08bef5ecaf7c5f4 [file] [log] [blame]
James Dong334de522012-03-12 12:47:14 -07001/* ------------------------------------------------------------------
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
50extern "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 */
105typedef 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_TI_COLOR_FormatYUV420PackedSemiPlanar = 0x7F000100,
161 OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00,
Haynes Mathew George07912f52012-06-20 18:20:52 -0700162 OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka = 0x7FA30C03,
Marco Nelissen62b40b32013-01-17 09:18:29 -0800163 OMX_SEC_COLOR_FormatNV12Tiled = 0x7FC00002,
James Dong334de522012-03-12 12:47:14 -0700164 OMX_COLOR_FormatMax = 0x7FFFFFFF
165} OMX_COLOR_FORMATTYPE;
166
167
168/**
169 * Defines the matrix for conversion from RGB to YUV or vice versa.
170 * iColorMatrix should be initialized with the fixed point values
171 * used in converting between formats.
172 */
173typedef struct OMX_CONFIG_COLORCONVERSIONTYPE {
174 OMX_U32 nSize; /**< Size of the structure in bytes */
175 OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
176 OMX_U32 nPortIndex; /**< Port that this struct applies to */
177 OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */
178 OMX_S32 xColorOffset[4]; /**< Stored in signed Q16 format */
179}OMX_CONFIG_COLORCONVERSIONTYPE;
180
181
182/**
183 * Structure defining percent to scale each frame dimension. For example:
184 * To make the width 50% larger, use fWidth = 1.5 and to make the width
185 * 1/2 the original size, use fWidth = 0.5
186 */
187typedef struct OMX_CONFIG_SCALEFACTORTYPE {
188 OMX_U32 nSize; /**< Size of the structure in bytes */
189 OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
190 OMX_U32 nPortIndex; /**< Port that this struct applies to */
191 OMX_S32 xWidth; /**< Fixed point value stored as Q16 */
192 OMX_S32 xHeight; /**< Fixed point value stored as Q16 */
193}OMX_CONFIG_SCALEFACTORTYPE;
194
195
196/**
197 * Enumeration of possible image filter types
198 */
199typedef enum OMX_IMAGEFILTERTYPE {
200 OMX_ImageFilterNone,
201 OMX_ImageFilterNoise,
202 OMX_ImageFilterEmboss,
203 OMX_ImageFilterNegative,
204 OMX_ImageFilterSketch,
205 OMX_ImageFilterOilPaint,
206 OMX_ImageFilterHatch,
207 OMX_ImageFilterGpen,
208 OMX_ImageFilterAntialias,
209 OMX_ImageFilterDeRing,
210 OMX_ImageFilterSolarize,
211 OMX_ImageFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
212 OMX_ImageFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
213 OMX_ImageFilterMax = 0x7FFFFFFF
214} OMX_IMAGEFILTERTYPE;
215
216
217/**
218 * Image filter configuration
219 *
220 * STRUCT MEMBERS:
221 * nSize : Size of the structure in bytes
222 * nVersion : OMX specification version information
223 * nPortIndex : Port that this structure applies to
224 * eImageFilter : Image filter type enumeration
225 */
226typedef struct OMX_CONFIG_IMAGEFILTERTYPE {
227 OMX_U32 nSize;
228 OMX_VERSIONTYPE nVersion;
229 OMX_U32 nPortIndex;
230 OMX_IMAGEFILTERTYPE eImageFilter;
231} OMX_CONFIG_IMAGEFILTERTYPE;
232
233
234/**
235 * Customized U and V for color enhancement
236 *
237 * STRUCT MEMBERS:
238 * nSize : Size of the structure in bytes
239 * nVersion : OMX specification version information
240 * nPortIndex : Port that this structure applies to
241 * bColorEnhancement : Enable/disable color enhancement
242 * nCustomizedU : Practical values: 16-240, range: 0-255, value set for
243 * U component
244 * nCustomizedV : Practical values: 16-240, range: 0-255, value set for
245 * V component
246 */
247typedef struct OMX_CONFIG_COLORENHANCEMENTTYPE {
248 OMX_U32 nSize;
249 OMX_VERSIONTYPE nVersion;
250 OMX_U32 nPortIndex;
251 OMX_BOOL bColorEnhancement;
252 OMX_U8 nCustomizedU;
253 OMX_U8 nCustomizedV;
254} OMX_CONFIG_COLORENHANCEMENTTYPE;
255
256
257/**
258 * Define color key and color key mask
259 *
260 * STRUCT MEMBERS:
261 * nSize : Size of the structure in bytes
262 * nVersion : OMX specification version information
263 * nPortIndex : Port that this structure applies to
264 * nARGBColor : 32bit Alpha, Red, Green, Blue Color
265 * nARGBMask : 32bit Mask for Alpha, Red, Green, Blue channels
266 */
267typedef struct OMX_CONFIG_COLORKEYTYPE {
268 OMX_U32 nSize;
269 OMX_VERSIONTYPE nVersion;
270 OMX_U32 nPortIndex;
271 OMX_U32 nARGBColor;
272 OMX_U32 nARGBMask;
273} OMX_CONFIG_COLORKEYTYPE;
274
275
276/**
277 * List of color blend types for pre/post processing
278 *
279 * ENUMS:
280 * None : No color blending present
281 * AlphaConstant : Function is (alpha_constant * src) +
282 * (1 - alpha_constant) * dst)
283 * AlphaPerPixel : Function is (alpha * src) + (1 - alpha) * dst)
284 * Alternate : Function is alternating pixels from src and dst
285 * And : Function is (src & dst)
286 * Or : Function is (src | dst)
287 * Invert : Function is ~src
288 */
289typedef enum OMX_COLORBLENDTYPE {
290 OMX_ColorBlendNone,
291 OMX_ColorBlendAlphaConstant,
292 OMX_ColorBlendAlphaPerPixel,
293 OMX_ColorBlendAlternate,
294 OMX_ColorBlendAnd,
295 OMX_ColorBlendOr,
296 OMX_ColorBlendInvert,
297 OMX_ColorBlendKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
298 OMX_ColorBlendVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
299 OMX_ColorBlendMax = 0x7FFFFFFF
300} OMX_COLORBLENDTYPE;
301
302
303/**
304 * Color blend configuration
305 *
306 * STRUCT MEMBERS:
307 * nSize : Size of the structure in bytes
308 * nVersion : OMX specification version information
309 * nPortIndex : Port that this structure applies to
310 * nRGBAlphaConstant : Constant global alpha values when global alpha is used
311 * eColorBlend : Color blend type enumeration
312 */
313typedef struct OMX_CONFIG_COLORBLENDTYPE {
314 OMX_U32 nSize;
315 OMX_VERSIONTYPE nVersion;
316 OMX_U32 nPortIndex;
317 OMX_U32 nRGBAlphaConstant;
318 OMX_COLORBLENDTYPE eColorBlend;
319} OMX_CONFIG_COLORBLENDTYPE;
320
321
322/**
323 * Hold frame dimension
324 *
325 * STRUCT MEMBERS:
326 * nSize : Size of the structure in bytes
327 * nVersion : OMX specification version information
328 * nPortIndex : Port that this structure applies to
329 * nWidth : Frame width in pixels
330 * nHeight : Frame height in pixels
331 */
332typedef struct OMX_FRAMESIZETYPE {
333 OMX_U32 nSize;
334 OMX_VERSIONTYPE nVersion;
335 OMX_U32 nPortIndex;
336 OMX_U32 nWidth;
337 OMX_U32 nHeight;
338} OMX_FRAMESIZETYPE;
339
340
341/**
342 * Rotation configuration
343 *
344 * STRUCT MEMBERS:
345 * nSize : Size of the structure in bytes
346 * nVersion : OMX specification version information
347 * nPortIndex : Port that this structure applies to
348 * nRotation : +/- integer rotation value
349 */
350typedef struct OMX_CONFIG_ROTATIONTYPE {
351 OMX_U32 nSize;
352 OMX_VERSIONTYPE nVersion;
353 OMX_U32 nPortIndex;
354 OMX_S32 nRotation;
355} OMX_CONFIG_ROTATIONTYPE;
356
357
358/**
359 * Possible mirroring directions for pre/post processing
360 *
361 * ENUMS:
362 * None : No mirroring
363 * Vertical : Vertical mirroring, flip on X axis
364 * Horizontal : Horizontal mirroring, flip on Y axis
365 * Both : Both vertical and horizontal mirroring
366 */
367typedef enum OMX_MIRRORTYPE {
368 OMX_MirrorNone = 0,
369 OMX_MirrorVertical,
370 OMX_MirrorHorizontal,
371 OMX_MirrorBoth,
372 OMX_MirrorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
373 OMX_MirrorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
374 OMX_MirrorMax = 0x7FFFFFFF
375} OMX_MIRRORTYPE;
376
377
378/**
379 * Mirroring configuration
380 *
381 * STRUCT MEMBERS:
382 * nSize : Size of the structure in bytes
383 * nVersion : OMX specification version information
384 * nPortIndex : Port that this structure applies to
385 * eMirror : Mirror type enumeration
386 */
387typedef struct OMX_CONFIG_MIRRORTYPE {
388 OMX_U32 nSize;
389 OMX_VERSIONTYPE nVersion;
390 OMX_U32 nPortIndex;
391 OMX_MIRRORTYPE eMirror;
392} OMX_CONFIG_MIRRORTYPE;
393
394
395/**
396 * Position information only
397 *
398 * STRUCT MEMBERS:
399 * nSize : Size of the structure in bytes
400 * nVersion : OMX specification version information
401 * nPortIndex : Port that this structure applies to
402 * nX : X coordinate for the point
403 * nY : Y coordinate for the point
404 */
405typedef struct OMX_CONFIG_POINTTYPE {
406 OMX_U32 nSize;
407 OMX_VERSIONTYPE nVersion;
408 OMX_U32 nPortIndex;
409 OMX_S32 nX;
410 OMX_S32 nY;
411} OMX_CONFIG_POINTTYPE;
412
413
414/**
415 * Frame size plus position
416 *
417 * STRUCT MEMBERS:
418 * nSize : Size of the structure in bytes
419 * nVersion : OMX specification version information
420 * nPortIndex : Port that this structure applies to
421 * nLeft : X Coordinate of the top left corner of the rectangle
422 * nTop : Y Coordinate of the top left corner of the rectangle
423 * nWidth : Width of the rectangle
424 * nHeight : Height of the rectangle
425 */
426typedef struct OMX_CONFIG_RECTTYPE {
427 OMX_U32 nSize;
428 OMX_VERSIONTYPE nVersion;
429 OMX_U32 nPortIndex;
430 OMX_S32 nLeft;
431 OMX_S32 nTop;
432 OMX_U32 nWidth;
433 OMX_U32 nHeight;
434} OMX_CONFIG_RECTTYPE;
435
436
437/**
438 * Deblocking state; it is required to be set up before starting the codec
439 *
440 * STRUCT MEMBERS:
441 * nSize : Size of the structure in bytes
442 * nVersion : OMX specification version information
443 * nPortIndex : Port that this structure applies to
444 * bDeblocking : Enable/disable deblocking mode
445 */
446typedef struct OMX_PARAM_DEBLOCKINGTYPE {
447 OMX_U32 nSize;
448 OMX_VERSIONTYPE nVersion;
449 OMX_U32 nPortIndex;
450 OMX_BOOL bDeblocking;
451} OMX_PARAM_DEBLOCKINGTYPE;
452
453
454/**
455 * Stabilization state
456 *
457 * STRUCT MEMBERS:
458 * nSize : Size of the structure in bytes
459 * nVersion : OMX specification version information
460 * nPortIndex : Port that this structure applies to
461 * bStab : Enable/disable frame stabilization state
462 */
463typedef struct OMX_CONFIG_FRAMESTABTYPE {
464 OMX_U32 nSize;
465 OMX_VERSIONTYPE nVersion;
466 OMX_U32 nPortIndex;
467 OMX_BOOL bStab;
468} OMX_CONFIG_FRAMESTABTYPE;
469
470
471/**
472 * White Balance control type
473 *
474 * STRUCT MEMBERS:
475 * SunLight : Referenced in JSR-234
476 * Flash : Optimal for device's integrated flash
477 */
478typedef enum OMX_WHITEBALCONTROLTYPE {
479 OMX_WhiteBalControlOff = 0,
480 OMX_WhiteBalControlAuto,
481 OMX_WhiteBalControlSunLight,
482 OMX_WhiteBalControlCloudy,
483 OMX_WhiteBalControlShade,
484 OMX_WhiteBalControlTungsten,
485 OMX_WhiteBalControlFluorescent,
486 OMX_WhiteBalControlIncandescent,
487 OMX_WhiteBalControlFlash,
488 OMX_WhiteBalControlHorizon,
489 OMX_WhiteBalControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
490 OMX_WhiteBalControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
491 OMX_WhiteBalControlMax = 0x7FFFFFFF
492} OMX_WHITEBALCONTROLTYPE;
493
494
495/**
496 * White Balance control configuration
497 *
498 * STRUCT MEMBERS:
499 * nSize : Size of the structure in bytes
500 * nVersion : OMX specification version information
501 * nPortIndex : Port that this structure applies to
502 * eWhiteBalControl : White balance enumeration
503 */
504typedef struct OMX_CONFIG_WHITEBALCONTROLTYPE {
505 OMX_U32 nSize;
506 OMX_VERSIONTYPE nVersion;
507 OMX_U32 nPortIndex;
508 OMX_WHITEBALCONTROLTYPE eWhiteBalControl;
509} OMX_CONFIG_WHITEBALCONTROLTYPE;
510
511
512/**
513 * Exposure control type
514 */
515typedef enum OMX_EXPOSURECONTROLTYPE {
516 OMX_ExposureControlOff = 0,
517 OMX_ExposureControlAuto,
518 OMX_ExposureControlNight,
519 OMX_ExposureControlBackLight,
520 OMX_ExposureControlSpotLight,
521 OMX_ExposureControlSports,
522 OMX_ExposureControlSnow,
523 OMX_ExposureControlBeach,
524 OMX_ExposureControlLargeAperture,
525 OMX_ExposureControlSmallApperture,
526 OMX_ExposureControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
527 OMX_ExposureControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
528 OMX_ExposureControlMax = 0x7FFFFFFF
529} OMX_EXPOSURECONTROLTYPE;
530
531
532/**
533 * White Balance control configuration
534 *
535 * STRUCT MEMBERS:
536 * nSize : Size of the structure in bytes
537 * nVersion : OMX specification version information
538 * nPortIndex : Port that this structure applies to
539 * eExposureControl : Exposure control enumeration
540 */
541typedef struct OMX_CONFIG_EXPOSURECONTROLTYPE {
542 OMX_U32 nSize;
543 OMX_VERSIONTYPE nVersion;
544 OMX_U32 nPortIndex;
545 OMX_EXPOSURECONTROLTYPE eExposureControl;
546} OMX_CONFIG_EXPOSURECONTROLTYPE;
547
548
549/**
550 * Defines sensor supported mode.
551 *
552 * STRUCT MEMBERS:
553 * nSize : Size of the structure in bytes
554 * nVersion : OMX specification version information
555 * nPortIndex : Port that this structure applies to
556 * nFrameRate : Single shot mode is indicated by a 0
557 * bOneShot : Enable for single shot, disable for streaming
558 * sFrameSize : Framesize
559 */
560typedef struct OMX_PARAM_SENSORMODETYPE {
561 OMX_U32 nSize;
562 OMX_VERSIONTYPE nVersion;
563 OMX_U32 nPortIndex;
564 OMX_U32 nFrameRate;
565 OMX_BOOL bOneShot;
566 OMX_FRAMESIZETYPE sFrameSize;
567} OMX_PARAM_SENSORMODETYPE;
568
569
570/**
571 * Defines contrast level
572 *
573 * STRUCT MEMBERS:
574 * nSize : Size of the structure in bytes
575 * nVersion : OMX specification version information
576 * nPortIndex : Port that this structure applies to
577 * nContrast : Values allowed for contrast -100 to 100, zero means no change
578 */
579typedef struct OMX_CONFIG_CONTRASTTYPE {
580 OMX_U32 nSize;
581 OMX_VERSIONTYPE nVersion;
582 OMX_U32 nPortIndex;
583 OMX_S32 nContrast;
584} OMX_CONFIG_CONTRASTTYPE;
585
586
587/**
588 * Defines brightness level
589 *
590 * STRUCT MEMBERS:
591 * nSize : Size of the structure in bytes
592 * nVersion : OMX specification version information
593 * nPortIndex : Port that this structure applies to
594 * nBrightness : 0-100%
595 */
596typedef struct OMX_CONFIG_BRIGHTNESSTYPE {
597 OMX_U32 nSize;
598 OMX_VERSIONTYPE nVersion;
599 OMX_U32 nPortIndex;
600 OMX_U32 nBrightness;
601} OMX_CONFIG_BRIGHTNESSTYPE;
602
603
604/**
605 * Defines backlight level configuration for a video sink, e.g. LCD panel
606 *
607 * STRUCT MEMBERS:
608 * nSize : Size of the structure in bytes
609 * nVersion : OMX specification version information
610 * nPortIndex : Port that this structure applies to
611 * nBacklight : Values allowed for backlight 0-100%
612 * nTimeout : Number of milliseconds before backlight automatically turns
613 * off. A value of 0x0 disables backight timeout
614 */
615typedef struct OMX_CONFIG_BACKLIGHTTYPE {
616 OMX_U32 nSize;
617 OMX_VERSIONTYPE nVersion;
618 OMX_U32 nPortIndex;
619 OMX_U32 nBacklight;
620 OMX_U32 nTimeout;
621} OMX_CONFIG_BACKLIGHTTYPE;
622
623
624/**
625 * Defines setting for Gamma
626 *
627 * STRUCT MEMBERS:
628 * nSize : Size of the structure in bytes
629 * nVersion : OMX specification version information
630 * nPortIndex : Port that this structure applies to
631 * nGamma : Values allowed for gamma -100 to 100, zero means no change
632 */
633typedef struct OMX_CONFIG_GAMMATYPE {
634 OMX_U32 nSize;
635 OMX_VERSIONTYPE nVersion;
636 OMX_U32 nPortIndex;
637 OMX_S32 nGamma;
638} OMX_CONFIG_GAMMATYPE;
639
640
641/**
642 * Define for setting saturation
643 *
644 * STRUCT MEMBERS:
645 * nSize : Size of the structure in bytes
646 * nVersion : OMX specification version information
647 * nPortIndex : Port that this structure applies to
648 * nSaturation : Values allowed for saturation -100 to 100, zero means
649 * no change
650 */
651typedef struct OMX_CONFIG_SATURATIONTYPE {
652 OMX_U32 nSize;
653 OMX_VERSIONTYPE nVersion;
654 OMX_U32 nPortIndex;
655 OMX_S32 nSaturation;
656} OMX_CONFIG_SATURATIONTYPE;
657
658
659/**
660 * Define for setting Lightness
661 *
662 * STRUCT MEMBERS:
663 * nSize : Size of the structure in bytes
664 * nVersion : OMX specification version information
665 * nPortIndex : Port that this structure applies to
666 * nLightness : Values allowed for lightness -100 to 100, zero means no
667 * change
668 */
669typedef struct OMX_CONFIG_LIGHTNESSTYPE {
670 OMX_U32 nSize;
671 OMX_VERSIONTYPE nVersion;
672 OMX_U32 nPortIndex;
673 OMX_S32 nLightness;
674} OMX_CONFIG_LIGHTNESSTYPE;
675
676
677/**
678 * Plane blend configuration
679 *
680 * STRUCT MEMBERS:
681 * nSize : Size of the structure in bytes
682 * nVersion : OMX specification version information
683 * nPortIndex : Index of input port associated with the plane.
684 * nDepth : Depth of the plane in relation to the screen. Higher
685 * numbered depths are "behind" lower number depths.
686 * This number defaults to the Port Index number.
687 * nAlpha : Transparency blending component for the entire plane.
688 * See blending modes for more detail.
689 */
690typedef struct OMX_CONFIG_PLANEBLENDTYPE {
691 OMX_U32 nSize;
692 OMX_VERSIONTYPE nVersion;
693 OMX_U32 nPortIndex;
694 OMX_U32 nDepth;
695 OMX_U32 nAlpha;
696} OMX_CONFIG_PLANEBLENDTYPE;
697
698
699/**
700 * Define interlace type
701 *
702 * STRUCT MEMBERS:
703 * nSize : Size of the structure in bytes
704 * nVersion : OMX specification version information
705 * nPortIndex : Port that this structure applies to
706 * bEnable : Enable control variable for this functionality
707 * (see below)
708 * nInterleavePortIndex : Index of input or output port associated with
709 * the interleaved plane.
710 * pPlanarPortIndexes[4] : Index of input or output planar ports.
711 */
712typedef struct OMX_PARAM_INTERLEAVETYPE {
713 OMX_U32 nSize;
714 OMX_VERSIONTYPE nVersion;
715 OMX_U32 nPortIndex;
716 OMX_BOOL bEnable;
717 OMX_U32 nInterleavePortIndex;
718} OMX_PARAM_INTERLEAVETYPE;
719
720
721/**
722 * Defines the picture effect used for an input picture
723 */
724typedef enum OMX_TRANSITIONEFFECTTYPE {
725 OMX_EffectNone,
726 OMX_EffectFadeFromBlack,
727 OMX_EffectFadeToBlack,
728 OMX_EffectUnspecifiedThroughConstantColor,
729 OMX_EffectDissolve,
730 OMX_EffectWipe,
731 OMX_EffectUnspecifiedMixOfTwoScenes,
732 OMX_EffectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
733 OMX_EffectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
734 OMX_EffectMax = 0x7FFFFFFF
735} OMX_TRANSITIONEFFECTTYPE;
736
737
738/**
739 * Structure used to configure current transition effect
740 *
741 * STRUCT MEMBERS:
742 * nSize : Size of the structure in bytes
743 * nVersion : OMX specification version information
744 * nPortIndex : Port that this structure applies to
745 * eEffect : Effect to enable
746 */
747typedef struct OMX_CONFIG_TRANSITIONEFFECTTYPE {
748 OMX_U32 nSize;
749 OMX_VERSIONTYPE nVersion;
750 OMX_U32 nPortIndex;
751 OMX_TRANSITIONEFFECTTYPE eEffect;
752} OMX_CONFIG_TRANSITIONEFFECTTYPE;
753
754
755/**
756 * Defines possible data unit types for encoded video data. The data unit
757 * types are used both for encoded video input for playback as well as
758 * encoded video output from recording.
759 */
760typedef enum OMX_DATAUNITTYPE {
761 OMX_DataUnitCodedPicture,
762 OMX_DataUnitVideoSegment,
763 OMX_DataUnitSeveralSegments,
764 OMX_DataUnitArbitraryStreamSection,
765 OMX_DataUnitKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
766 OMX_DataUnitVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
767 OMX_DataUnitMax = 0x7FFFFFFF
768} OMX_DATAUNITTYPE;
769
770
771/**
772 * Defines possible encapsulation types for coded video data unit. The
773 * encapsulation information is used both for encoded video input for
774 * playback as well as encoded video output from recording.
775 */
776typedef enum OMX_DATAUNITENCAPSULATIONTYPE {
777 OMX_DataEncapsulationElementaryStream,
778 OMX_DataEncapsulationGenericPayload,
779 OMX_DataEncapsulationRtpPayload,
780 OMX_DataEncapsulationKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
781 OMX_DataEncapsulationVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
782 OMX_DataEncapsulationMax = 0x7FFFFFFF
783} OMX_DATAUNITENCAPSULATIONTYPE;
784
785
786/**
787 * Structure used to configure the type of being decoded/encoded
788 */
789typedef struct OMX_PARAM_DATAUNITTYPE {
790 OMX_U32 nSize; /**< Size of the structure in bytes */
791 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
792 OMX_U32 nPortIndex; /**< Port that this structure applies to */
793 OMX_DATAUNITTYPE eUnitType;
794 OMX_DATAUNITENCAPSULATIONTYPE eEncapsulationType;
795} OMX_PARAM_DATAUNITTYPE;
796
797
798/**
799 * Defines dither types
800 */
801typedef enum OMX_DITHERTYPE {
802 OMX_DitherNone,
803 OMX_DitherOrdered,
804 OMX_DitherErrorDiffusion,
805 OMX_DitherOther,
806 OMX_DitherKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
807 OMX_DitherVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
808 OMX_DitherMax = 0x7FFFFFFF
809} OMX_DITHERTYPE;
810
811
812/**
813 * Structure used to configure current type of dithering
814 */
815typedef struct OMX_CONFIG_DITHERTYPE {
816 OMX_U32 nSize; /**< Size of the structure in bytes */
817 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
818 OMX_U32 nPortIndex; /**< Port that this structure applies to */
819 OMX_DITHERTYPE eDither; /**< Type of dithering to use */
820} OMX_CONFIG_DITHERTYPE;
821
822typedef struct OMX_CONFIG_CAPTUREMODETYPE {
823 OMX_U32 nSize;
824 OMX_VERSIONTYPE nVersion;
825 OMX_U32 nPortIndex; /**< Port that this structure applies to */
826 OMX_BOOL bContinuous; /**< If true then ignore frame rate and emit capture
827 * data as fast as possible (otherwise obey port's frame rate). */
828 OMX_BOOL bFrameLimited; /**< If true then terminate capture after the port emits the
829 * specified number of frames (otherwise the port does not
830 * terminate the capture until instructed to do so by the client).
831 * Even if set, the client may manually terminate the capture prior
832 * to reaching the limit. */
833 OMX_U32 nFrameLimit; /**< Limit on number of frames emitted during a capture (only
834 * valid if bFrameLimited is set). */
835} OMX_CONFIG_CAPTUREMODETYPE;
836
837typedef enum OMX_METERINGTYPE {
838
839 OMX_MeteringModeAverage, /**< Center-weighted average metering. */
840 OMX_MeteringModeSpot, /**< Spot (partial) metering. */
841 OMX_MeteringModeMatrix, /**< Matrix or evaluative metering. */
842
843 OMX_MeteringKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
844 OMX_MeteringVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
845 OMX_EVModeMax = 0x7fffffff
846} OMX_METERINGTYPE;
847
848typedef struct OMX_CONFIG_EXPOSUREVALUETYPE {
849 OMX_U32 nSize;
850 OMX_VERSIONTYPE nVersion;
851 OMX_U32 nPortIndex;
852 OMX_METERINGTYPE eMetering;
853 OMX_S32 xEVCompensation; /**< Fixed point value stored as Q16 */
854 OMX_U32 nApertureFNumber; /**< e.g. nApertureFNumber = 2 implies "f/2" - Q16 format */
855 OMX_BOOL bAutoAperture; /**< Whether aperture number is defined automatically */
856 OMX_U32 nShutterSpeedMsec; /**< Shutterspeed in milliseconds */
857 OMX_BOOL bAutoShutterSpeed; /**< Whether shutter speed is defined automatically */
858 OMX_U32 nSensitivity; /**< e.g. nSensitivity = 100 implies "ISO 100" */
859 OMX_BOOL bAutoSensitivity; /**< Whether sensitivity is defined automatically */
860} OMX_CONFIG_EXPOSUREVALUETYPE;
861
862/**
863 * Focus region configuration
864 *
865 * STRUCT MEMBERS:
866 * nSize : Size of the structure in bytes
867 * nVersion : OMX specification version information
868 * nPortIndex : Port that this structure applies to
869 * bCenter : Use center region as focus region of interest
870 * bLeft : Use left region as focus region of interest
871 * bRight : Use right region as focus region of interest
872 * bTop : Use top region as focus region of interest
873 * bBottom : Use bottom region as focus region of interest
874 * bTopLeft : Use top left region as focus region of interest
875 * bTopRight : Use top right region as focus region of interest
876 * bBottomLeft : Use bottom left region as focus region of interest
877 * bBottomRight : Use bottom right region as focus region of interest
878 */
879typedef struct OMX_CONFIG_FOCUSREGIONTYPE {
880 OMX_U32 nSize;
881 OMX_VERSIONTYPE nVersion;
882 OMX_U32 nPortIndex;
883 OMX_BOOL bCenter;
884 OMX_BOOL bLeft;
885 OMX_BOOL bRight;
886 OMX_BOOL bTop;
887 OMX_BOOL bBottom;
888 OMX_BOOL bTopLeft;
889 OMX_BOOL bTopRight;
890 OMX_BOOL bBottomLeft;
891 OMX_BOOL bBottomRight;
892} OMX_CONFIG_FOCUSREGIONTYPE;
893
894/**
895 * Focus Status type
896 */
897typedef enum OMX_FOCUSSTATUSTYPE {
898 OMX_FocusStatusOff = 0,
899 OMX_FocusStatusRequest,
900 OMX_FocusStatusReached,
901 OMX_FocusStatusUnableToReach,
902 OMX_FocusStatusLost,
903 OMX_FocusStatusKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
904 OMX_FocusStatusVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
905 OMX_FocusStatusMax = 0x7FFFFFFF
906} OMX_FOCUSSTATUSTYPE;
907
908/**
909 * Focus status configuration
910 *
911 * STRUCT MEMBERS:
912 * nSize : Size of the structure in bytes
913 * nVersion : OMX specification version information
914 * nPortIndex : Port that this structure applies to
915 * eFocusStatus : Specifies the focus status
916 * bCenterStatus : Use center region as focus region of interest
917 * bLeftStatus : Use left region as focus region of interest
918 * bRightStatus : Use right region as focus region of interest
919 * bTopStatus : Use top region as focus region of interest
920 * bBottomStatus : Use bottom region as focus region of interest
921 * bTopLeftStatus : Use top left region as focus region of interest
922 * bTopRightStatus : Use top right region as focus region of interest
923 * bBottomLeftStatus : Use bottom left region as focus region of interest
924 * bBottomRightStatus : Use bottom right region as focus region of interest
925 */
926typedef struct OMX_PARAM_FOCUSSTATUSTYPE {
927 OMX_U32 nSize;
928 OMX_VERSIONTYPE nVersion;
929 OMX_U32 nPortIndex;
930 OMX_FOCUSSTATUSTYPE eFocusStatus;
931 OMX_BOOL bCenterStatus;
932 OMX_BOOL bLeftStatus;
933 OMX_BOOL bRightStatus;
934 OMX_BOOL bTopStatus;
935 OMX_BOOL bBottomStatus;
936 OMX_BOOL bTopLeftStatus;
937 OMX_BOOL bTopRightStatus;
938 OMX_BOOL bBottomLeftStatus;
939 OMX_BOOL bBottomRightStatus;
940} OMX_PARAM_FOCUSSTATUSTYPE;
941
942/** @} */
943
944#ifdef __cplusplus
945}
946#endif /* __cplusplus */
947
948#endif
949/* File EOF */