1 /*
2  * Copyright (c) 2010, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * *  Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  * *  Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * *  Neither the name of Texas Instruments Incorporated nor the names of
17  *    its contributors may be used to endorse or promote products derived
18  *    from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 /* -------------------------------------------------------------------------- *
34  *
35  * @file:OMX_TI_IVCommon.h
36  * This header defines the structures specific to the config indices of msp_VPPM.
37  *
38  * @path ..\OMAPSW_SysDev\multimedia\omx\khronos1_1\omx_core\inc
39  *
40  * -------------------------------------------------------------------------- */
41 
42 /* ======================================================================== *!
43  *! Revision History
44  *! ==================================================================== */
45 
46 #ifndef OMX_TI_IVCommon_H
47 #define OMX_TI_IVCommon_H
48 
49 #ifdef __cplusplus
50 extern "C" {
51 #endif /* __cplusplus */
52 
53 #include <OMX_IVCommon.h>
54 #include <OMX_Image.h>
55 
56 #define DCC_PATH  "/data/misc/camera/"
57 
58 #define MAX_URI_LENGTH      (OMX_MAX_STRINGNAME_SIZE)
59 #define MAX_ALGOAREAS       (35)
60 
61 /*======================================================================= */
62 /* Enumerated values for operation mode for compressed image
63  *
64  * ENUMS:
65  * Chunk         : Chunk based operation
66  * NonChunk    : Non-chunk based operation
67  */
68  /* ======================================================================= */
69 typedef enum OMX_JPEG_COMPRESSEDMODETYPE {
70     OMX_JPEG_ModeChunk = 0,
71     OMX_JPEG_ModeNonChunk,
72     OMX_JPEG_CompressedmodeMax = 0x7fffffff
73 }OMX_JPEG_COMPRESSEDMODETYPE ;
74 
75 
76 /*======================================================================= */
77 /* Enumerated values for operation mode for uncompressed image
78  *
79  * ENUMS:
80  * Frame   :  Frame based operation
81  * Slice   : Slice based operation
82  * Stitch  : For stitching between image frames
83  * Burst   :  For stitching between image frames
84  */
85  /* ======================================================================= */
86 typedef enum OMX_JPEG_UNCOMPRESSEDMODETYPE {
87     OMX_JPEG_UncompressedModeFrame = 0,
88     OMX_JPEG_UncompressedModeSlice,
89     OMX_JPEG_UncompressedModeStitch,
90     OMX_JPEG_UncompressedModeBurst,
91     OMX_JPEG_UncompressedModeMax = 0x7fffffff
92 }OMX_JPEG_UNCOMPRESSEDMODETYPE;
93 
94 
95 
96 /*======================================================================= */
97 /* Configuration structure for compressed image
98  *
99  * STRUCT MEMBERS:
100  *  nSize                 : Size of the structure in bytes
101  *  nVersion              : OMX specification version information
102  *  nPortIndex            : Port that this structure applies to
103  *  eCompressedImageMode  : Operating mode enumeration for compressed image
104  */
105  /*======================================================================= */
106 typedef struct OMX_JPEG_PARAM_COMPRESSEDMODETYPE{
107     OMX_U32 nSize;
108     OMX_VERSIONTYPE nVersion;
109     OMX_U32 nPortIndex;
110     OMX_JPEG_COMPRESSEDMODETYPE eCompressedImageMode;
111 }OMX_JPEG_PARAM_COMPRESSEDMODETYPE;
112 
113 
114 
115 /*======================================================================= */
116 /* Uncompressed image Operating mode configuration structure
117  *
118  * STRUCT MEMBERS:
119  * nSize                     : Size of the structure in bytes
120  * nVersion                  : OMX specification version information
121  * nPortIndex                : Port that this structure applies to
122  * nBurstLength              : No of frames to be dumped in burst mode
123  * eUncompressedImageMode    : uncompressed image mode information
124  * eSourceType               : Image encode souce info
125  * tRotationInfo             : Rotation related information
126  */
127  /*======================================================================= */
128 typedef struct OMX_JPEG_PARAM_UNCOMPRESSEDMODETYPE{
129     OMX_U32 nSize;
130     OMX_VERSIONTYPE nVersion;
131     OMX_U32 nPortIndex;
132     OMX_U32 nBurstLength;
133     OMX_JPEG_UNCOMPRESSEDMODETYPE eUncompressedImageMode;
134 }OMX_JPEG_PARAM_UNCOMPRESSEDMODETYPE;
135 
136 
137 /*======================================================================= */
138 /* Subregion Decode Parameter configuration structure
139  *
140  * STRUCT MEMBERS:
141  * nSize                     : Size of the structure in bytes
142  * nVersion                  : OMX specification version information
143  * nXOrg                     : Sectional decoding X origin
144  * nYOrg                     : Sectional decoding Y origin
145  * nXLength                  : Sectional decoding X length
146  * nYLength                  : Sectional decoding Y length
147  */
148  /*======================================================================= */
149 typedef struct OMX_IMAGE_PARAM_DECODE_SUBREGION{
150     OMX_U32 nSize;
151     OMX_VERSIONTYPE nVersion;
152     OMX_U32 nXOrg;
153     OMX_U32 nYOrg;
154     OMX_U32 nXLength;
155     OMX_U32 nYLength;
156 }OMX_IMAGE_PARAM_DECODE_SUBREGION;
157 
158 
159 /**
160  * sensor select  types
161  */
162 typedef enum OMX_SENSORSELECT{
163         OMX_PrimarySensor = 0,
164         OMX_SecondarySensor,
165         OMX_TI_StereoSensor,
166         OMX_SensorTypeMax = 0x7fffffff
167 }OMX_SENSORSELECT;
168 
169 /**
170  *
171  * Sensor Select
172  */
173 typedef  struct OMX_CONFIG_SENSORSELECTTYPE {
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_SENSORSELECT eSensor; /**< sensor select */
178 } OMX_CONFIG_SENSORSELECTTYPE;
179 
180 /**
181  * Flicker cancellation types
182  */
183 typedef enum OMX_COMMONFLICKERCANCELTYPE{
184         OMX_FlickerCancelOff = 0,
185         OMX_FlickerCancelAuto,
186         OMX_FlickerCancel50,
187         OMX_FlickerCancel60,
188         OMX_FlickerCancel100,
189         OMX_FlickerCancel120,
190         OMX_FlickerCancelMax = 0x7fffffff
191 }OMX_COMMONFLICKERCANCELTYPE;
192 
193 typedef struct OMX_CONFIG_FLICKERCANCELTYPE {
194    OMX_U32 nSize;
195    OMX_VERSIONTYPE nVersion;
196    OMX_U32 nPortIndex;
197    OMX_COMMONFLICKERCANCELTYPE eFlickerCancel;
198 } OMX_CONFIG_FLICKERCANCELTYPE;
199 
200 
201 /**
202  * Sensor caleberation types
203  */
204 typedef enum OMX_SENSORCALTYPE{
205         OMX_SensorCalFull = 0,
206         OMX_SensorCalQuick,
207         OMX_SensorCalMax = 0x7fffffff
208 }OMX_SENSORCALTYPE;
209 
210 typedef struct OMX_CONFIG_SENSORCALTYPE {
211    OMX_U32 nSize;
212    OMX_VERSIONTYPE nVersion;
213    OMX_U32 nPortIndex;
214    OMX_SENSORCALTYPE eSensorCal;
215 } OMX_CONFIG_SENSORCALTYPE;
216 
217 /**
218  * Scene mode types
219  */
220 typedef enum OMX_SCENEMODETYPE{
221 
222         OMX_Manual = 0,
223         OMX_Closeup,
224         OMX_Portrait,
225         OMX_Landscape,
226         OMX_Underwater,
227         OMX_Sport,
228         OMX_SnowBeach,
229         OMX_Mood,
230         OMX_NightPortrait,
231         OMX_NightIndoor,
232         OMX_Fireworks,
233         OMX_Document, /**< for still image */
234         OMX_Barcode, /**< for still image */
235         OMX_SuperNight, /**< for video */
236         OMX_Cine, /**< for video */
237         OMX_OldFilm, /**< for video */
238         OMX_TI_Action,
239         OMX_TI_Beach,
240         OMX_TI_Candlelight,
241         OMX_TI_Night,
242         OMX_TI_Party,
243         OMX_TI_Portrait,
244         OMX_TI_Snow,
245         OMX_TI_Steadyphoto,
246         OMX_TI_Sunset,
247         OMX_TI_Theatre,
248         OMX_SceneModeMax = 0x7fffffff
249 }OMX_SCENEMODETYPE;
250 
251 typedef struct OMX_CONFIG_SCENEMODETYPE {
252    OMX_U32 nSize;
253    OMX_VERSIONTYPE nVersion;
254    OMX_U32 nPortIndex;
255    OMX_SCENEMODETYPE eSceneMode;
256 } OMX_CONFIG_SCENEMODETYPE;
257 
258  /**
259  * Port specific capture trigger
260  * useful for the usecases with multiple capture ports.
261  *
262  * STRUCT MEMBERS:
263  *  nSize      : Size of the structure in bytes
264  *  nVersion   : OMX specification version information
265  *  nPortIndex : Port that this structure applies to
266  *  bExtCapturing : Start Captre at the specified port. Can be queried to know the status of a specific port.
267  */
268 typedef struct OMX_CONFIG_EXTCAPTURING {
269     OMX_U32 nSize;
270     OMX_VERSIONTYPE nVersion;
271     OMX_U32 nPortIndex;
272     OMX_BOOL bExtCapturing;
273 } OMX_CONFIG_EXTCAPTURING;
274 
275 
276  /**
277  * Digital Zoom Speed
278  *
279  * STRUCT MEMBERS:
280  *  nSize      : Size of the structure in bytes
281  *  nVersion   : OMX specification version information
282  *  nPortIndex : Port that this structure applies to
283  *  nDigitalZoomSpeed      :  Optical zoom speed level. Special values:
284  *      0 - stop current movement
285  *      values from 1 to 254 are mapped proportionally to supported zoom speeds inside optical zoom driver.
286  *      So 1 is slowest available optical zoom speed and 254 is fastest available optical zoom speed
287  *      255 - default optical zoom speed value
288  */
289 typedef struct OMX_CONFIG_DIGITALZOOMSPEEDTYPE {
290    OMX_U32 nSize;
291    OMX_VERSIONTYPE nVersion;
292    OMX_U32 nPortIndex;
293    OMX_U8 nDigitalZoomSpeed;
294 } OMX_CONFIG_DIGITALZOOMSPEEDTYPE;
295 
296 
297  /**
298  * Digital Zoom Target
299  *
300  * STRUCT MEMBERS:
301  *  nSize      : Size of the structure in bytes
302  *  nVersion   : OMX specification version information
303  *  nPortIndex : Port that this structure applies to
304  *  nDigitalZoomTarget      :  Default and minimum is 0. Maximum is determined by the current supported range
305  */
306 
307 typedef struct OMX_CONFIG_DIGITALZOOMTARGETTYPE {
308    OMX_U32 nSize;
309    OMX_VERSIONTYPE nVersion;
310    OMX_U32 nPortIndex;
311    OMX_U32 nDigitalZoomTarget;
312 } OMX_CONFIG_DIGITALZOOMTARGETTYPE;
313 
314 
315 /**
316 * Scale quality enums
317 */
318 typedef enum OMX_SCALEQUALITY{
319         OMX_DefaultScaling = 0, /** <default scaling if nothing is specified > */
320         OMX_BetterScaling,   /** <better scaling> */
321         OMX_BestScaling,  /** <best  scaling> */
322         OMX_AutoScalingQuality,  /** <auto scaling quality> */
323         OMX_FastScaling,   /** <fast scaling, prioritizes speed> */
324         OMX_ScaleQualityMax = 0x7fffffff
325 }OMX_SCALEQUALITY;
326 
327 /**
328 * Scaling Quality Mode
329 */
330 typedef enum OMX_SCALEQUALITYMODE{
331         OMX_SingleFrameScalingMode = 0, /** <default > */
332         OMX_MultiFrameScalingMode,   /** <better scaling> */
333         OMX_AutoScalingMode,  /** <best  scaling> */
334         OMX_ScaleModeMax = 0x7fffffff
335 }OMX_SCALEQUALITYMODE;
336 
337  /**
338  * Rescale quality control type
339  *
340  * STRUCT MEMBERS:
341  *  nSize      : Size of the structure in bytes
342  *  nVersion   : OMX specification version information
343  *  eScaleQuality : controls the quality level.
344  *  eScaleQualityMode      :  controls the scaling algo types
345  */
346 typedef struct OMX_CONFIG_SCALEQUALITYTYPE {
347     OMX_U32 nSize;
348     OMX_VERSIONTYPE nVersion;
349     OMX_U32 nPortIndex;
350     OMX_SCALEQUALITY eScaleQuality;
351     OMX_SCALEQUALITYMODE eScaleQualityMode;
352 } OMX_CONFIG_SCALEQUALITYTYPE;
353 
354 /**
355 * Smooth Zoom mode enum
356 * Starts or stops the Smooth Zoom.  Selecting INCREASE will cause an increasing digital zoom factor (increased cropping),
357 * with a shrinking viewable area and crop height percentage.  Selecting DECREASE will cause a decreasing digital zoom (decreased cropping),
358 * with a growing viewable area and crop height percentage.  The CaptureCropHeight will continue to update based on the SmoothZoomRate until
359 * the SmoothZoomMin or SmoothZoomMax zoom step is reached, the framework minimum zoom step is reached, the SmoothZoomRate becomes 0,
360 * or the SmoothZoomMode is set to OFF.
361 * NOTE: The message payload includes all parts of the message that is NOT part of the message header as listed for the CAM_SEND_DATA message.
362 */
363 typedef enum OMX_SMOOTHZOOMMODE{
364     OMX_Off=0, /**< default OFF */
365     OMX_Increase,
366     OMX_Decrease,
367     OMX_SmoothZoomModeMax = 0x7fffffff
368 }OMX_SMOOTHZOOMMODE;
369 
370 
371  /**
372  * Rescale quality control type
373  *
374  * STRUCT MEMBERS:
375  *  nSize      : Size of the structure in bytes
376  *  nVersion   : OMX specification version information
377  *  eSmoothZoomMode : controls the smooth zoom feature.
378  *  nSmoothZoomRate      :  Values from 0 to 65535 which represents percentage to increase per second, where 65535 = 100%, and 0 = 0%.
379  *  nSmoothZoomQuantize:
380  *  nSmoothZoomThresh
381  *  nSmoothZoomMin
382  *  nSmoothZoomMax
383  */
384 typedef struct OMX_CONFIG_SMOOTHZOOMTYPE {
385     OMX_U32 nSize;
386     OMX_VERSIONTYPE nVersion;
387     OMX_U32 nPortIndex;
388     OMX_SMOOTHZOOMMODE eSmoothZoomMode;
389     OMX_U32 nSmoothZoomRate;
390     OMX_U32 nSmoothZoomQuantize;
391     OMX_U32 nSmoothZoomThresh;
392     OMX_U32 nSmoothZoomMin;
393     OMX_U32 nSmoothZoomMax;
394 } OMX_CONFIG_SMOOTHZOOMTYPE;
395 
396 /**
397  * Enumeration of possible Extended image filter types for OMX_CONFIG_IMAGEFILTERTYPE
398  */
399 typedef enum OMX_EXTIMAGEFILTERTYPE {
400     OMX_ImageFilterSepia = 0x7F000001,
401     OMX_ImageFilterGrayScale,
402     OMX_ImageFilterNatural,
403     OMX_ImageFilterVivid,
404     OMX_ImageFilterColourSwap,
405     OMX_ImageFilterOutOfFocus,
406     OMX_ImageFilterWaterColour,
407     OMX_ImageFilterPastel,
408     OMX_ImageFilterFilm,
409     OMX_TI_ImageFilterBlackWhite,
410     OMX_TI_ImageFilterWhiteBoard,
411     OMX_TI_ImageFilterBlackBoard,
412     OMX_TI_ImageFilterAqua,
413     OMX_TI_ImageFilterPosterize,
414     OMX_ImageFilterTypeMax = 0x7fffffff
415 } OMX_EXTIMAGEFILTERTYPE;
416 
417 
418 /**
419  * Image filter configuration extended
420  *
421  * STRUCT MEMBERS:
422  *  nSize        : Size of the structure in bytes
423  *  nVersion     : OMX specification version information
424  *  nPortIndex   : Port that this structure applies to
425  *  bBlemish : Enable/Disable Blemish correction
426  */
427 typedef struct OMX_CONFIG_BLEMISHTYPE {
428     OMX_U32 nSize;
429     OMX_VERSIONTYPE nVersion;
430     OMX_U32 nPortIndex;
431     OMX_BOOL bBlemish;
432 } OMX_CONFIG_BLEMISHTYPE;
433 
434 /**
435  * Enumeration of Bracket types
436  * OMX_BracketExposureRelativeInEV:
437  *      Exposure value is changed relative to the value set by automatic exposure.
438  *      nBracketStartValue and nBracketStep are in Q16. Increment is additive.
439  * OMX_BracketExposureAbsoluteMs:
440  *      Exposure value is changed in absolute value in ms.
441  *      nBracketStartValue and nBracketStep are in Q16. Increment is multiplicative.
442  * OMX_BracketFocusRelative:
443  *      Focus is adjusted relative to the focus set by auto focus.
444  *      The value is S32 integer, and is the same as adjusting nFocusSteps of OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE relatively.
445  *      Increment is additive.
446  * OMX_BracketFocusAbsolute:
447  *      Focus position is adjusted absolutely. It is the same as setting nFocusSteps of
448  *      OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE relatively for each captures.
449  *      The value should be interpreted as U32 value.  Increment is additive.
450  * OMX_BracketFlashPower:
451  *      Power of flash is adjusted relative to the automatic level. Increment is multiplicative.
452  * OMX_BracketAperture:
453  *      Aperture number relative to the automatic setting. Data in Q16 format. Increment is multiplicative.
454  * OMX_BracketTemporal:
455  *      To suppport temporal bracketing.
456  */
457 typedef enum OMX_BRACKETMODETYPE {
458     OMX_BracketExposureRelativeInEV = 0,
459     OMX_BracketExposureAbsoluteMs,
460     OMX_BracketFocusRelative,
461     OMX_BracketFocusAbsolute,
462     OMX_BracketFlashPower,
463     OMX_BracketAperture,
464     OMX_BracketTemporal,
465     OMX_BracketExposureGainAbsolute,
466     OMX_BracketVectorShot,
467     OMX_BrackerTypeKhronosExtensions = 0x6f000000,
468     OMX_BrackerTypeVendorStartUnused = 0x7f000000,
469     OMX_BracketTypeMax = 0x7FFFFFFF
470 } OMX_BRACKETMODETYPE;
471 
472 typedef struct OMX_CONFIG_BRACKETINGTYPE {
473     OMX_U32 nSize;
474     OMX_VERSIONTYPE nVersion;
475     OMX_U32 nPortIndex;
476     OMX_BRACKETMODETYPE eBracketMode;
477     OMX_U32             nNbrBracketingValues;
478     OMX_S32             nBracketValues[10];     /**< 10 can be assumed */
479     OMX_S32             nBracketValues2[10];     /**< 10 can be assumed */
480 } OMX_CONFIG_BRACKETINGTYPE;
481 
482 
483 /**
484  * Capture mode types
485  * Note: this list could get extended modified based on the type of interenal use-case pipelines implemented within the camera component.
486  *
487  *       OMX_CaptureImageHighSpeedBurst = 0,
488  *       OMX_CaptureImageHighSpeedTemporalBracketing,
489  *       OMX_CaptureImageProfileBase(Base):
490  *       	Base one almost same as Highspeed one.
491  *       OMX_CaptureImageProfileLowLight1(LL1):
492  *       	Includes NSF2 in addition to Base processing
493  *       OMX_CaptureImageProfileLowLight2(LL2):
494  *       	Includes NSF2 and LBCE in addition to Base processing.
495  *       OMX_CaptureImageProfileOpticalCorr1(OC1):
496  *       	Includes LDC in addition to Base processing.
497  *       OMX_CaptureImageProfileOpticalCorr2(OC2):
498  *       	Includes LDC and CAC in addition to Base processing.
499  *       OMX_CaptureImageProfileExtended1(Ext1):
500  *       	Includes NSF2, LBCE, LDC, and CAC in addition to Base
501  *       OMX_CaptureStereoImageCapture:
502  *       	Stereo image capture use-case.
503  *       OMX_CaptureImageMemoryInput:
504  *       	need to take sensor input from INPUT port.
505  *       OMX_CaptureVideo:
506  *       OMX_CaptureHighSpeedVideo:
507  *       OMX_CaptureVideoMemoryInput:
508  *
509  */
510 typedef enum OMX_CAMOPERATINGMODETYPE {
511         OMX_CaptureImageHighSpeedBurst = 0,
512         OMX_CaptureImageHighSpeedTemporalBracketing,
513         OMX_CaptureImageProfileBase,
514         OMX_CaptureImageProfileLowLight1,
515         OMX_CaptureImageProfileLowLight2,
516         OMX_CaptureImageProfileOpticalCorr1,
517         OMX_CaptureImageProfileOpticalCorr2,
518         OMX_CaptureImageProfileExtended1,
519         OMX_CaptureStereoImageCapture,
520         OMX_CaptureImageMemoryInput,
521         OMX_CaptureVideo,
522         OMX_CaptureHighSpeedVideo,
523         OMX_CaptureVideoMemoryInput,
524         OMX_TI_CaptureDummy,
525         OMX_TI_CaptureGestureRecognition,
526         OMX_TI_CaptureImageProfileZeroShutterLag,
527         OMX_TI_SinglePreview,
528         OMX_TI_StereoGestureRecognition,
529         OMX_TI_CPCam,
530         OMX_TI_StereoVideo,
531         OMX_CaptureHighQualityVideo,
532         // Put new entries here so OMX_CamOperatingModeMax always points to
533         // the last one
534         OMX_TI_CamOperatingModeCount,
535         OMX_CamOperatingModeMax = OMX_TI_CamOperatingModeCount - 1,
536         OMX_CamOperatingMode = 0x7fffffff
537 } OMX_CAMOPERATINGMODETYPE;
538 
539 /**
540  * Capture mode setting: applicable to multi shot capture also including bracketing.
541  *
542  * STRUCT MEMBERS:
543  *  nSize        : Size of the structure in bytes
544  *  nVersion     : OMX specification version information
545  *  nPortIndex   : Port that this structure applies to
546  *  eCamOperatingMode : specifies the camera operating mode.
547  */
548 typedef struct OMX_CONFIG_CAMOPERATINGMODETYPE {
549    OMX_U32 nSize;
550    OMX_VERSIONTYPE nVersion;
551    OMX_CAMOPERATINGMODETYPE eCamOperatingMode;
552 } OMX_CONFIG_CAMOPERATINGMODETYPE;
553 
554 
555 /**
556  * Capture mode setting: applicable to multi shot capture also including bracketing.
557  *
558  * STRUCT MEMBERS:
559  *  nSize        : Size of the structure in bytes
560  *  nVersion     : OMX specification version information
561  *  nPortIndex   : Port that this structure applies to
562  *  nFrameRate   : when bContinuous is FALSE, need to define the frame rate of the muti-shot scenario. Since this would be applicable to IMAGE domain port, there is no port specific frame rate.
563  *  nFrameBefore :
564  * 	is specifying how many frames before the capture trigger shall be used.
565  * 	It is implementation dependent how many is supported. This shall only be supported for images and not for video frames.
566  * bPrepareCapture :
567  *	should be set to true when nFrameBefore is greater than zero and before capturing of before-frames should start.
568  *	The component is not allowed to deliver buffers until capturing starts. This shall only be supported for images and not for video frames.
569  * bEnableBracketing :
570  *	should be enabled when bracketing is used. In bracketing mode, one parameter can be changed per each capture.
571  * tBracketConfigType :
572  *	specifies bracket mode to use. Valid only when bEnableBracketing is set.
573  */
574 typedef struct OMX_CONFIG_EXTCAPTUREMODETYPE {
575     OMX_U32 nSize;
576     OMX_VERSIONTYPE nVersion;
577     OMX_U32 nPortIndex;
578     OMX_U32 nFrameRate;
579     OMX_U32 nFrameBefore;
580     OMX_BOOL bPrepareCapture;
581     OMX_BOOL bEnableBracketing;
582     OMX_CONFIG_BRACKETINGTYPE tBracketConfigType;
583 } OMX_CONFIG_EXTCAPTUREMODETYPE;
584 
585 /**
586  * For Extended Focus region Type -
587  */
588 typedef struct OMX_CONFIG_EXTFOCUSREGIONTYPE {
589     OMX_U32 nSize;
590     OMX_VERSIONTYPE nVersion;
591     OMX_U32 nPortIndex;
592     OMX_U32 nRefPortIndex;
593     OMX_S32 nLeft;
594     OMX_S32 nTop;
595     OMX_U32 nWidth;
596     OMX_U32 nHeight;
597 } OMX_CONFIG_EXTFOCUSREGIONTYPE;
598 
599 /**
600  * Digital Flash Control
601  * STRUCT MEMBERS:
602  *  nSize        : Size of the structure in bytes
603  *  nVersion     : OMX specification version information
604  *  nPortIndex   : Port that this structure applies to
605  *  bDigitalFlash : Digital flash type Enable/Disable -
606  * Specifies whether the digital flash algorithm is enabled or disabled. This overrides the contrast and brightness settings.
607  */
608 typedef struct OMX_CONFIG_DIGITALFLASHTYPE {
609     OMX_U32 nSize;
610     OMX_VERSIONTYPE nVersion;
611     OMX_U32 nPortIndex;
612     OMX_BOOL bDigitalFlash;
613 } OMX_CONFIG_DIGITALFLASHTYPE;
614 
615 
616 
617 /**
618  * Privacy Indicator Enable/Disable
619  * STRUCT MEMBERS:
620  *  nSize        : Size of the structure in bytes
621  *  nVersion     : OMX specification version information
622  *  nPortIndex   : Port that this structure applies to
623  *  bPrivacyIndicator :
624  *        Specifies whether the flash should be used to indicate image or video capture. When flash is not used for exposure,
625  *        flash will be activated after exposure to indicate image capture.
626  *        If video light is not used, the flash can be blinking or constant at low intensity to indicate capture but not affect exposure.
627  *        Specifies whether the digital flash algorithm is enabled or disabled. This overrides the contrast and brightness settings.
628  */
629 typedef struct OMX_CONFIG_PRIVACYINDICATOR {
630     OMX_U32 nSize;
631     OMX_VERSIONTYPE nVersion;
632     OMX_U32 nPortIndex;
633     OMX_BOOL bPrivacyIndicator;
634 } OMX_CONFIG_PRIVACYINDICATOR;
635 
636 
637 /**
638  * Privacy Indicator Enable/Disable
639  * STRUCT MEMBERS:
640  *  nSize        : Size of the structure in bytes
641  *  nVersion     : OMX specification version information
642  *  nPortIndex   : Port that this structure applies to
643  *  bTorchMode :
644  *        Enable/Disable
645  *      nIntensityLevel : relative intensity from 0 - 100
646  *      nDuration : duration in msec
647  */
648 typedef struct OMX_CONFIG_TORCHMODETYPE {
649     OMX_U32 nSize;
650     OMX_VERSIONTYPE nVersion;
651     OMX_U32 nPortIndex;
652     OMX_BOOL bTorchMode;
653     OMX_U32 nIntensityLevel;
654     OMX_U32 nDuration;
655 } OMX_CONFIG_TORCHMODETYPE;
656 
657 
658 
659 /**
660  * Privacy Indicator Enable/Disable
661  * DISABLE - Fire the xenon flash in the usual manner
662  * ENABLE - Reduce the light intensity of the main flash (ex 1EV)
663  *
664  * STRUCT MEMBERS:
665  *  nSize        : Size of the structure in bytes
666  *  nVersion     : OMX specification version information
667  *  nPortIndex   : Port that this structure applies to
668  *  bSlowSync :
669  *        Enable - OMX_TRUE/Disable - OMX_FALSE
670  */
671 typedef struct OMX_CONFIG_SLOWSYNCTYPE {
672     OMX_U32 nSize;
673     OMX_VERSIONTYPE nVersion;
674     OMX_U32 nPortIndex;
675     OMX_BOOL bSlowSync;
676 } OMX_CONFIG_SLOWSYNCTYPE;
677 
678 
679 /**
680  * Focus control extended enums. use this along with OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE
681  */
682 typedef enum OMX_IMAGE_EXTFOCUSCONTROLTYPE {
683     OMX_IMAGE_FocusControlAutoMacro = 0x7F000001, /**< Reserved region for introducing Vendor Extensions */
684     OMX_IMAGE_FocusControlAutoInfinity,
685     OMX_IMAGE_FocusControlHyperfocal,
686     OMX_IMAGE_FocusControlPortrait, /**< from Xena */
687     OMX_IMAGE_FocusControlExtended, /**< from Xena */
688     OMX_IMAGE_FocusControlContinousNormal, /**< from Xena */
689     OMX_IMAGE_FocusControlContinousExtended,     /**< from Xena */
690     OMX_IMAGE_FocusControlContinousFacePriority,
691     OMX_IMAGE_FocusControlContinousRegionPriority,
692     OMX_IMAGE_FocusControlContinousPicture,
693     OMX_IMAGE_FocusControlTypeMax = 0x7fffffff
694 } OMX_IMAGE_EXTFOCUSCONTROLTYPE;
695 
696 
697 
698 /**
699  * Specifies whether the LED can be used to assist in autofocus, due to low lighting conditions.
700  * ENABLE means use as determined by the auto exposure algorithm.
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  *  bFocusAssist :
707  *        Enable - OMX_TRUE/Disable - OMX_FALSE
708  */
709 typedef struct OMX_CONFIG_FOCUSASSISTTYPE {
710     OMX_U32 nSize;
711     OMX_VERSIONTYPE nVersion;
712     OMX_U32 nPortIndex;
713     OMX_BOOL bFocusAssist;
714 } OMX_CONFIG_FOCUSASSISTTYPE;
715 
716 
717 
718 /**
719  *for locking the focus
720  *
721  * STRUCT MEMBERS:
722  *  nSize        : Size of the structure in bytes
723  *  nVersion     : OMX specification version information
724  *  nPortIndex   : Port that this structure applies to
725  *  bFocusLock :
726  *        Enable - OMX_TRUE/Disable - OMX_FALSE
727  */
728 typedef struct OMX_CONFIG_FOCUSLOCKTYPE {
729     OMX_U32 nSize;
730     OMX_VERSIONTYPE nVersion;
731     OMX_U32 nPortIndex;
732     OMX_BOOL bFocusLock;
733 } OMX_CONFIG_FOCUSLOCKTYPE;
734 
735 
736 /**
737  *for locking the White balance
738  *
739  * STRUCT MEMBERS:
740  *  nSize        : Size of the structure in bytes
741  *  nVersion     : OMX specification version information
742  *  nPortIndex   : Port that this structure applies to
743  *  bWhiteBalanceLock :
744  *        Enable - OMX_TRUE/Disable - OMX_FALSE
745  */
746 typedef struct OMX_CONFIG_WHITEBALANCELOCKTYPE {
747     OMX_U32 nSize;
748     OMX_VERSIONTYPE nVersion;
749     OMX_U32 nPortIndex;
750     OMX_BOOL bWhiteBalanceLock;
751 } OMX_CONFIG_WHITEBALANCELOCKTYPE;
752 
753 /**
754  *for locking the Exposure
755  *
756  * STRUCT MEMBERS:
757  *  nSize        : Size of the structure in bytes
758  *  nVersion     : OMX specification version information
759  *  nPortIndex   : Port that this structure applies to
760  *  bExposureLock :
761  *        Enable - OMX_TRUE/Disable - OMX_FALSE
762  */
763 typedef struct OMX_CONFIG_EXPOSURELOCKTYPE {
764     OMX_U32 nSize;
765     OMX_VERSIONTYPE nVersion;
766     OMX_U32 nPortIndex;
767     OMX_BOOL bExposureLock;
768 } OMX_CONFIG_EXPOSURELOCKTYPE;
769 
770 /**
771  *for locking the Exposure
772  *  Simultaneously lock focus, white balance and exposure (and relevant other settings).
773  *
774  * STRUCT MEMBERS:
775  *  nSize        : Size of the structure in bytes
776  *  nVersion     : OMX specification version information
777  *  nPortIndex   : Port that this structure applies to
778  *  bAllLock :
779  *        Enable - OMX_TRUE/Disable - OMX_FALSE
780  */
781 typedef struct OMX_CONFIG_ALLLOCKTYPE {
782     OMX_U32 nSize;
783     OMX_VERSIONTYPE nVersion;
784     OMX_U32 nPortIndex;
785     OMX_BOOL bAllLock;
786 } OMX_CONFIG_ALLLOCKTYPE;
787 
788 /**
789  *for locking
790  *  Simultaneously lock focus, white balance and exposure (and relevant other settings).
791  *
792  * STRUCT MEMBERS:
793  *  nSize        : Size of the structure in bytes
794  *  nVersion     : OMX specification version information
795  *  nPortIndex   : Port that this structure applies to
796  *  bLock :
797  *        Enable - OMX_TRUE/Disable - OMX_FALSE
798  *  bAtCapture:
799  *
800  */
801 typedef struct OMX_IMAGE_CONFIG_LOCKTYPE {
802     OMX_U32 nSize;
803     OMX_VERSIONTYPE nVersion;
804     OMX_U32 nPortIndex;
805     OMX_BOOL bLock;
806     OMX_BOOL bAtCapture;
807 } OMX_IMAGE_CONFIG_LOCKTYPE;
808 
809 /**
810  * processig level types enum
811  */
812 typedef enum OMX_PROCESSINGLEVEL{
813         OMX_Min = 0,
814         OMX_Low,
815         OMX_Medium,
816         OMX_High,
817         OMX_Max,
818         OMX_ProcessingLevelMax = 0x7fffffff
819 }OMX_PROCESSINGLEVEL;
820 
821 /**
822  *processing level type
823  *  Simultaneously lock focus, white balance and exposure (and relevant other settings).
824  *
825  * STRUCT MEMBERS:
826  *  nSize        : Size of the structure in bytes
827  *  nVersion     : OMX specification version information
828  *  nPortIndex   : Port that this structure applies to
829  *  nLevel :
830  *               nLevel hinting processing amount. Range of values is -100 to 100.
831  *               0 causes no change to the image.  Increased values cause increased processing to occur, with 100 applying maximum processing.
832  *               Negative values have the opposite effect of positive values.
833  *  bAuto:
834  *		sets if the processing should be applied according to input data.
835  		It is allowed to combine the hint level with the auto setting,
836  *		i.e. to give a bias to the automatic setting. When set to false, the processing should not take input data into account.
837  */
838 
839 typedef struct OMX_IMAGE_CONFIG_PROCESSINGLEVELTYPE {
840 OMX_U32 nSize;
841 OMX_VERSIONTYPE nVersion;
842 OMX_U32 nPortIndex;
843 OMX_S32 nLevel;
844 OMX_BOOL bAuto;
845 } OMX_IMAGE_CONFIG_PROCESSINGLEVELTYPE;
846 
847 
848 /**
849  * White Balance control type extended enums - to be used along with the structure @OMX_CONFIG_WHITEBALCONTROLTYPE
850  *
851  *
852  *
853  */
854 typedef enum OMX_EXTWHITEBALCONTROLTYPE {
855     OMX_WhiteBalControlFacePriorityMode = OMX_WhiteBalControlVendorStartUnused + 1, /**<  */
856     OMX_TI_WhiteBalControlSunset,
857     OMX_TI_WhiteBalControlShade,
858     OMX_TI_WhiteBalControlTwilight,
859     OMX_TI_WhiteBalControlWarmFluorescent,
860     OMX_TI_WhiteBalControlMax = 0x7fffffff
861 } OMX_EXTWHITEBALCONTROLTYPE;
862 
863 /**
864  *white balance gain type
865  *  xWhiteBalanceGain and xWhiteBalanceOffset represents gain and offset for R, Gr, Gb, B channels respectively in Q16 format. \
866  *  For example, new red pixel value = xWhiteBalanceGain[1]* the current pixel value + xWhiteBalanceOffset[1].
867  *  All values assume that maximum value is 255. If internal implementation uses higher dynamic range, this value should be adjusted internally.
868  *  nWhiteThreshhold  represents thresholds for "white" area measurments in Q16 format.
869  *
870  * STRUCT MEMBERS:
871  *  nSize        : Size of the structure in bytes
872  *  nVersion     : OMX specification version information
873  *  nPortIndex   : Port that this structure applies to
874  *
875  */
876 typedef struct OMX_CONFIG_WHITEBALGAINTYPE {
877     OMX_U32 nSize;
878     OMX_VERSIONTYPE nVersion;
879     OMX_U32 nPortIndex;
880     OMX_S32 xWhiteBalanceGain[4];
881     OMX_S32 xWhiteBalanceOffset[4];
882     OMX_S32 nWhiteThreshhold[4];
883 } OMX_CONFIG_WHITEBALGAINTYPE;
884 
885 /**
886  *  This structure represents linear color conversion from one space to another.  For example, to conversion from one RGB color into another RGB color space can be represented as
887  *  R' =  xColorMatrix[1][1]*R + xColorMatrix[1][2]*G + xColorMatrix[1][3]*B + xColorOffset[1]
888  *  G' = xColorMatrix[2][1]*R + xColorMatrix[2][2]*G + xColorMatrix[2][3]*B + xColorOffset[2]
889  *  B' = xColorMatrix[3][1]*R + xColorMatrix[3][2]*G + xColorMatrix[3][3]*B + xColorOffset[3]
890  *  Both xColorMatrix and xColorOffset are represented as Q16 value.
891  *  bFullColorRange represents represents whether valid range of color is 0 to 255 (when set to TRUE) or 16 to 235 (for FALSE).
892  *  Again all values assume that maximum value is 255. If internal implementation uses higher dynamic range, this value should be adjusted internally.
893  *
894  *
895  * STRUCT MEMBERS:
896  *  nSize        : Size of the structure in bytes
897  *  nVersion     : OMX specification version information
898  *  nPortIndex   : Port that this structure applies to
899  *
900  */
901 typedef struct OMX_CONFIG_EXT_COLORCONVERSIONTYPE {
902     OMX_U32 nSize;
903     OMX_VERSIONTYPE nVersion;
904     OMX_U32 nPortIndex;
905     OMX_S32 xColorMatrix[3][3];
906     OMX_S32 xColorOffset[3];
907     OMX_BOOL bFullColorRange;
908 }OMX_CONFIG_EXT_COLORCONVERSIONTYPE;
909 
910 
911 /**
912  * xGamma represents lool-up table for gamma correction in Q16 format.
913  * All values assume that maximum value is 255. If internal implementation uses higher dynamic range, this value should be adjusted internally.
914  *
915  *
916  *
917  * STRUCT MEMBERS:
918  *  nSize        : Size of the structure in bytes
919  *  nVersion     : OMX specification version information
920  *  nPortIndex   : Port that this structure applies to
921  *
922  */
923 typedef struct OMX_CONFIG_GAMMATABLETYPE {
924     OMX_U32 nSize;
925     OMX_VERSIONTYPE nVersion;
926     OMX_U32 nPortIndex;
927     OMX_U32 xGamma[3][256];
928 }OMX_CONFIG_GAMMATABLETYPE;
929 
930 
931 
932 /**
933  * processig types
934  */
935 typedef enum OMX_PROCESSINGTYPE{
936         OMX_BloomingReduction = 0,
937         OMX_Denoise,
938         OMX_Sharpening,
939         OMX_Deblurring,
940         OMX_Demosaicing,
941         OMX_ContrastEnhancement,
942         OMX_ProcessingTypeMax = 0x7fffffff
943 }OMX_PROCESSINGTYPE;
944 
945 
946 typedef  struct OMX_CONFIGPROCESSINGORDERTYPE {
947 OMX_U32  nSize; /**< Size of the structure in bytes */
948 OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
949 OMX_U32 nPortIndex; /**< Port that this struct applies to */
950 OMX_U32 nIndex;
951 OMX_PROCESSINGTYPE eProc;
952 } OMX_CONFIGPROCESSINGORDERTYPE;
953 
954 /**
955  * HIST TYPE
956  */
957 typedef enum OMX_HISTTYPE{
958         OMX_HistControlLuminance = 0, /**< Luminance histogram is calculated (Y)*/
959         OMX_HistControlColorComponents, /**< A histogram per color component (R, G, B) is calculated*/
960     OMX_HistControlChrominanceComponents,     /**< A histogram per chrominance component (Cb, Cr) is calculated.*/
961     OMX_HistControl_32BIT_PATCH = 0x7FFFFFFF
962 }OMX_HISTTYPE;
963 
964 /**
965  * Histogram Setting
966  *  nPortIndex is an output port. The port index decides on which port the extra data structur is sent on.
967  *  bFrameLimited is a Boolean used to indicate if measurement shall be terminated after the specified number of
968  *  frames if true frame limited measurement is enabled; otherwise the port does not terminate measurement until
969  *  instructed to do so by the client.
970  *  nFrameLimit is the limit on number of frames measured, this parameter is only valid if bFrameLimited is enabled.
971  *  bMeasure is a Boolean that should be set to true when measurement shall begin, otherwise set to false. Query will give status information on if measurement is ongoing or not.
972  *  nBins specifies the number of histogram bins. When queried with set to zero, the respons gives the maximum number of bins allowed.
973  *  nLeft is the leftmost coordinate of the measurement area rectangle.
974  *  nTop is the topmost coordinate of the measurement area rectangle.
975  *  nWidth is the width of the measurement area rectangle in pixels.
976  *  nHeight is the height of the measurement area rectangle in pixels.
977  *  eHistType is an enumeration specifying the histogram type
978  *
979  *
980  */
981 
982 typedef struct OMX_CONFIG_HISTOGRAMTYPE {
983     OMX_U32 nSize;
984     OMX_VERSIONTYPE nVersion;
985     OMX_U32 nPortIndex;
986     OMX_BOOL bFrameLimited;
987     OMX_U32 nFrameLimit;
988     OMX_BOOL bMeasure;
989     OMX_U32 nBins;
990     OMX_S32 nLeft;
991     OMX_S32 nTop;
992     OMX_U32 nWidth;
993     OMX_U32 nHeight;
994     OMX_HISTTYPE eHistType;
995 } OMX_CONFIG_HISTOGRAMTYPE;
996 
997 /**
998  * OMX_HISTCOMPONENTTYPE Enumerated Value
999  */
1000 typedef enum OMX_HISTCOMPONENTTYPE{
1001         OMX_HISTCOMP_Y = 0, /**<    Luminance histogram (Y) */
1002         OMX_HISTCOMP_YLOG,  /**< Logarithmic luminance histogram (Y)*/
1003         OMX_HISTCOMP_R, /**< Red histogram component (R)*/
1004         OMX_HISTCOMP_G, /**< Green histogram component (G)*/
1005         OMX_HISTCOMP_B, /**< Blue histogram component (B)*/
1006         OMX_HISTCOMP_Cb,    /**< Chroma blue histogram component (Cb)*/
1007     OMX_HISTCOMP_Cr,     /**< Chroma red histogram component (Cr) */
1008     OMX_HISTCOMP_32BIT_PATCH = 0x7FFFFFFF
1009 }OMX_HISTCOMPONENTTYPE;
1010 
1011 /**
1012  * The OMX_TI_CAMERAVIEWTYPE enumeration is used to identify the
1013  * particular camera view and frame type that the rest of
1014  * the data in the structure is associated with.
1015  */
1016 typedef enum OMX_TI_CAMERAVIEWTYPE {
1017     OMX_2D_Prv,         /**< Camera view in 2D for preview */
1018     OMX_2D_Snap,        /**< Camera view in 2D for snapshot */
1019     OMX_2D_Cap,         /**< Camera view in 2D for capture */
1020     OMX_3D_Left_Prv,    /**< Left camera view in 3D for preview */
1021     OMX_3D_Left_Snap,   /**< Left camera view in 3D for snapshot */
1022     OMX_3D_Left_Cap,    /**< Left camera view in 3D for capture */
1023     OMX_3D_Right_Prv,   /**< Right camera view in 3D for preview */
1024     OMX_3D_Right_Snap,  /**< Right camera view in 3D for snapshot */
1025     OMX_3D_Right_Cap,   /**< Right camera view in 3D for capture */
1026     OMX_TI_CAMERAVIEWTYPE_32BIT_PATCH = 0x7FFFFFFF
1027 } OMX_TI_CAMERAVIEWTYPE;
1028 
1029 #define OMX_OTHER_EXTRADATATYPE_SIZE ((OMX_U32)(((OMX_OTHER_EXTRADATATYPE *)0x0)->data))  /**< Size of OMX_OTHER_EXTRADATATYPE
1030                                                                                 without Data[1] and without padding */
1031 
1032 /**
1033  * The extra data having DCC data is described with the following structure.
1034  * This data contains single flags and values
1035  * (not arrays) that have general usage for camera applications.
1036  */
1037 typedef struct OMX_TI_DCCDATATYPE {
1038     OMX_U32               nSize;
1039     OMX_VERSIONTYPE       nVersion;
1040     OMX_U32               nPortIndex;
1041     OMX_TI_CAMERAVIEWTYPE eCameraView;
1042     OMX_U32               nCameraModuleId;
1043     OMX_U32               nDccDescriptorId;
1044     OMX_U32               nAlgorithmVendorId;
1045     OMX_U32               nUseCaseId;
1046     OMX_U32               nOffset;
1047     OMX_PTR               pData;
1048 } OMX_TI_DCCDATATYPE;
1049 /**
1050  * The extra data type to feed the camera re-processing function
1051  */
1052 typedef struct OMX_TI_CAMREPROCMETATYPE {
1053     OMX_U32 nExpTime;
1054     OMX_U32 nGain;
1055 } OMX_TI_CAMREPROCMETATYPE;
1056 
1057 /**
1058  * The extra data vector shot feedback info
1059  *  nConfigId   : Same id that cames with
1060  *                OMX_TI_CONFIG_ENQUEUESHOTCONFIGS::nShotConfig[x].nConfigId
1061  *                for particular shot config.
1062  *  nFrameNum   : Frame number in vect shot repeat sequence.
1063  *                Starts from 1 for every shot config.
1064  *
1065  *  nExpMin     : The exposure time lower limit,[us]
1066  *  nExpMax     : The exposure time upper limit,[us]
1067  *  nGainMin    : The analog gain lower limit,[0,01EV]
1068  *  nGainMax    : The analog gain upper limit,[0,01EV]
1069  *
1070  *  nReqEC      : Requested total exposure compensation
1071  *  nReqExpTime : Requested exposure time
1072  *  nReqGain    : Requested gain
1073  *
1074  *  nExpTime    : Exposure time of this frame.
1075  *  nAGain      : Analog gain of this frame.
1076  *
1077  *  nSenExpTimeErr : Exposure time error in us.
1078  *                If the requested exposure time is ExpReq
1079  *                and the one produced by the sensor is nExpTime then:
1080  *                nExpTimeErr = nExpTime - ExpReq.
1081  *  nSenAGainErr: Analog gain error as multiplier (in Q8 format).
1082  *
1083  *  nDevEV      : The total exposure deviation,[us]
1084  *  nDevExpTime : The exposure time deviation after flicker reduction,[us]
1085  *  nDevAGain   : The analog gain deviation after flicker reduction,[0,01EV]
1086  */
1087 typedef struct OMX_TI_VECTSHOTINFOTYPE {
1088     OMX_U32 nConfigId;
1089     OMX_U32 nFrameNum;
1090     OMX_U32 nExpMin;
1091     OMX_U32 nExpMax;
1092     OMX_U32 nGainMin;
1093     OMX_U32 nGainMax;
1094     OMX_S32 nReqEC;
1095     OMX_S32 nReqExpTime;
1096     OMX_S32 nReqGain;
1097     OMX_U32 nExpTime;
1098     OMX_U32 nAGain;
1099     OMX_S32 nSenExpTimeErr;
1100     OMX_U32 nSenAGainErr;
1101     OMX_S32 nDevEV;
1102     OMX_S32 nDevExpTime;
1103     OMX_S32 nDevAGain;
1104 } OMX_TI_VECTSHOTINFOTYPE;
1105 
1106 /*
1107  * LSC gain table size
1108  */
1109 #define OMX_TI_LSC_GAIN_TABLE_SIZE (80 * 1024)
1110 
1111 /**
1112  * Possible LSC table gain formats
1113  */
1114 typedef enum OMX_TI_LSC_GAIN_FORMAT_TYPE {
1115     OMX_TI_LSC_GAIN_FORMAT_0Q8,
1116     OMX_TI_LSC_GAIN_FORMAT_0Q8_PLUS_1,
1117     OMX_TI_LSC_GAIN_FORMAT_1Q7,
1118     OMX_TI_LSC_GAIN_FORMAT_1Q7_PLUS_1,
1119     OMX_TI_LSC_GAIN_FORMAT_2Q6,
1120     OMX_TI_LSC_GAIN_FORMAT_2Q6_PLUS_1,
1121     OMX_TI_LSC_GAIN_FORMAT_3Q5,
1122     OMX_TI_LSC_GAIN_FORMAT_3Q5_PLUS_1,
1123     OMX_TI_LSC_GAIN_FORMAT = 0x7FFFFFFF
1124 } OMX_TI_LSC_GAIN_FORMAT_TYPE;
1125 
1126 /**
1127  * The extra data for LSC table
1128  *  bApplied    : If true the table is applied to the frame.
1129  *  eGainFormat : Paxel format
1130  *  nWidth      : LSC table width in paxels
1131  *  nHeight     : LSC table height in paxels
1132  *  pGainTable  : LSC gain table
1133  */
1134 typedef struct OMX_TI_LSCTABLETYPE {
1135     OMX_BOOL bApplied;
1136     OMX_TI_LSC_GAIN_FORMAT_TYPE eGainFormat;
1137     OMX_U32 nWidth;
1138     OMX_U32 nHeight;
1139     OMX_U8 pGainTable[OMX_TI_LSC_GAIN_TABLE_SIZE];
1140 } OMX_TI_LSCTABLETYPE;
1141 
1142 /**
1143  * The extra data having ancillary data is described with the following structure.
1144  * This data contains single flags and values
1145  * (not arrays) that have general usage for camera applications.
1146  */
1147 typedef  struct OMX_TI_ANCILLARYDATATYPE {
1148     OMX_U32             nSize;
1149     OMX_VERSIONTYPE     nVersion;
1150     OMX_U32             nPortIndex;
1151     OMX_TI_CAMERAVIEWTYPE       eCameraView;
1152     OMX_U32             nAncillaryDataVersion;
1153     OMX_U32             nFrameNumber;
1154     OMX_U32             nShotNumber;
1155     OMX_U16             nInputImageHeight;
1156     OMX_U16             nInputImageWidth;
1157     OMX_U16             nOutputImageHeight;
1158     OMX_U16             nOutputImageWidth;
1159     OMX_U16             nDigitalZoomFactor;
1160     OMX_S16             nCropCenterColumn;
1161     OMX_S16             nCropCenterRow;
1162     OMX_U16             nOpticalZoomValue;
1163     OMX_U8              nFlashConfiguration;
1164     OMX_U8              nFlashUsage;
1165     OMX_U32             nFlashStatus;
1166     OMX_U8              nAFStatus;
1167     OMX_U8              nAWBStatus;
1168     OMX_U8              nAEStatus;
1169     OMX_U32             nExposureTime;
1170     OMX_U16             nEVCompensation;
1171     OMX_U8              nDigitalGainValue;
1172     OMX_U8              nAnalogGainValue;
1173     OMX_U16             nCurrentISO;
1174     OMX_U16             nReferenceISO;
1175     OMX_U8              nApertureValue;
1176     OMX_U8              nPixelRange;
1177     OMX_U16             nPixelAspectRatio;
1178     OMX_U8              nCameraShake;
1179     OMX_U16             nFocalDistance;
1180     OMX_U64             nParameterChangeFlags;
1181     OMX_U8              nNumFacesDetected;
1182     OMX_U8              nConvergenceMode;
1183     OMX_U8              nConvergenceStatus;
1184     OMX_U8              nDCCStatus;
1185 } OMX_TI_ANCILLARYDATATYPE;
1186 
1187 /**
1188  * White Balance Results data
1189  *  The extra data having white balance results data is
1190  *  described with the following structure..
1191  */
1192 typedef struct OMX_TI_WHITEBALANCERESULTTYPE {
1193     OMX_U32             nSize;          /**< Size */
1194     OMX_VERSIONTYPE     nVersion;       /**< Version */
1195     OMX_U32             nPortIndex;     /**< Port Index */
1196     OMX_TI_CAMERAVIEWTYPE eCameraView;
1197     OMX_U16             nColorTemperature;      /**< White Balance Color Temperature in Kelvins */
1198     OMX_U16             nGainR;         /**< Bayer applied R color channel gain in (U13Q9) */
1199     OMX_U16             nGainGR;        /**< Bayer applied Gr color channel gain in (U13Q9) */
1200     OMX_U16             nGainGB;        /**< Bayer applied Gb color channel gain in (U13Q9) */
1201     OMX_U16             nGainB;         /**< Bayer applied B color channel gain in (U13Q9) */
1202     OMX_S16             nOffsetR;       /**< Bayer applied R color channel offset */
1203     OMX_S16             nOffsetGR;      /**< Bayer applied Gr color channel offset */
1204     OMX_S16             nOffsetGB;      /**< Bayer applied Gb color channel offset */
1205     OMX_S16             nOffsetB;       /**< Bayer applied B color channel offset */
1206 } OMX_TI_WHITEBALANCERESULTTYPE;
1207 
1208 /**
1209  * Unsaturated Regions data
1210  * The extra data having unsaturated regions data is
1211  * described with the following structure..
1212  */
1213 typedef struct OMX_TI_UNSATURATEDREGIONSTYPE {
1214     OMX_U32             nSize;          /**< Size */
1215     OMX_VERSIONTYPE     nVersion;       /**< Version */
1216     OMX_U32             nPortIndex;     /**< Port Index */
1217     OMX_U16             nPaxelsX;       /**< The number of paxels in the horizontal direction */
1218     OMX_U16             nPaxelsY;       /**< The number of paxels in the vertical direction */
1219     OMX_U16         data[1];     /**< the first value of an array of values that represent
1220                                      the percentage of unsaturated pixels within the associated paxel */
1221 } OMX_TI_UNSATURATEDREGIONSTYPE;
1222 
1223 /**
1224  * OMX_BARCODETYPE
1225  */
1226 typedef enum OMX_BARCODETYPE {
1227         OMX_BARCODE1D = 0,      /**< 1D barcode */
1228         OMX_BARCODE2D,          /**< 2D barcode */
1229     OMX_BarcodeMax = 0x7fffffff
1230 }OMX_BARCODETYPE;
1231 /**
1232  * Brcode detection data
1233  *	nLeft is the leftmost coordinate of the detected area rectangle.
1234  *	nTop is the topmost coordinate of the detected area rectangle.
1235  *	nWidth is the width of the detected area rectangle in pixels.
1236  *	nHeight is the height of the detected area rectangle in pixels.
1237  *	nOrientation is the orientation of the axis of the detected object. This refers to the angle between the vertical axis of barcode and the horizontal axis.
1238  *	eBarcodetype is an enumeration specifying the barcode type, as listed in the given table.
1239  */
1240 typedef struct OMX_BARCODEDETECTIONTYPE {
1241 	OMX_U32 nSize;
1242 	OMX_VERSIONTYPE nVersion;
1243 	OMX_U32 nPortIndex;
1244 	OMX_TI_CAMERAVIEWTYPE eCameraView;
1245     OMX_S32               nLeft;     /**< The leftmost coordinate of the detected area rectangle */
1246     OMX_S32               nTop;     /**< Topmost coordinate of the detected area rectangle */
1247     OMX_U32               nWidth;     /**< The width of the detected area rectangle in pixels */
1248     OMX_U32               nHeight;     /**< The height of the detected area rectangle in pixels */
1249     OMX_S32               nOrientation;     /**< The orientation of the axis of the detected object.
1250                                          This refers to the angle between the vertical axis of barcode and the horizontal axis */
1251     OMX_BARCODETYPE eBarcodetype;     /**< An enumeration specifying the barcode type, as listed in the given table */
1252  } OMX_BARCODEDETECTIONTYPE;
1253 
1254 /**
1255  * Front object detection data
1256  *	nLeft is the leftmost coordinate of the detected area rectangle.
1257  *	nTop is the topmost coordinate of the detected area rectangle.
1258  *	nWidth is the width of the detected area rectangle in pixels.
1259  *	nHeight is the height of the detected area rectangle in pixels.
1260  */
1261 typedef struct OMX_FRONTOBJDETECTIONTYPE {
1262     OMX_U32 nSize;
1263     OMX_VERSIONTYPE nVersion;
1264     OMX_U32 nPortIndex;
1265     OMX_TI_CAMERAVIEWTYPE eCameraView;
1266     OMX_S32               nLeft;     /**< The leftmost coordinate of the detected area rectangle */
1267     OMX_S32               nTop;     /**< The topmost coordinate of the detected area rectangle */
1268     OMX_U32               nWidth;     /**< The width of the detected area rectangle in pixels */
1269     OMX_U32               nHeight;     /**< The height of the detected area rectangle in pixels */
1270 } OMX_FRONTOBJDETECTIONTYPE;
1271 
1272 /**
1273  * Distance estimation data
1274  * nDistance is the estimated distance to the object in millimeters.
1275  * nLargestDiscrepancy is the estimated largest discrepancy of the distance to the object in millimeters. When equal to MAX_INT the discrepancy is unknown.
1276  */
1277 typedef struct OMX_DISTANCEESTIMATIONTYPE {
1278     OMX_U32 nSize;
1279     OMX_VERSIONTYPE nVersion;
1280     OMX_U32 nPortIndex;
1281     OMX_TI_CAMERAVIEWTYPE eCameraView;
1282     OMX_U32               nDistance;        /**< Estimated distance to the object in millimeters */
1283     OMX_U32               nLargestDiscrepancy;     /**< the estimated largest discrepancy of the distance to the object in millimeters.
1284                                                  When equal to MAX_INT the discrepancy is unknown */
1285 } OMX_DISTANCEESTIMATIONTYPE;
1286 
1287 /**
1288  * Distance estimation data
1289  * nDistance is the estimated distance to the object in millimeters.
1290  * nLargestDiscrepancy is the estimated largest discrepancy of the distance to the object in millimeters. When equal to MAX_INT the discrepancy is unknown.
1291  */
1292 
1293 typedef struct OMX_MOTIONESTIMATIONTYPE {
1294     OMX_U32 nSize;
1295     OMX_VERSIONTYPE nVersion;
1296     OMX_U32 nPortIndex;
1297     OMX_TI_CAMERAVIEWTYPE eCameraView;
1298     OMX_S32               nPanX;     /**< The detected translation in horizontal direction.
1299                                      The value is represented as pixels in Q16-format */
1300     OMX_S32 nPanY;              /**< The detected translation in vertical direction.
1301                                      The value is represented as pixels in Q16-format */
1302 } OMX_MOTIONESTIMATIONTYPE;
1303 
1304 
1305 /**
1306  * Focus region data
1307  *	nRefPortIndex is the port the image frame size is defined on. This image frame size is used as reference for the focus region rectangle.
1308  *	nLeft is the leftmost coordinate of the focus region rectangle.
1309  *	nTop is the topmost coordinate of the focus region rectangle.
1310  *	nWidth is the width of the focus region rectangle in pixels.
1311  *	nHeight is the height of the focus region rectangle in pixels.
1312  *
1313  */
1314 typedef struct OMX_FOCUSREGIONTYPE {
1315     OMX_U32 nSize;
1316     OMX_VERSIONTYPE nVersion;
1317     OMX_U32 nPortIndex;
1318     OMX_TI_CAMERAVIEWTYPE eCameraView;
1319     OMX_U32               nRefPortIndex;     /**< The port the image frame size is defined on.
1320                                      This image frame size is used as reference for the focus region rectangle */
1321     OMX_S32 nLeft;              /**< The leftmost coordinate of the focus region rectangle */
1322     OMX_S32 nTop;               /**< The topmost coordinate of the focus region rectangle */
1323     OMX_U32 nWidth;             /**< The width of the focus region rectangle in pixels */
1324     OMX_U32 nHeight;            /**< The height of the focus region rectangle in pixels */
1325 } OMX_FOCUSREGIONTYPE;
1326 
1327 /**
1328  * OMX_ISOSETTINGTYPE: specifies its auto or manual setting
1329  *
1330  */
1331 typedef enum OMX_ISOSETTINGTYPE{
1332         OMX_Auto = 0, /**<	*/
1333     OMX_IsoManual,      /**< */
1334     OMX_IsoSettingMax = 0x7fffffff
1335 }OMX_ISOSETTINGTYPE;
1336 
1337 /**
1338  *  nSize is the size of the structure including the length of data field containing
1339  *  the histogram data.
1340  *  eISOMode:
1341  *  	specifies the ISO seetting mode - auto/manual
1342  *  nISOSetting:
1343  *  	for manual mode client can specify the ISO setting.
1344  */
1345 
1346 typedef struct OMX_CONFIG_ISOSETTINGTYPE{
1347 	OMX_U32 nSize;
1348 	OMX_VERSIONTYPE nVersion;
1349 	OMX_U32 nPortIndex;
1350 	OMX_ISOSETTINGTYPE eISOMode;
1351 	OMX_U32 nISOSetting;
1352 }OMX_CONFIG_ISOSETTINGTYPE;
1353 
1354 /**
1355  * custom RAW format
1356  */
1357 typedef struct OMX_CONFIG_RAWFORMATTYPE {
1358     OMX_U32 nSize;
1359     OMX_VERSIONTYPE nVersion;
1360     OMX_U32 nPortIndex;
1361     OMX_VERSIONTYPE nFormatVersion;
1362     OMX_STRING cVendorName;
1363 } OMX_CONFIG_RAWFORMATTYPE;
1364 
1365 /**
1366  * Sensor type
1367  */
1368 typedef struct OMX_CONFIG_SENSORTYPE {
1369     OMX_U32 nSize;
1370     OMX_VERSIONTYPE nVersion;
1371     OMX_U32 nPortIndex;
1372     OMX_VERSIONTYPE nSensorVersion;
1373     OMX_STRING cModelName;
1374 } OMX_CONFIG_SENSORTYPE;
1375 
1376 /**
1377 * Sensor Detect
1378 */
1379 typedef struct OMX_TI_PARAM_SENSORDETECT {
1380     OMX_U32         nSize;
1381     OMX_VERSIONTYPE nVersion;
1382     OMX_U32         nPortIndex;
1383     OMX_BOOL        bSensorDetect;
1384 } OMX_TI_PARAM_SENSORDETECT;
1385 
1386 /**
1387  * OMX_BAYERCOMPRESSION
1388  *
1389  */
1390 typedef enum OMX_BAYERCOMPRESSION {
1391     OMX_BAYER_UNPACKED,
1392     OMX_BAYER_PACKED10,
1393     OMX_BAYER_ALAW,
1394     OMX_BAYER_DPCM,
1395     OMX_BAYER_MAX = 0x7FFFFFFF
1396 } OMX_BAYERCOMPRESSION;
1397 
1398 /**
1399 * Sensor Detect
1400 */
1401 typedef struct OMX_TI_PARAM_BAYERCOMPRESSION {
1402     OMX_U32              nSize;
1403     OMX_VERSIONTYPE      nVersion;
1404     OMX_U32              nPortIndex;
1405     OMX_BAYERCOMPRESSION eBayerCompression;
1406 } OMX_TI_PARAM_BAYERCOMPRESSION;
1407 
1408 /**
1409  * Sensor custom data type
1410  */
1411 typedef struct OMX_CONFIG_SENSORCUSTOMDATATYPE {
1412     OMX_U32 nSize;
1413     OMX_VERSIONTYPE nVersion;
1414     OMX_U32 nPortIndex;
1415     OMX_U32 nDataLength;
1416     OMX_U8 xSensorData[1];
1417 } OMX_CONFIG_SENSORCUSTOMDATATYPE;
1418 
1419 /**
1420  * OMX_OBJDETECTQUALITY
1421  *
1422  */
1423 typedef enum OMX_OBJDETECTQUALITY{
1424         OMX_FastDetection = 0, /**< A detection that prioritizes speed*/
1425         OMX_Default,    /**< The default detection, should be used when no control of the detection quality is given.*/
1426         OMX_BetterDetection,    /**< A detection that levels correct detection with speed*/
1427         OMX_BestDtection,   /**< A detection that prioritizes correct detection*/
1428     OMX_AUTODETECTION,       /**< Automatically decide which object detection quality is best.*/
1429     OMX_ObjDetectQualityMax = 0x7fffffff
1430 }OMX_OBJDETECTQUALITY;
1431 
1432 /**
1433  * OBJECT DETECTION Type
1434  *      nPortIndex: is an output port. The port index decides on which port the extra data structur of detected object is sent on.
1435  *      bEnable : this controls ON/OFF for this object detection algirithm.
1436  *      bFrameLimited: is a Boolean used to indicate if detection shall be terminated after the specified number of frames if
1437  *          true frame limited detection is enabled; otherwise the port does not terminate detection until instructed to do so by the client.
1438  *      nFrameLimit: is the limit on number of frames detection is executed for, this parameter is only valid if bFrameLimited is enabled.
1439  *      nMaxNbrObjects: specifies the maximum number of objects that should be found in each frame. It is implementation dependent which objects are found.
1440  *      nLeft: is the leftmost coordinate of the detection area rectangle.
1441  *      nTop: is the topmost coordinate of the detection area rectangle.
1442  *      nWidth: is the width of the detection area rectangle in pixels.
1443  *      nHeight: is the height of the detection area rectangle in pixels.
1444  *      eObjDetectQuality: is an enumeration specifying the quality desired by the detection.
1445  *      nPriority: represents priority of each object when there are multiple objects detected.
1446  */
1447 
1448 typedef struct OMX_CONFIG_OBJDETECTIONTYPE {
1449     OMX_U32 nSize;
1450     OMX_VERSIONTYPE nVersion;
1451     OMX_U32 nPortIndex;
1452     OMX_BOOL bEnable;
1453     OMX_BOOL bFrameLimited;
1454     OMX_U32 nFrameLimit;
1455     OMX_U32 nMaxNbrObjects;
1456     OMX_S32 nLeft;
1457     OMX_S32 nTop;
1458     OMX_U32 nWidth;
1459     OMX_U32 nHeight;
1460     OMX_OBJDETECTQUALITY eObjDetectQuality;
1461     OMX_U32 nPriority;
1462     OMX_U32 nDeviceOrientation;
1463  } OMX_CONFIG_OBJDETECTIONTYPE;
1464 
1465 
1466 /**
1467  * OMX_OBJDETECTQUALITY
1468  *
1469  */
1470 typedef enum OMX_DISTTYPE{
1471         OMX_DistanceControlFocus = 0, /**< focus objects distance type*/
1472     OMX_DISTANCECONTROL_RECT,       /**< Evaluated distance to the object found in the rectangelar area indicated as input region.  */
1473     OMX_DistTypeMax = 0x7fffffff
1474 }OMX_DISTTYPE;
1475 
1476 
1477 /**
1478  * Distance mesurement
1479  *	bStarted is a Boolean. The IL client sets it to true to start the measurement .
1480  *		the IL client sets to false to stop the measurement. The IL client can query it to check if the measurement is ongoing.
1481  *	nLeft : is the leftmost coordinate of the rectangle.
1482  *	nTop : is the topmost coordinate of the rectangle.
1483  *	nWidth:  is the width of the rectangle in pixels.
1484  *	nHeight:  is the height of the rectangle in pixels.
1485  *	eDistType:  is an enumeration specifying the distance measurement type, as shown in
1486  */
1487 typedef struct OMX_CONFIG_DISTANCETYPE {
1488     OMX_U32 nSize;
1489     OMX_VERSIONTYPE nVersion;
1490     OMX_U32 nPortIndex;
1491     OMX_BOOL bStarted;
1492     OMX_S32 nLeft;
1493     OMX_S32 nTop;
1494     OMX_U32 nWidth;
1495     OMX_U32 nHeight;
1496     OMX_DISTTYPE eDistType;
1497 } OMX_CONFIG_DISTANCETYPE;
1498 
1499 
1500 /**
1501  * face detect data - face attribute
1502  *  nARGBEyeColor: is the indicates a 32-bit eye color of the person, where bits 0-7 are blue,
1503  *      bits 15-8 are green, bits 24-16 are red, and bits 31-24 are for alpha.
1504  *  nARGBSkinColor: is the indicates a 32-bit skin color of the person, where bits 0-7 are blue,
1505  *      bits 15-8 are green, bits 24-16 are red, and bits 31-24 are for alpha.
1506  *  nARGBHairColor: is the indicates a 32-bit hair color of the person, where bits 0-7 are blue,
1507  *      bits 15-8 are green, bits 24-16 are red, and bits 31-24 are for alpha.
1508  *  nSmileScore: a smile detection score between 0 and 100, where 0 means not detecting,
1509  *      1 means least certain and 100 means most certain a smile is detected.
1510  *  nBlinkScore: a eye-blink detection score between 0 and 100, where 0 means not detecting,
1511  *      1 means least certain and 100 means most certain an eye-blink is detected.
1512  *  xIdentity: represents the identity of the face. With identity equal to zero this is not supported.
1513  *      This can be used by a face recognition application. The component shall not reuse an identity value unless the same face.
1514  *      Can be used to track detected faces when it moves between frames. Specific usage of this field is implementation dependent.
1515  *      It can be some kind of ID.
1516  *
1517  */
1518 typedef struct OMX_FACEATTRIBUTE {
1519     OMX_U32 nARGBEyeColor;      /**< The indicates a 32-bit eye color of the person,
1520                                      where bits 0-7 are blue, bits 15-8 are green, bits 24-16 are red,
1521                                      and bits 31-24 are for alpha. */
1522     OMX_U32 nARGBSkinColor;     /**< The indicates a 32-bit skin color of the person,
1523                                      where bits 0-7 are blue, bits 15-8 are green, bits 24-16 are red,
1524                                      and bits 31-24 are for alpha */
1525     OMX_U32 nARGBHairColor;     /**< the indicates a 32-bit hair color of the person,
1526                                      where bits 0-7 are blue, bits 15-8 are green, bits 24-16 are red,
1527                                     and bits 31-24 are for alpha */
1528     OMX_U32 nSmileScore;        /**< Smile detection score between 0 and 100, where 0 means not detecting,
1529                                      1 means least certain and 100 means most certain a smile is detected */
1530     OMX_U32 nBlinkScore;        /**< Eye-blink detection score between 0 and 100, where 0 means not detecting,
1531                                      1 means least certain and 100 means most certain an eye-blink is detected */
1532     OMX_U32 xIdentity[4];       /**< represents the identity of the face. With identity equal to zero this is not supported.
1533                                      This can be used by a face recognition application.
1534                                      The component shall not reuse an identity value unless the same face.
1535                                      Can be used to track detected faces when it moves between frames.
1536                                      Specific usage of this field is implementation dependent.
1537                                      It can be some kind of ID */
1538 } OMX_FACEATTRIBUTE;
1539 
1540 /**
1541  * xGamma represents lool-up table for gamma correction in Q16 format.
1542  * All values assume that maximum value is 255. If internal implementation uses higher dynamic range, this value should be adjusted internally.
1543  *
1544  *
1545  *
1546  * STRUCT MEMBERS:
1547  *  nScore: is a detection score between 0 and 100, where 0 means unknown score, 1 means least certain and 100 means most certain the detection is correct.
1548  *  nLeft: is the leftmost coordinate of the detected area rectangle.
1549  *  nTop: is the topmost coordinate of the detected area rectangle.
1550  *  nWidth: is the width of the detected area rectangle in pixels.
1551  *  nHeight: is the height of the detected area rectangle in pixels.
1552  *  nOrientationRoll/Yaw/Pitch is the orientation of the axis of the detected object. Here roll angle is defined as the angle between the vertical axis of face and the horizontal axis. All angles can have the value of -180 to 180 degree in Q16 format. Some face detection algorithm may not be able to fill in the angles, this is denoted by the use of MAX_INT value.
1553  *  nPriority represents priority of each object when there are multiple objects detected.
1554  *  nFaceAttr describe the attributes of the detected face object with the following structure:
1555  *
1556  *
1557  */
1558 typedef struct OMX_TI_FACERESULT {
1559     OMX_U32 nSize;
1560     OMX_VERSIONTYPE nVersion;
1561     OMX_U32 nPortIndex;
1562     OMX_TI_CAMERAVIEWTYPE eCameraView;
1563     OMX_U32               nScore;     /**< Detection score between 0 and 100, where 0 means unknown score,
1564                                          1 means least certain and 100 means most certain the detection is correct */
1565     OMX_S32 nLeft;                  /**< The leftmost coordinate of the detected area rectangle */
1566     OMX_S32 nTop;                   /**< The topmost coordinate of the detected area rectangle */
1567     OMX_U32 nWidth;                 /**< The width of the detected area rectangle in pixels */
1568     OMX_U32 nHeight;                /**< The height of the detected area rectangle in pixels */
1569     // The orientation of the axis of the detected object.
1570     // Here roll angle is defined as the angle between the vertical axis of face and the horizontal axis.
1571     // All angles can have the value of -180 to 180 degree in Q16 format.
1572     // Some face detection algorithm may not be able to fill in the angles, this is denoted by the use of MAX_INT value.
1573 OMX_S32 nOrientationRoll;
1574 OMX_S32 nOrientationYaw;
1575 OMX_S32 nOrientationPitch;
1576     //
1577     OMX_U32           nPriority;     /**< Represents priority of each object when there are multiple objects detected */
1578     OMX_FACEATTRIBUTE nFaceAttr;     /**< Describe the attributes of the detected face object with the following structure */
1579 } OMX_TI_FACERESULT;
1580 
1581 
1582 /**
1583  * Face detection data
1584  * The extra data having face detection data is described with the following structure.
1585  * The parser should only assume that the first tFacePosition[ulFaceCount] of the 35 elements
1586  * of the array should contain valid data.
1587  */
1588 typedef struct OMX_FACEDETECTIONTYPE {
1589     OMX_U32 nSize;
1590     OMX_VERSIONTYPE nVersion;
1591     OMX_U32 nPortIndex;
1592     OMX_TI_CAMERAVIEWTYPE    eCameraView;
1593     OMX_U16               ulFaceCount;     // faces detected
1594     OMX_TI_FACERESULT tFacePosition[35];// 35 is max faces supported by FDIF
1595 } OMX_FACEDETECTIONTYPE;
1596 
1597 /**
1598  * MTIS Vendor Specific Motion estimation
1599  * The extra data having MTIS motion estimation data is
1600  * described with the following structure.
1601  */
1602 typedef struct OMX_TI_MTISTYPE {
1603     OMX_U32 nSize;
1604     OMX_VERSIONTYPE nVersion;
1605     OMX_U32 nPortIndex;
1606     OMX_TI_CAMERAVIEWTYPE eCameraView;
1607     OMX_S32 nMaxMVh;            /**< The maximum MV for horizontal direction */
1608     OMX_S32 nMaxMVv;            /**< The maximum MV for vertical direction */
1609     OMX_U16 nMVRelY[9];         /**< The mask for MV reliability */
1610     OMX_U16 nMVRelX[9];         /**< The mask for MV reliability */
1611     OMX_S32 nMVh[9];            /**< The MVs for horizontal direction */
1612     OMX_S32 nMVv[9];            /**< The MVs for vertical direction */
1613 } OMX_TI_MTISTYPE;
1614 
1615 /**
1616  * The OMX_EXTRADATATYPE enumeration is used to define the
1617  * possible extra data payload types.
1618  */
1619 typedef enum OMX_EXT_EXTRADATATYPE {
1620     OMX_ExifAttributes = 0x7F000001,     /**< 0x7F000001 Reserved region for introducing Vendor Extensions */
1621    OMX_AncillaryData,                   /**< 0x7F000002 ancillary data */
1622    OMX_WhiteBalance,                    /**< 0x7F000003 white balance resultant data */
1623    OMX_UnsaturatedRegions,              /**< 0x7F000004 unsaturated regions data */
1624     OMX_FaceDetection,              /**< 0x7F000005 face detect data */
1625     OMX_BarcodeDetection,           /**< 0x7F000006 bar-code detct data */
1626     OMX_FrontObjectDetection,       /**< 0x7F000007 Front object detection data */
1627     OMX_MotionEstimation,           /**< 0x7F000008 motion Estimation data */
1628     OMX_MTISType,                   /**< 0x7F000009 MTIS motion Estimation data */
1629     OMX_DistanceEstimation,         /**< 0x7F00000A disctancedistance estimation */
1630     OMX_Histogram,                  /**< 0x7F00000B histogram */
1631     OMX_FocusRegion,                /**< 0x7F00000C focus region data */
1632    OMX_ExtraDataPanAndScan,             /**< 0x7F00000D pan and scan data */
1633     OMX_RawFormat,                  /**< 0x7F00000E custom RAW data format */
1634     OMX_SensorType,                 /**< 0x7F00000F vendor & model of the sensor being used */
1635     OMX_SensorCustomDataLength,     /**< 0x7F000010 vendor specific custom data length */
1636     OMX_SensorCustomData,           /**< 0x7F000011 vendor specific data */
1637    OMX_TI_FrameLayout,                  /**< 0x7F000012 vendor specific data */
1638    OMX_TI_SEIinfo2004Frame1,    /**< 0x7F000013 Used for 2004 SEI message to be provided by video decoders */
1639    OMX_TI_SEIinfo2004Frame2,    /**< 0x7F000014 Used for 2004 SEI message to be provided by video decoders */
1640    OMX_TI_SEIinfo2010Frame1,    /**< 0x7F000015 Used for 2010 SEI message to be provided by video decoders */
1641    OMX_TI_SEIinfo2010Frame2,    /**< 0x7F000016 Used for 2010 SEI message to be provided by video decoders */
1642    OMX_TI_RangeMappingInfo,     /**< 0x7F000017 Used for Range mapping info provided by Video Decoders */
1643    OMX_TI_RescalingInfo,        /**< 0x7F000018 Used for width/height rescaling info provided by Video Decoders */
1644    OMX_TI_WhiteBalanceOverWrite,        /**< 0x7F000019 Used for manual AWB settings */
1645     OMX_TI_CPCamData,               /**< 0x7F00001A Used for cp cam data */
1646     OMX_TI_H264ESliceDataInfo,      /**< 0x7F00001B */
1647     OMX_TI_DccData,                 /**< 0x7F00001C Used for dcc data overwrite in the file system */
1648     OMX_TI_ProfilerData,            /**< 0x7F00001D Used for profiling data */
1649     OMX_TI_VectShotInfo,            /**< 0x7F00001E Used for vector shot feedback notification */
1650     OMX_TI_CamReProcMeta,           /**< 0x7F00001F Used for meta data input to camera re-proc function */
1651     OMX_TI_LSCTable,                /**< 0x7F000020 Lens shading table for corresponding frame */
1652     OMX_TI_CodecExtenderErrorFrame1, /**< 0x7F000021 Used for Codec Extended Error to be provided byvideo decoders */
1653     OMX_TI_CodecExtenderErrorFrame2, /**< 0x7F000022 Used for Codec Extended Error to be provided byvideo decoders */
1654     OMX_TI_MBInfoFrame1,            /**< 0x7F000023 Used for MBError message to be provided by videodecoders */
1655     OMX_TI_MBInfoFrame2,            /**< 0x7F000024 Used for MBError message to be provided by videodecoders */
1656     OMX_TI_SEIInfoFrame1,           /**< 0x7F000025 Used for SEI message to be provided by video decoders*/
1657     OMX_TI_SEIInfoFrame2,           /**< 0x7F000026 Used for SEI message to be provided by video decoders*/
1658     OMX_TI_VUIInfoFrame1,           /**< 0x7F000027 Used for VUI message to be provided by video decoders */
1659     OMX_TI_VUIInfoFrame2,           /**< 0x7F000028 Used for VUI message to be provided by video decoders */
1660    OMX_TI_ExtraData_Count,
1661    OMX_TI_ExtraData_Max = OMX_TI_ExtraData_Count - 1,
1662    OMX_TI_ExtraData_32Bit_Patch = 0x7fffffff
1663 } OMX_EXT_EXTRADATATYPE;
1664 
1665 
1666 /**
1667  * Enable Extra-data on a specific port.
1668  *
1669  *
1670  *
1671  * STRUCT MEMBERS:
1672  *  nSize        : Size of the structure in bytes
1673  *  nVersion     : OMX specification version information
1674  *  nPortIndex   : Port on which this extra data to be assosiated
1675  *  eExtraDataType :  Extra data type
1676  *  bEnable      : Eneble/Disable this extra-data through port.
1677  *
1678  */
1679 typedef struct OMX_CONFIG_EXTRADATATYPE {
1680     OMX_U32 nSize;                              /**< The size of the structure including data bytes
1681                                                      and any padding necessary to ensure 32bit alignment
1682                                                      of the next OMX_OTHER_EXTRADATATYPE structure */
1683     OMX_VERSIONTYPE nVersion;
1684     OMX_U32               nPortIndex;           /**< The read-only value containing the index of the port */
1685     OMX_EXT_EXTRADATATYPE eExtraDataType;       /**< Identifies the extra data payload type */
1686     OMX_BOOL bEnable;
1687 } OMX_CONFIG_EXTRADATATYPE;
1688 
1689 /**
1690  * JPEG header type
1691  * */
1692 
1693 typedef enum OMX_JPEGHEADERTYPE{
1694 	OMX_NoHeader = 0,
1695 	OMX_JFIF,
1696     OMX_EXIF,
1697     OMX_JpegHeaderTypeMax = 0x7fffffff
1698 }OMX_JPEGHEADERTYPE;
1699 /**
1700  * Re-start marker configuration
1701  *
1702  *
1703  *
1704  * STRUCT MEMBERS:
1705  *  nSize        : Size of the structure in bytes
1706  *  nVersion     : OMX specification version information
1707  *  nPortIndex   : Port on which this extra data to be assosiated
1708  *  eJpegHeaderType : JPEG header type EXIF, JFIF, or No heeader.
1709  */
1710 
1711 typedef struct OMX_CONFIG_JPEGHEEADERTYPE{
1712 	OMX_U32 nSize;
1713 	OMX_VERSIONTYPE nVersion;
1714 	OMX_U32 nPortIndex;
1715 	OMX_JPEGHEADERTYPE eJpegHeaderType;
1716 }OMX_CONFIG_JPEGHEEADERTYPE;
1717 
1718 /**
1719  * Re-start marker configuration
1720  *
1721  *
1722  *
1723  * STRUCT MEMBERS:
1724  *  nSize        : Size of the structure in bytes
1725  *  nVersion     : OMX specification version information
1726  *  nPortIndex   : Port on which this extra data to be assosiated
1727  *  nRstInterval :  interval at which RST markers are to be inserted.
1728  *  bEnable      : Eneble/Disable this RST marker insertion feature.
1729  *
1730  */
1731 
1732 typedef struct OMX_CONFIG_RSTMARKER{
1733 	OMX_U32 nSize;
1734 	OMX_VERSIONTYPE nVersion;
1735 	OMX_U32 nPortIndex;
1736 	OMX_U32 nRstInterval;
1737 	OMX_BOOL nEnable;
1738 }OMX_CONFIG_RSTMARKER;
1739 
1740 /**
1741  * Enable Extra-data on a specific port.
1742  *
1743  *
1744  *
1745  * STRUCT MEMBERS:
1746  *  nSize        : Size of the structure in bytes
1747  *  nVersion     : OMX specification version information
1748  *  nPortIndex   : Port that this structure applies to
1749  * nMaxSize : max size
1750  *
1751  *
1752  */
1753 typedef struct OMX_IMAGE_JPEGMAXSIZE {
1754     OMX_U32 nSize;
1755     OMX_VERSIONTYPE nVersion;
1756     OMX_U32 nPortIndex;
1757     OMX_U32 nMaxSize;
1758 } OMX_IMAGE_JPEGMAXSIZE;
1759 
1760 
1761 typedef enum OMX_IMAGESTAMPOPERATION{
1762     OMX_NewImageStamp = 0,
1763     OMX_Continuation,
1764     OMX_ImageStapOperationMax = 0x7fffffff
1765 }OMX_IMAGESTAMPOPERATION;
1766 
1767 
1768 /**
1769  * Enable Extra-data on a specific port.
1770  *
1771  *
1772  *
1773  * STRUCT MEMBERS:
1774  *  nSize        : Size of the structure in bytes
1775  *  nVersion     : OMX specification version information
1776  *  nPortIndex   : Port that this structure applies to
1777  * nMaxSize : max size
1778  *
1779  *
1780  */
1781 typedef struct OMX_PARAM_IMAGESTAMPOVERLAYTYPE {
1782     OMX_U32 nSize;
1783     OMX_VERSIONTYPE nVersion;
1784     OMX_U32 nPortIndex;
1785     OMX_IMAGESTAMPOPERATION nOp;
1786     OMX_U32 nLeft;
1787     OMX_U32 nTop;
1788     OMX_U32 nHeight;
1789     OMX_U32 nWidth;
1790     OMX_COLOR_FORMATTYPE eFormat;
1791     OMX_U8 * pBitMap;
1792 } OMX_PARAM_IMAGESTAMPOVERLAYTYPE;
1793 
1794 
1795 /**
1796  * Enable Extra-data on a specific port.
1797  *
1798  *
1799  *
1800  * STRUCT MEMBERS:
1801  *  nSize        : Size of the structure in bytes
1802  *  nVersion     : OMX specification version information
1803  *  nPortIndex   : Port that this structure applies to
1804  * nMaxSize : max size
1805  *
1806  *
1807  */
1808 typedef struct OMX_PARAM_THUMBNAILTYPE {
1809     OMX_U32 nSize;
1810     OMX_VERSIONTYPE nVersion;
1811     OMX_U32 nPortIndex;
1812     OMX_U32 nHeight;
1813     OMX_U32 nWidth;
1814     OMX_IMAGE_CODINGTYPE eCompressionFormat;
1815     OMX_COLOR_FORMATTYPE eColorFormat;
1816     OMX_U32 nQuality;
1817     OMX_U32 nMaxSize;
1818 } OMX_PARAM_THUMBNAILTYPE;
1819 
1820 /**
1821  * Red-Eye Removal Enum
1822  */
1823 typedef enum OMX_REDEYEREMOVALTYPE{
1824     OMX_RedEyeRemovalOff    = 0, /** No red eye removal*/
1825     OMX_RedEyeRemovalOn, /**    Red eye removal on*/
1826     OMX_RedEyeRemovalAuto,  /** Red eye removal will be done automatically when detected*/
1827     OMX_RedEyeRemovalKhronosExtensions = 0x6F000000,    /** Reserved region for introducing Khronos Standard Extensions*/
1828     OMX_RedEyeRemovalVendorStartUnused = 0x7F000000,    /** Reserved region for introducing Vendor Extensions*/
1829     OMX_RedEyeRemovalMax = 0x7FFFFFFF
1830 }OMX_REDEYEREMOVALTYPE;
1831 
1832 /**
1833  * Enable Extra-data on a specific port.
1834  *
1835  *
1836  *
1837  * STRUCT MEMBERS:
1838  *  nSize        : Size of the structure in bytes
1839  *  nVersion     : OMX specification version information
1840  *  nPortIndex   : Port that this structure applies to
1841  *  nLeft: is the leftmost coordinate of the detection area rectangle (such as face region).
1842  *  nTop: is the topmost coordinate of the detection area rectangle (such as face region).
1843  *  nWidth: is the width of the detection area rectangle  in pixels.
1844  *  nHeight: is the height of the detection area rectangle in pixels.
1845  *  nARGBEyeColor indicates a 32-bit eye color to replace the red-eye, where bits 0-7 are blue, bits 15-8 are green, bits 24-16 are red, and bits 31-24 are for alpha. When all zero indicates automatic choice.
1846 
1847  *
1848  */
1849 typedef struct OMX_CONFIG_REDEYEREMOVALTYPE {
1850    OMX_U32 nSize;
1851    OMX_VERSIONTYPE nVersion;
1852    OMX_U32 nPortIndex;
1853    OMX_S32 nLeft;
1854    OMX_S32 nTop;
1855    OMX_U32 nWidth;
1856    OMX_U32 nHeight;
1857    OMX_U32 nARGBEyeColor;
1858    OMX_REDEYEREMOVALTYPE eMode;
1859 } OMX_CONFIG_REDEYEREMOVALTYPE;
1860 
1861 
1862 
1863 
1864 
1865 
1866 /**
1867  * Video capture YUV Range Enum
1868  */
1869 typedef enum OMX_VIDEOYUVRANGETYPE{
1870     OMX_ITURBT601 = 0,
1871     OMX_Full8Bit,
1872     OMX_VideoYUVRangeKhronosExtensions = 0x6F000000,    /** Reserved region for introducing Khronos Standard Extensions*/
1873     OMX_VideoYUVRangeVendorStartUnused = 0x7F000000,    /** Reserved region for introducing Vendor Extensions*/
1874     OMX_VideoYUVRangeMax = 0x7FFFFFFF
1875 }OMX_VIDEOYUVRANGETYPE;
1876 
1877 /**
1878  * Enable Extra-data on a specific port.
1879  *
1880  *
1881  *
1882  * STRUCT MEMBERS:
1883  *  nSize        : Size of the structure in bytes
1884  *  nVersion     : OMX specification version information
1885  *  nPortIndex   : Port that this structure applies to
1886  *
1887  */
1888 typedef struct OMX_PARAM_VIDEOYUVRANGETYPE {
1889    OMX_U32 nSize;
1890    OMX_VERSIONTYPE nVersion;
1891    OMX_U32 nPortIndex;
1892    OMX_VIDEOYUVRANGETYPE eYUVRange;
1893 } OMX_PARAM_VIDEOYUVRANGETYPE;
1894 
1895 /**
1896  * Video noise filter mode range enum
1897  */
1898 typedef enum OMX_VIDEONOISEFILTERMODETYPE{
1899     OMX_VideoNoiseFilterModeOff = 0,
1900     OMX_VideoNoiseFilterModeOn,
1901     OMX_VideoNoiseFilterModeAuto,
1902     OMX_VideoNoiseFilterModeExtensions = 0x6F000000,    /** Reserved region for introducing Khronos Standard Extensions */
1903     OMX_VideoNoiseFilterModeStartUnused = 0x7F000000,   /** Reserved region for introducing Vendor Extensions */
1904     OMX_VideoNoiseFilterModeMax = 0x7FFFFFFF
1905 } OMX_VIDEONOISEFILTERMODETYPE;
1906 
1907 /**
1908  * Enable video noise filter.
1909  *
1910  * STRUCT MEMBERS:
1911  *  nSize       : Size of the structure in bytes
1912  *  nVersion    : OMX specification version information
1913  *  nPortIndex  : Port that this structure applies to
1914  *  eMode       : Video noise filter mode (on/off/auto)
1915  */
1916 typedef struct OMX_PARAM_VIDEONOISEFILTERTYPE {
1917     OMX_U32 nSize;
1918     OMX_VERSIONTYPE nVersion;
1919     OMX_U32 nPortIndex;
1920     OMX_VIDEONOISEFILTERMODETYPE eMode;
1921 } OMX_PARAM_VIDEONOISEFILTERTYPE;
1922 
1923 
1924 /**
1925  * High ISO Noise filter mode range enum
1926  */
1927 typedef enum OMX_ISONOISEFILTERMODETYPE{
1928     OMX_ISONoiseFilterModeOff = 0,
1929     OMX_ISONoiseFilterModeOn,
1930     OMX_ISONoiseFilterModeAuto,
1931     OMX_ISONoiseFilterModeExtensions = 0x6F000000,    /** Reserved region for introducing Khronos Standard Extensions */
1932     OMX_ISONoiseFilterModeStartUnused = 0x7F000000,   /** Reserved region for introducing Vendor Extensions */
1933     OMX_ISONoiseFilterModeMax = 0x7FFFFFFF
1934 } OMX_ISONOISEFILTERMODETYPE;
1935 
1936 /**
1937  * Enable ISO noise filter.
1938  *
1939  * STRUCT MEMBERS:
1940  *  nSize       : Size of the structure in bytes
1941  *  nVersion    : OMX specification version information
1942  *  nPortIndex  : Port that this structure applies to
1943  *  eMode       : ISO noise filter (NSF2 is used) mode (on/off/auto)
1944  */
1945 typedef struct OMX_PARAM_ISONOISEFILTERTYPE {
1946     OMX_U32 nSize;
1947     OMX_VERSIONTYPE nVersion;
1948     OMX_U32 nPortIndex;
1949     OMX_ISONOISEFILTERMODETYPE eMode;
1950 } OMX_PARAM_ISONOISEFILTERTYPE;
1951 
1952 /**
1953  * Structure used to to call OMX_GetParams() for each
1954  * increment of "Index" starting with "0"
1955  *
1956  * STRUCT MEMBERS:
1957  * nSize            : Size of the structure in bytes
1958  * nVersion         : OMX specification version information
1959  * nIndex           : Index of the sDCCURI 0..MAX_URI_LENGTH
1960  * sDCCURI          : Look-up table containing strings. Ends with '\0'
1961  */
1962 typedef struct OMX_TI_PARAM_DCCURIINFO {
1963     OMX_U32 nSize;
1964     OMX_VERSIONTYPE nVersion;
1965     OMX_U32 nIndex;
1966     OMX_S8 sDCCURI[MAX_URI_LENGTH];
1967 } OMX_TI_PARAM_DCCURIINFO;
1968 
1969 /**
1970  * Manual White Balance color temperature
1971  * STRUCT MEMBERS:
1972  *  nSize        : Size of the structure in bytes
1973  *  nVersion     : OMX specification version information
1974  *  nPortIndex   : Port that this structure applies to
1975  *  nColorTemperature : Color Temperature in K
1976  */
1977 typedef struct OMX_TI_CONFIG_WHITEBALANCECOLORTEMPTYPE {
1978     OMX_U32 nSize;
1979     OMX_VERSIONTYPE nVersion;
1980     OMX_U32 nPortIndex;
1981     OMX_U32 nColorTemperature;
1982 } OMX_TI_CONFIG_WHITEBALANCECOLORTEMPTYPE;
1983 
1984 /**
1985  * Focus spot weighting range enum
1986  */
1987 typedef enum OMX_TI_CONFIG_FOCUSSPOTMODETYPE {
1988     OMX_FocusSpotDefault = 0,                           /** Makes CommonFocusRegion to be used. */
1989     OMX_FocusSpotSinglecenter,                          /** Only central part of the image is used for focus. */
1990     OMX_FocusSpotMultiNormal,                           /** Middle part of the image is used with 100% weight, upper and lower parts are with 50%. */
1991     OMX_FocusSpotMultiAverage,                          /** All the image is used with 100% weight. */
1992     OMX_FocusSpotMultiCenter,                           /** Central part of the image is used with 100% weight, the rest is used with 50%. */
1993     OMX_FocusSpotExtensions = 0x6F000000,               /** Reserved region for introducing Khronos Standard Extensions */
1994     OMX_FocusSpotModeStartUnused = 0x7F000000,          /** Reserved region for introducing Vendor Extensions */
1995     OMX_FocusSpotModeMax = 0x7FFFFFFF
1996 } OMX_TI_CONFIG_FOCUSSPOTMODETYPE;
1997 
1998 /**
1999  * Focus Spot Weighting configuration.
2000  *
2001  * STRUCT MEMBERS:
2002  *  nSize       : Size of the structure in bytes
2003  *  nVersion    : OMX specification version information
2004  *  nPortIndex  : Port that this structure applies to
2005  *  eMode       : Spot Weighting mode
2006  */
2007 typedef struct OMX_TI_CONFIG_FOCUSSPOTWEIGHTINGTYPE {
2008     OMX_U32 nSize;
2009     OMX_VERSIONTYPE nVersion;
2010     OMX_U32 nPortIndex;
2011     OMX_TI_CONFIG_FOCUSSPOTMODETYPE eMode;
2012 } OMX_TI_CONFIG_FOCUSSPOTWEIGHTINGTYPE;
2013 
2014 /**
2015  * Enumeration of possible Exposure control types for OMX_EXPOSURECONTROLTYPE
2016  */
2017 typedef enum OMX_TI_EXTEXPOSURECONTROLTYPE {
2018     OMX_TI_ExposureControlVeryLong = OMX_ExposureControlVendorStartUnused + 1,
2019     OMX_TI_ExposureControlFacePriority,
2020     OMX_TI_ExposureControlMax = 0x7fffffff
2021 } OMX_TI_EXTEXPOSURECONTROLTYPE;
2022 
2023 /**
2024  * Variable frame rate configuration.
2025  *
2026  * STRUCT MEMBERS:
2027  *  nSize         : Size of the structure in bytes
2028  *  nVersion      : OMX specification version information
2029  *  nPortIndex    : Port that this structure applies to
2030  *  xMinFramerate : Minimum variable frame rate value
2031  */
2032 typedef struct OMX_TI_PARAM_VARFRAMERATETYPE {
2033 	OMX_U32 nSize;
2034 	OMX_VERSIONTYPE nVersion;
2035 	OMX_U32 nPortIndex;
2036 	OMX_U32 xMinFramerate;
2037 } OMX_TI_PARAM_VARFRAMERATETYPE;
2038 
2039 /**
2040  * Exposure config for right frame
2041  */
2042 typedef struct OMX_TI_CONFIG_EXPOSUREVALUERIGHTTYPE {
2043 	OMX_U32 nSize;
2044 	OMX_VERSIONTYPE nVersion;
2045 	OMX_U32 nPortIndex;
2046 	OMX_U32 nApertureFNumber;  /**< e.g. nApertureFNumber = 2 implies "f/2" - Q16 format */
2047 	OMX_U32 nShutterSpeedMsec; /**< Shutterspeed in milliseconds */
2048 	OMX_U32 nSensitivity;      /**< e.g. nSensitivity = 100 implies "ISO 100" */
2049 } OMX_TI_CONFIG_EXPOSUREVALUERIGHTTYPE;
2050 
2051 /**
2052  * Auto Convergence mode enum
2053  */
2054 typedef enum OMX_TI_AUTOCONVERGENCEMODETYPE {
2055 	OMX_TI_AutoConvergenceModeDisable,
2056 	OMX_TI_AutoConvergenceModeFrame,
2057 	OMX_TI_AutoConvergenceModeCenter,
2058 	OMX_TI_AutoConvergenceModeFocusFaceTouch,
2059 	OMX_TI_AutoConvergenceModeManual,
2060 	OMX_TI_AutoConvergenceExtensions = 0x6F000000,    /** Reserved region for introducing Khronos Standard Extensions */
2061 	OMX_TI_AutoConvergenceStartUnused = 0x7F000000,   /** Reserved region for introducing Vendor Extensions */
2062 	OMX_TI_AutoConvergenceModeMax = 0x7FFFFFFF
2063 } OMX_TI_AUTOCONVERGENCEMODETYPE;
2064 
2065 /**
2066  * Variable farame rate configuration.
2067  *
2068  * STRUCT MEMBERS:
2069  *  nSize             : Size of the structure in bytes
2070  *  nVersion          : OMX specification version information
2071  *  nPortIndex        : Port that this structure applies to
2072  *  eACMode           : Auto convergence mode
2073  *  nManualConverence : Manual Converence value
2074  *  nACProcWinStartX  : Start X AC Window
2075  *  nACProcWinStartY  : Start Y AC Window
2076  *  nACProcWinWidth   : Width of AC Window
2077  *  nACProcWinHeight  : Height of AC Window
2078  *  bACStatus         : output status from AL alg
2079  */
2080 typedef struct OMX_TI_CONFIG_CONVERGENCETYPE {
2081 	OMX_U32 nSize;
2082 	OMX_VERSIONTYPE nVersion;
2083 	OMX_U32 nPortIndex;
2084 	OMX_TI_AUTOCONVERGENCEMODETYPE eACMode;
2085 	OMX_S32 nManualConverence;
2086 	OMX_U32 nACProcWinStartX;
2087 	OMX_U32 nACProcWinStartY;
2088 	OMX_U32 nACProcWinWidth;
2089 	OMX_U32 nACProcWinHeight;
2090 	OMX_BOOL bACStatus;
2091 } OMX_TI_CONFIG_CONVERGENCETYPE;
2092 
2093 /**
2094  * Camera specific version.
2095  *
2096  * STRUCT MEMBERS:
2097  *  nBranch        : Branch
2098  *  nCommitID      : Commit ID
2099  *  nBuildDateTime : Build date and time
2100  *  nExtraInfo     : rederved for future use
2101  */
2102 typedef struct OMX_TI_CAMERASPECVERSIONTYPE {
2103 	OMX_U8 nBranch[64];
2104 	OMX_U8 nCommitID[64];
2105 	OMX_U8 nBuildDateTime[64];
2106 	OMX_U8 nExtraInfo[64];
2107 } OMX_TI_CAMERASPECVERSIONTYPE;
2108 
2109 /**
2110  * Stereo frame layout enum
2111  */
2112 typedef enum OMX_TI_STEREOFRAMELAYOUTTYPE {
2113 	OMX_TI_StereoFrameLayout2D,
2114 	OMX_TI_StereoFrameLayoutTopBottom,
2115 	OMX_TI_StereoFrameLayoutLeftRight,
2116     OMX_TI_StereoFrameLayoutTopBottomSubsample,
2117     OMX_TI_StereoFrameLayoutLeftRightSubsample,
2118 	OMX_TI_StereoFrameLayoutMax = 0x7FFFFFFF
2119 } OMX_TI_STEREOFRAMELAYOUTTYPE;
2120 
2121 /**
2122  * Camera frame layout type.
2123  *
2124  * STRUCT MEMBERS:
2125  *  eFrameLayout    : frame layout
2126  *  nSubsampleRatio : subsample ratio
2127  */
2128 typedef struct OMX_TI_FRAMELAYOUTTYPE {
2129 	OMX_U32 nSize;
2130 	OMX_VERSIONTYPE nVersion;
2131 	OMX_U32 nPortIndex;
2132 	OMX_TI_STEREOFRAMELAYOUTTYPE eFrameLayout;
2133 	OMX_U32 nSubsampleRatio; /**  Subsampling ratio, Q15.7 */
2134 } OMX_TI_FRAMELAYOUTTYPE;
2135 
2136 /**
2137  * The OMX_TI_COLOR_FORMATTYPE enumeration is used to define the
2138  * extended color format types.
2139  */
2140 typedef enum OMX_TI_COLOR_FORMATTYPE {
2141 	OMX_TI_COLOR_FormatRawBayer10bitStereo =
2142 	    OMX_COLOR_FormatVendorStartUnused + 2, /**< 10 bit raw for stereo */
2143 	OMX_TI_COLOR_FormatYUV420PackedSemiPlanar =
2144             (OMX_COLOR_FORMATTYPE) OMX_COLOR_FormatVendorStartUnused  + 0x100, /* 0x100 is used since it is the corresponding HAL pixel fromat */
2145     OMX_TI_ColorFormatTypeMax = 0x7fffffff
2146 } OMX_TI_COLOR_FORMATTYPE;
2147 
2148 /**
2149  * The OMX_TI_EXIFTAGSTATUS enumeration is used to define the
2150  * tag status types.
2151  */
2152 typedef enum OMX_TI_EXIFTAGSTATUS {
2153 	OMX_TI_TagReadOnly,     /**< implies this tag is generated within omx-camera >*/
2154 	OMX_TI_TagReadWrite,    /**< implies this tag can be overwritten by client >*/
2155 	OMX_TI_TagUpdated,      /**< client has to use this to indicate the specific tag is overwritten >*/
2156 	OMX_TI_ExifStatus_Max = 0x7fffffff
2157 } OMX_TI_EXIFTAGSTATUS;
2158 
2159 typedef struct OMX_TI_CONFIG_EXIF_TAGS {
2160 	OMX_U32                 nSize;
2161 	OMX_VERSIONTYPE         nVersion;
2162 	OMX_U32                 nPortIndex;
2163 	OMX_TI_EXIFTAGSTATUS    eStatusImageWidth;
2164 	OMX_U32                 ulImageWidth;
2165 	OMX_TI_EXIFTAGSTATUS    eStatusImageHeight;
2166 	OMX_U32                 ulImageHeight;
2167 	OMX_TI_EXIFTAGSTATUS    eStatusBitsPerSample;
2168 	OMX_U16                 usBitsPerSample[3];
2169 	OMX_TI_EXIFTAGSTATUS    eStatusCompression;
2170 	OMX_U16                 usCompression;
2171 	OMX_TI_EXIFTAGSTATUS    eStatusPhotometricInterpretation;
2172 	OMX_U16                 usPhotometricInterpretation;
2173 	OMX_TI_EXIFTAGSTATUS    eStatusOrientation;
2174 	OMX_U16                 usOrientation;
2175 	OMX_TI_EXIFTAGSTATUS    eStatusSamplesPerPixel;
2176 	OMX_U16                 usSamplesPerPixel;
2177 	OMX_TI_EXIFTAGSTATUS    eStatusPlanarConfiguration;
2178 	OMX_U16                 usPlanarConfiguration;
2179 	OMX_TI_EXIFTAGSTATUS    eStatusYCbCrSubSampling;
2180 	OMX_U16                 usYCbCrSubSampling[2];
2181 	OMX_TI_EXIFTAGSTATUS    eStatusYCbCrPositioning;
2182 	OMX_U16                 usYCbCrPositioning;
2183 	OMX_TI_EXIFTAGSTATUS    eStatusXResolution;
2184 	OMX_U32                 ulXResolution[2];
2185 	OMX_TI_EXIFTAGSTATUS    eStatusYResolution;
2186 	OMX_U32                 ulYResolution[2];
2187 	OMX_TI_EXIFTAGSTATUS    eStatusResolutionUnit;
2188 	OMX_U16                 usResolutionUnit;
2189 
2190 	OMX_TI_EXIFTAGSTATUS    eStatusRowsPerStrip;
2191 	OMX_U32                 ulRowsPerStrip;
2192 	OMX_TI_EXIFTAGSTATUS    eStatusDataSize;
2193 	OMX_U32                 ulDataSize;
2194 
2195 	OMX_TI_EXIFTAGSTATUS    eStatusTransferFunction;
2196 	OMX_U16                 usTransferFunction[3*256];
2197 	OMX_TI_EXIFTAGSTATUS    eStatusWhitePoint;
2198 	OMX_U32                 ulWhitePoint[4]; //2x2
2199 	OMX_TI_EXIFTAGSTATUS    eStatusPrimaryChromaticities;
2200 	OMX_U32                 ulPrimaryChromaticities[12]; //2x6
2201 	OMX_TI_EXIFTAGSTATUS    eStatusYCbCrCoefficients;
2202 	OMX_U32                 ulYCbCrCoefficients[6]; //2x3
2203 	OMX_TI_EXIFTAGSTATUS    eStatusReferenceBlackWhite;
2204 	OMX_U32                 ulReferenceBlackWhite[12]; //2x6
2205 	OMX_TI_EXIFTAGSTATUS    eStatusDateTime;
2206 	OMX_S8*                 pDateTimeBuff;
2207 	OMX_U32                 ulDateTimeBuffSizeBytes;
2208 	OMX_TI_EXIFTAGSTATUS    eStatusImageDescription;
2209 	OMX_S8*                 pImageDescriptionBuff;
2210 	OMX_U32                 ulImageDescriptionBuffSizeBytes;
2211 	OMX_TI_EXIFTAGSTATUS    eStatusMake;
2212 	OMX_S8*                 pMakeBuff;
2213 	OMX_U32                 ulMakeBuffSizeBytes;
2214 	OMX_TI_EXIFTAGSTATUS    eStatusModel;
2215 	OMX_S8*                 pModelBuff;
2216 	OMX_U32                 ulModelBuffSizeBytes;
2217 	OMX_TI_EXIFTAGSTATUS    eStatusSoftware;
2218 	OMX_S8*                 pSoftwareBuff;
2219 	OMX_U32                 ulSoftwareBuffSizeBytes;
2220 	OMX_TI_EXIFTAGSTATUS    eStatusArtist;
2221 	OMX_S8*                 pArtistBuff;
2222 	OMX_U32                 ulArtistBuffSizeBytes;
2223 	OMX_TI_EXIFTAGSTATUS    eStatusCopyright;
2224 	OMX_S8*                 pCopyrightBuff;
2225 	OMX_U32                 ulCopyrightBuffSizeBytes;
2226 
2227 	OMX_TI_EXIFTAGSTATUS    eStatusExifVersion;
2228 	OMX_S8                  cExifVersion[4];
2229 	OMX_TI_EXIFTAGSTATUS    eStatusFlashpixVersion;
2230 	OMX_S8                  cFlashpixVersion[4];
2231 	OMX_TI_EXIFTAGSTATUS    eStatusColorSpace;
2232 	OMX_U16                 usColorSpace;
2233 	OMX_TI_EXIFTAGSTATUS    eStatusComponentsConfiguration;
2234 	OMX_S8                  cComponentsConfiguration[4];
2235 	OMX_TI_EXIFTAGSTATUS    eStatusCompressedBitsPerPixel;
2236 	OMX_U32                 ulCompressedBitsPerPixel[2];
2237 	OMX_TI_EXIFTAGSTATUS    eStatusPixelXDimension;
2238 	OMX_U32                 ulPixelXDimension;
2239 	OMX_TI_EXIFTAGSTATUS    eStatusPixelYDimension;
2240 	OMX_U32                 ulPixelYDimension;
2241 	OMX_TI_EXIFTAGSTATUS    eStatusMakerNote;
2242 	OMX_S8*                 pMakerNoteBuff;
2243 	OMX_U32                 ulMakerNoteBuffSizeBytes;
2244 	OMX_TI_EXIFTAGSTATUS    eStatusUserComment;
2245 	OMX_S8*                 pUserCommentBuff;
2246 	OMX_U32                 ulUserCommentBuffSizeBytes;
2247 	OMX_TI_EXIFTAGSTATUS    eStatusRelatedSoundFile;
2248 	OMX_S8                  cRelatedSoundFile[13];
2249 	OMX_TI_EXIFTAGSTATUS    eStatusDateTimeOriginal;
2250 	OMX_S8*                 pDateTimeOriginalBuff;
2251 	OMX_U32                 ulDateTimeOriginalBuffSizeBytes;
2252 	OMX_TI_EXIFTAGSTATUS    eStatusDateTimeDigitized;
2253 	OMX_S8*                 pDateTimeDigitizedBuff;
2254 	OMX_U32                 ulDateTimeDigitizedBuffSizeBytes;
2255 	OMX_TI_EXIFTAGSTATUS    eStatusSubSecTime;
2256 	OMX_S8*                 pSubSecTimeBuff;
2257 	OMX_U32                 ulSubSecTimeBuffSizeBytes;
2258 	OMX_TI_EXIFTAGSTATUS    eStatusSubSecTimeOriginal;
2259 	OMX_S8*                 pSubSecTimeOriginalBuff;
2260 	OMX_U32                 ulSubSecTimeOriginalBuffSizeBytes;
2261 	OMX_TI_EXIFTAGSTATUS    eStatusSubSecTimeDigitized;
2262 	OMX_S8*                 pSubSecTimeDigitizedBuff;
2263 	OMX_U32                 ulSubSecTimeDigitizedBuffSizeBytes;
2264 
2265 	OMX_TI_EXIFTAGSTATUS    eStatusExposureTime;
2266 	OMX_U32                 ulExposureTime[2];
2267 	OMX_TI_EXIFTAGSTATUS    eStatusFNumber;
2268 	OMX_U32                 ulFNumber[2];
2269 	OMX_TI_EXIFTAGSTATUS    eStatusExposureProgram;
2270 	OMX_U16                 usExposureProgram;
2271 	OMX_TI_EXIFTAGSTATUS    eStatusSpectralSensitivity;
2272 	OMX_S8*                 pSpectralSensitivityBuff;
2273 	OMX_U32                 ulSpectralSensitivityBuffSizeBytes;
2274 	OMX_TI_EXIFTAGSTATUS    eStatusISOCount;
2275 	OMX_U16                 usISOCount;
2276 	OMX_TI_EXIFTAGSTATUS    eStatusISOSpeedRatings;
2277 	OMX_U16*                pISOSpeedRatings;
2278 	OMX_TI_EXIFTAGSTATUS    eStatusOECF;
2279 	OMX_S8*                 pOECFBuff;
2280 	OMX_U32                 ulOECFBuffSizeBytes;
2281 	OMX_TI_EXIFTAGSTATUS    eStatusShutterSpeedValue;
2282 	OMX_S32                 slShutterSpeedValue[2];
2283 	OMX_TI_EXIFTAGSTATUS    eStatusApertureValue;
2284 	OMX_U32                 ulApertureValue[2];
2285 	OMX_TI_EXIFTAGSTATUS    eStatusBrightnessValue;
2286 	OMX_S32                 slBrightnessValue[2];
2287 	OMX_TI_EXIFTAGSTATUS    eStatusExposureBiasValue;
2288 	OMX_S32                 slExposureBiasValue[2];
2289 	OMX_TI_EXIFTAGSTATUS    eStatusMaxApertureValue;
2290 	OMX_U32                 ulMaxApertureValue[2];
2291 	OMX_TI_EXIFTAGSTATUS    eStatusSubjectDistance;
2292 	OMX_U32                 ulSubjectDistance[2];
2293 	OMX_TI_EXIFTAGSTATUS    eStatusMeteringMode;
2294 	OMX_U16                 usMeteringMode;
2295 	OMX_TI_EXIFTAGSTATUS    eStatusLightSource;
2296 	OMX_U16                 usLightSource;
2297 	OMX_TI_EXIFTAGSTATUS    eStatusFlash;
2298 	OMX_U16                 usFlash;
2299 	OMX_TI_EXIFTAGSTATUS    eStatusFocalLength;
2300 	OMX_U32                 ulFocalLength[2];
2301 	OMX_TI_EXIFTAGSTATUS    eStatusSubjectArea;
2302 	OMX_U16                 usSubjectArea[4];
2303 	OMX_TI_EXIFTAGSTATUS    eStatusFlashEnergy;
2304 	OMX_U32                 ulFlashEnergy[2];
2305 	OMX_TI_EXIFTAGSTATUS    eStatusSpatialFrequencyResponse;
2306 	OMX_S8*                 pSpatialFrequencyResponseBuff;
2307 	OMX_U32                 ulSpatialFrequencyResponseBuffSizeBytes;
2308 	OMX_TI_EXIFTAGSTATUS    eStatusFocalPlaneXResolution;
2309 	OMX_U32                 ulFocalPlaneXResolution[2];
2310 	OMX_TI_EXIFTAGSTATUS    eStatusFocalPlaneYResolution;
2311 	OMX_U32                 ulFocalPlaneYResolution[2];
2312 	OMX_TI_EXIFTAGSTATUS    eStatusFocalPlaneResolutionUnit;
2313 	OMX_U16                 usFocalPlaneResolutionUnit;
2314 	OMX_TI_EXIFTAGSTATUS    eStatusSubjectLocation;
2315 	OMX_U16                 usSubjectLocation[2];
2316 	OMX_TI_EXIFTAGSTATUS    eStatusExposureIndex;
2317 	OMX_U32                 ulExposureIndex[2];
2318 	OMX_TI_EXIFTAGSTATUS    eStatusSensingMethod;
2319 	OMX_U16                 usSensingMethod;
2320 	OMX_TI_EXIFTAGSTATUS    eStatusFileSource;
2321 	OMX_S8                  cFileSource;
2322 	OMX_TI_EXIFTAGSTATUS    eStatusSceneType;
2323 	OMX_S8                  cSceneType;
2324 	OMX_TI_EXIFTAGSTATUS    eStatusCFAPattern;
2325 	OMX_S8*                 pCFAPatternBuff;
2326 	OMX_U32                 ulCFAPatternBuffSizeBytes;
2327 	OMX_TI_EXIFTAGSTATUS    eStatusCustomRendered;
2328 	OMX_U16                 usCustomRendered;
2329 	OMX_TI_EXIFTAGSTATUS    eStatusExposureMode;
2330 	OMX_U16                 usExposureMode;
2331 	OMX_TI_EXIFTAGSTATUS    eStatusWhiteBalance;
2332 	OMX_U16                 usWhiteBalance;
2333 	OMX_TI_EXIFTAGSTATUS    eStatusDigitalZoomRatio;
2334 	OMX_U32                 ulDigitalZoomRatio[2];
2335 	OMX_TI_EXIFTAGSTATUS    eStatusFocalLengthIn35mmFilm;
2336 	OMX_U16                 usFocalLengthIn35mmFilm;
2337 	OMX_TI_EXIFTAGSTATUS    eStatusSceneCaptureType;
2338 	OMX_U16                 usSceneCaptureType;
2339 	OMX_TI_EXIFTAGSTATUS    eStatusGainControl;
2340 	OMX_U16                 usGainControl;
2341 	OMX_TI_EXIFTAGSTATUS    eStatusContrast;
2342 	OMX_U16                 usContrast;
2343 	OMX_TI_EXIFTAGSTATUS    eStatusSaturation;
2344 	OMX_U16                 usSaturation;
2345 	OMX_TI_EXIFTAGSTATUS    eStatusSharpness;
2346 	OMX_U16                 usSharpness;
2347 	OMX_TI_EXIFTAGSTATUS    eStatusDeviceSettingDescription;
2348 	OMX_S8*                 pDeviceSettingDescriptionBuff;
2349 	OMX_U32                 ulDeviceSettingDescriptionBuffSizeBytes;
2350 	OMX_TI_EXIFTAGSTATUS    eStatusSubjectDistanceRange;
2351 	OMX_U16                 usSubjectDistanceRange;
2352 
2353 	OMX_TI_EXIFTAGSTATUS    eStatusImageUniqueID;
2354 	OMX_S8                  cImageUniqueID[33];
2355 	OMX_U8*                 pPrivateNextIFDPointer;    //Should not be used by the application
2356 	OMX_U8*                 pPrivateThumbnailSize;     //Should not be used by the application
2357 	OMX_U8*                 pPrivateTiffHeaderPointer; //Should not be used by the application
2358 
2359 	OMX_TI_EXIFTAGSTATUS    eStatusGpsVersionId;
2360 	OMX_U8                  ucGpsVersionId[4];
2361 	OMX_TI_EXIFTAGSTATUS    eStatusGpslatitudeRef;
2362 	OMX_S8                  cGpslatitudeRef[2];
2363 	OMX_TI_EXIFTAGSTATUS    eStatusGpsLatitude;
2364 	OMX_U32                 ulGpsLatitude[6];
2365 	OMX_TI_EXIFTAGSTATUS    eStatusGpsLongitudeRef;
2366 	OMX_S8                  cGpsLongitudeRef[2];
2367 	OMX_TI_EXIFTAGSTATUS    eStatusGpsLongitude;
2368 	OMX_U32                 ulGpsLongitude[6];
2369 	OMX_TI_EXIFTAGSTATUS    eStatusGpsAltitudeRef;
2370 	OMX_U8                  ucGpsAltitudeRef;
2371 	OMX_TI_EXIFTAGSTATUS    eStatusGpsAltitude;
2372 	OMX_U32                 ulGpsAltitude[2];
2373 	OMX_TI_EXIFTAGSTATUS    eStatusGpsTimeStamp;
2374 	OMX_U32                 ulGpsTimeStamp[6];
2375 	OMX_TI_EXIFTAGSTATUS    eStatusGpsSatellites;
2376 	OMX_S8*                 pGpsSatellitesBuff;
2377 	OMX_U32                 ulGpsSatellitesBuffSizeBytes;
2378 	OMX_TI_EXIFTAGSTATUS    eStatusGpsStatus;
2379 	OMX_S8                  cGpsStatus[2];
2380 	OMX_TI_EXIFTAGSTATUS    eStatusGpsMeasureMode;
2381 	OMX_S8                  cGpsMeasureMode[2];
2382 	OMX_TI_EXIFTAGSTATUS    eStatusGpsDop;
2383 	OMX_U32                 ulGpsDop[2];
2384 	OMX_TI_EXIFTAGSTATUS    eStatusGpsSpeedRef;
2385 	OMX_S8                  cGpsSpeedRef[2];
2386 	OMX_TI_EXIFTAGSTATUS    eStatusGpsSpeed;
2387 	OMX_U32                 ulGpsSpeed[2];
2388 	OMX_TI_EXIFTAGSTATUS    eStatusGpsTrackRef;
2389 	OMX_S8                  cGpsTrackRef[2];
2390 	OMX_TI_EXIFTAGSTATUS    eStatusGpsTrack;
2391 	OMX_U32                 ulGpsTrack[2];
2392 	OMX_TI_EXIFTAGSTATUS    eStatusGpsImgDirectionRef;
2393 	OMX_S8                  cGpsImgDirectionRef[2];
2394 	OMX_TI_EXIFTAGSTATUS    eStatusGpsImgDirection;
2395 	OMX_U32                 ulGpsImgDirection[2];
2396 	OMX_TI_EXIFTAGSTATUS    eStatusGpsMapDatum;
2397 	OMX_S8*                 pGpsMapDatumBuff;
2398 	OMX_U32                 ulGpsMapDatumBuffSizeBytes;
2399 	OMX_TI_EXIFTAGSTATUS    eStatusGpsDestLatitudeRef;
2400 	OMX_S8                  cGpsDestLatitudeRef[2];
2401 	OMX_TI_EXIFTAGSTATUS    eStatusGpsDestLatitude;
2402 	OMX_U32                 ulGpsDestLatitude[6];
2403 	OMX_TI_EXIFTAGSTATUS    eStatusGpsDestLongitudeRef;
2404 	OMX_S8                  cGpsDestLongitudeRef[2];
2405 	OMX_TI_EXIFTAGSTATUS    eStatusGpsDestLongitude;
2406 	OMX_U32                 ulGpsDestLongitude[6];
2407 	OMX_TI_EXIFTAGSTATUS    eStatusGpsDestBearingRef;
2408 	OMX_S8                  cGpsDestBearingRef[2];
2409 	OMX_TI_EXIFTAGSTATUS    eStatusGpsDestBearing;
2410 	OMX_U32                 ulGpsDestBearing[2];
2411 	OMX_TI_EXIFTAGSTATUS    eStatusGpsDestDistanceRef;
2412 	OMX_S8                  cGpsDestDistanceRef[2];
2413 	OMX_TI_EXIFTAGSTATUS    eStatusGpsDestDistance;
2414 	OMX_U32                 ulGpsDestDistance[2];
2415 	OMX_TI_EXIFTAGSTATUS    eStatusGpsProcessingMethod;
2416 	OMX_S8*                 pGpsProcessingMethodBuff;
2417 	OMX_U32                 ulGpsProcessingMethodBuffSizeBytes;
2418 	OMX_TI_EXIFTAGSTATUS    eStatusGpsAreaInformation;
2419 	OMX_S8*                 pGpsAreaInformationBuff;
2420 	OMX_U32                 ulGpsAreaInformationBuffSizeBytes;
2421 	OMX_TI_EXIFTAGSTATUS    eStatusGpsDateStamp;
2422 	OMX_S8                  cGpsDateStamp[11];
2423 	OMX_TI_EXIFTAGSTATUS    eStatusGpsDifferential;
2424 	OMX_U16                 usGpsDifferential;
2425 } OMX_TI_CONFIG_EXIF_TAGS;
2426 
2427 /**
2428  * The OMX_TI_SENFACING_TYPE enumeration is used to define the
2429  * sensor facing.
2430  */
2431 typedef enum OMX_TI_SENFACING_TYPE {
2432     OMX_TI_SENFACING_FRONT,
2433     OMX_TI_SENFACING_BACK,
2434     OMX_TI_SENFACING_MAX = 0x7FFFFFFF
2435 }OMX_TI_SENFACING_TYPE;
2436 
2437 /**
2438  * Structure used to configure current OMX_TI_SENMOUNT_TYPE
2439  *
2440  * @param nSenId
2441  * @param nRotation
2442  * @param bMirror
2443  * @param bFlip
2444  * @param eFacing
2445  */
2446 typedef struct OMX_TI_SENMOUNT_TYPE {
2447     OMX_U32             nSenId;
2448     OMX_U32             nRotation;
2449     OMX_BOOL                bMirror;
2450     OMX_BOOL                bFlip;
2451     OMX_TI_SENFACING_TYPE   eFacing;
2452 }OMX_TI_SENMOUNT_TYPE;
2453 
2454 /**
2455  * Structure used to configure current OMX_TI_VARFPSTYPE
2456  *
2457  * @param nVarFPSMin    Number of the smallest FPS supported.
2458  * @param nVarFPSMax    Number of the biggest FPS supported.
2459  */
2460 typedef struct OMX_TI_VARFPSTYPE {
2461     OMX_U32                 nVarFPSMin;
2462     OMX_U32                 nVarFPSMax;
2463 } OMX_TI_VARFPSTYPE;
2464 
2465 /**
2466  * Structure used to configure current OMX_TI_CONFIG_SHAREDBUFFER
2467  *
2468  * STRUCT MEMBERS:
2469  * nSize            : Size of the structure in bytes
2470  * nVersion         : OMX specification version information
2471  * nPortIndex       : Port that this structure applies to
2472  * nSharedBuffSize  : Size of the pSharedBuff in bytes
2473  * pSharedBuff      : Pointer to a buffer
2474  */
2475 typedef struct OMX_TI_CONFIG_SHAREDBUFFER {
2476 	OMX_U32 nSize;
2477 	OMX_VERSIONTYPE nVersion;
2478 	OMX_U32 nPortIndex;
2479 	OMX_U32 nSharedBuffSize;
2480 	OMX_U8* pSharedBuff;
2481 } OMX_TI_CONFIG_SHAREDBUFFER;
2482 
2483 /**
2484  * Structure used to configure current OMX_TI_CAPRESTYPE
2485  *
2486  * STRUCT MEMBERS:
2487  * nSize            : Size of the structure in bytes
2488  * nVersion         : OMX specification version information
2489  * nPortIndex       : Port that this structure applies to
2490  * nWidthMin        : Number of the smallest width supported
2491  * nHeightMin       : Number of the smallest height supported
2492  * nWidthMax        : Number of the biggest width supported
2493  * nHeightMax       : Number of the biggest height supported
2494  * nMaxResInPixels  : Max resolution in pixels. Used for description of 3d resolutions.
2495  */
2496 typedef struct OMX_TI_CAPRESTYPE {
2497     OMX_U32         nSize;          //- OMX struct header not required as this struct wont be queried on its own?
2498 	OMX_VERSIONTYPE nVersion;
2499 	OMX_U32         nPortIndex;
2500 	OMX_U32         nWidthMin;  // smallest width supported
2501 	OMX_U32         nHeightMin; // smallest height supported
2502 	OMX_U32         nWidthMax;  // biggest width supported
2503 	OMX_U32         nHeightMax; // biggest height supported
2504 	OMX_U32         nMaxResInPixels;// max resolution in pixels
2505 } OMX_TI_CAPRESTYPE;
2506 
2507 /**
2508  * Structure used to configure current OMX_TI_CAPTYPE
2509  *
2510  * STRUCT MEMBERS:
2511  * nSize                                : Size of the structure in bytes
2512  * nVersion                             : OMX specification version information
2513  * nPortIndex                           : Port that this structure applies to
2514  * ulPreviewFormatCount                 : Number of the supported preview pixelformat count
2515  * ePreviewFormats                      : Array containing the supported preview pixelformat count
2516  * ulImageFormatCount                   : Number of the supported image pixelformat count
2517  * eImageFormats                        : Array containing the supported image pixelformat count
2518  * tPreviewResRange                     : Supported preview resolution range
2519  * tRotatedPreviewResRange              : Supported rotated preview resolution range
2520  * tImageResRange                       : Supported image resolution range
2521  * tThumbResRange                       : Supported thumbnail resolution range
2522  * ulWhiteBalanceCount                  : Supported whitebalance mode count
2523  * eWhiteBalanceModes                   : Array containing the whitebalance modes
2524  * ulColorEffectCount                   : Supported effects count
2525  * eColorEffects                        : Array containing the supported effects
2526  * xMaxWidthZoom                        : Fixed point value stored as Q16 representing the maximum value for the Zoom allowed on Width
2527  * xMaxHeightZoom                       : Fixed point value stored as Q16 representing the maximum value for the Zoom allowed on Height
2528  * ulFlickerCount                       : Number of the supported anti-flicker modes
2529  * eFlicker                             : Array containing the supported anti-flicker modes
2530  * ulExposureModeCount                  : Number of the supported exposure modes
2531  * eExposureModes                       : Array containing the supported exposure modes
2532  * bLensDistortionCorrectionSupported   : Flag for Lens Distortion Correction Algorithm support
2533  * bISONoiseFilterSupported             : Flag for Noise Filter Algorithm support
2534  * xEVCompensationMin                   : Fixed point value stored as Q16 representing the EVCompensation minumum allowed value
2535  * xEVCompensationMax                   : Fixed point value stored as Q16 representing the EVCompensation maximum allowed value
2536  * nSensitivityMax                      : nSensitivityMax = 100 implies maximum supported equal to "ISO 100"
2537  * ulFocusModeCount                     : Number of the supported focus modes
2538  * eFocusModes                          : Array containing the supported focus modes
2539  * ulSceneCount                         : Number of the supported scenes
2540  * eSceneModes                          : Array containing the supported scenes
2541  * ulFlashCount                         : Number of the supported flash modes
2542  * eFlashModes                          : Array containing the supported flash modes
2543  * xFramerateMin                        : Fixed point value stored as Q16 representing the minimum framerate allowed
2544  * xFramerateMax                        : Fixed point value stored as Q16 representing the maximum framerate allowed
2545  * bContrastSupported                   : Flag showing if the contrast is supported
2546  * bSaturationSupported                 : Flag showing if the saturation is supported
2547  * bBrightnessSupported                 : Flag showing if the brightness is supported
2548  * bProcessingLevelSupported            : Flag showing if the processing level is supported
2549  * bQFactorSupported                    : Flag showing if the QFactor is supported
2550  * ulPrvVarFPSModesCount                : Number of preview FPS modes
2551  * tPrvVarFPSModes                      : Preview FPS modes
2552  * ulCapVarFPSModesCount                : Number of capture FPS modes
2553  * tCapVarFPSModes                      : Capture FPS modes
2554  * tSenMounting                         : Sensor mount information
2555  * ulAutoConvModesCount                 : Supported auto convergence modes count
2556  * eAutoConvModes                       : Array containing the auto convergence modes
2557  * ulBracketingModesCount               : Supported bracketing modes count
2558  * eBracketingModes                     : Array containing the bracketing modes
2559  * bGbceSupported                       : Flag showing if the Gbce is supported
2560  * bRawJpegSupported                    : Flag showing if the Raw + Jpeg is supported
2561  * ulImageCodingFormatCount             : Supported image coding formats count
2562  * eImageCodingFormat                   : Array containing the image coding formats
2563  * uSenNativeResWidth                   : Sensor native resolution width
2564  * uSenNativeResHeight                  : Sensor native resolution height
2565  * ulAlgoAreasFocusCount                : Supported number of AlgoAreas for focus areas
2566  * ulAlgoAreasExposureCount             : Supported number of AlgoAreas for exposure areas
2567  * bAELockSupported                     : Flag showing if the AE Lock is supported
2568  * bAWBLockSupported                    : Flag showing if the AWB Lock is supported
2569  * bAFLockSupported                     : Flag showing if the Af Lock is supported
2570  * nFocalLength                         : Focal length defined in terms of 0.01mm
2571  * ulPrvFrameLayoutCount                : supported frame layout count for preview
2572  * ePrvFrameLayout                      : Array containing the frame layouts for preview
2573  * ulCapFrameLayoutCount                : supported frame layout count for capture
2574  * eCapFrameLayout                      : Array containing the frame layouts for capture
2575  * bVideoNoiseFilterSupported           : Flag showing if the video noise filter is supported
2576  * bVideoStabilizationSupported         : Flag showing if the video stabilization is supported
2577  * bStillCapDuringVideoSupported        : Flag showing if the still capture is supported during video
2578  * bMechanicalMisalignmentSupported     : Flag showing if the mechanical misalignment is supported
2579  * bFacePrioritySupported               : Flag showing if the face priority is supported
2580  * bRegionPrioritySupported             : Flag showing if the region priority is supported
2581  * bGlbceSupported                      : Flag showing if the GLBCE is supported
2582  * nManualConvMin                       : Manual convergence min value
2583  * nManualConvMax                       : Manual convergence max value
2584  * nManualExpMin                        : Manual exposure time min value
2585  * nManualExpMax                        : Manual exposure time max value
2586  * nBrightnessMin                       : Brightness min value
2587  * nBrightnessMax                       : Brightness max value
2588  * nContrastMin                         : Contrast min value
2589  * nContrastMax                         : Contrast max value
2590  * nSharpnessMin                        : Sharpness min value
2591  * nSharpnessMax                        : Sharpness max value
2592  * nSaturationMin                       : Saturation min value
2593  * nSaturationMax                       : Saturation max value
2594  */
2595 typedef struct OMX_TI_CAPTYPE {
2596 	OMX_U32                         nSize;
2597 	OMX_VERSIONTYPE                 nVersion;
2598 	OMX_U32                         nPortIndex;
2599 	OMX_U16                         ulPreviewFormatCount;   // supported preview pixelformat count
2600 	OMX_COLOR_FORMATTYPE            ePreviewFormats[32];
2601 	OMX_U16                         ulImageFormatCount;     // supported image pixelformat count
2602 	OMX_COLOR_FORMATTYPE            eImageFormats[32];
2603 	OMX_TI_CAPRESTYPE               tPreviewResRange;       // supported preview resolution range
2604 	OMX_TI_CAPRESTYPE               tRotatedPreviewResRange;     // supported rotated preview resolution range
2605 	OMX_TI_CAPRESTYPE               tImageResRange;         // supported image resolution range
2606 	OMX_TI_CAPRESTYPE               tThumbResRange;         // supported thumbnail resolution range
2607 	OMX_U16                         ulWhiteBalanceCount;    // supported whitebalance mode count
2608 	OMX_WHITEBALCONTROLTYPE         eWhiteBalanceModes[32];
2609 	OMX_U16                         ulColorEffectCount;     // supported effects count
2610 	OMX_IMAGEFILTERTYPE             eColorEffects[32];
2611 	OMX_S32                         xMaxWidthZoom;          // Fixed point value stored as Q16
2612 	OMX_S32                         xMaxHeightZoom;         // Fixed point value stored as Q16
2613 	OMX_U16                         ulFlickerCount;         // supported anti-flicker mode count
2614 	OMX_COMMONFLICKERCANCELTYPE     eFlicker[32];
2615 	OMX_U16                         ulExposureModeCount;    // supported exposure mode count
2616 	OMX_EXPOSURECONTROLTYPE         eExposureModes[32];
2617 	OMX_BOOL                        bLensDistortionCorrectionSupported;
2618 	OMX_BOOL                        bISONoiseFilterSupported;
2619 	OMX_S32                         xEVCompensationMin;     // Fixed point value stored as Q16
2620 	OMX_S32                         xEVCompensationMax;     // Fixed point value stored as Q16
2621 	OMX_U32                         nSensitivityMax;        // nSensitivityMax = 100 implies maximum supported equal to "ISO 100"
2622 	OMX_U16                         ulFocusModeCount;       // supported focus mode count
2623 	OMX_IMAGE_FOCUSCONTROLTYPE      eFocusModes[32];
2624 	OMX_U16                         ulSceneCount;           // supported scene count
2625 	OMX_SCENEMODETYPE               eSceneModes[64];
2626 	OMX_U16                         ulFlashCount;           // supported flash modes count
2627 	OMX_IMAGE_FLASHCONTROLTYPE      eFlashModes[32];
2628 	OMX_U32                         xFramerateMin;          // Fixed point value stored as Q16
2629 	OMX_U32                         xFramerateMax;          // Fixed point value stored as Q16
2630 	OMX_BOOL                        bContrastSupported;
2631 	OMX_BOOL                        bSaturationSupported;
2632 	OMX_BOOL                        bBrightnessSupported;
2633 	OMX_BOOL                        bProcessingLevelSupported;
2634 	OMX_BOOL                        bQFactorSupported;
2635 	OMX_U16                         ulPrvVarFPSModesCount;  // supported variable FPS preview modes count
2636 	OMX_TI_VARFPSTYPE               tPrvVarFPSModes[10];
2637 	OMX_U16                         ulCapVarFPSModesCount;  // supported variable FPS capture modes count
2638 	OMX_TI_VARFPSTYPE               tCapVarFPSModes[10];
2639 	OMX_TI_SENMOUNT_TYPE            tSenMounting;
2640 	OMX_U16                         ulAutoConvModesCount;   // supported auto convergence modes count
2641 	OMX_TI_AUTOCONVERGENCEMODETYPE  eAutoConvModes[32];
2642 	OMX_U16                         ulBracketingModesCount; // supported bracketing modes count
2643 	OMX_BRACKETMODETYPE             eBracketingModes[32];
2644 	OMX_BOOL                        bGbceSupported;         // Flag showing if the Gbce is supported
2645 	OMX_BOOL                        bRawJpegSupported;      // Flag showing if the Raw + Jpeg issupported
2646 	OMX_U16                         ulImageCodingFormatCount;
2647 	OMX_IMAGE_CODINGTYPE            eImageCodingFormat[32];
2648 	OMX_U16                         uSenNativeResWidth;
2649 	OMX_U16                         uSenNativeResHeight;
2650         OMX_U16                        ulAlgoAreasFocusCount;
2651         OMX_U16                        ulAlgoAreasExposureCount;
2652     OMX_BOOL                       bAELockSupported;
2653     OMX_BOOL                       bAWBLockSupported;
2654     OMX_BOOL                       bAFLockSupported;
2655     OMX_U16                        nFocalLength;
2656     OMX_U16                        ulPrvFrameLayoutCount;       // supported frame layout count
2657     OMX_TI_STEREOFRAMELAYOUTTYPE   ePrvFrameLayout[16];
2658     OMX_U16                        ulCapFrameLayoutCount;       // supported frame layout count
2659     OMX_TI_STEREOFRAMELAYOUTTYPE   eCapFrameLayout[16];
2660     OMX_BOOL                       bVideoNoiseFilterSupported;
2661     OMX_BOOL                       bVideoStabilizationSupported;
2662     OMX_BOOL                       bStillCapDuringVideoSupported;
2663     OMX_BOOL                       bMechanicalMisalignmentSupported;
2664     OMX_BOOL                       bFacePrioritySupported;
2665     OMX_BOOL                       bRegionPrioritySupported;
2666     OMX_BOOL                       bGlbceSupported;
2667     OMX_S16                        nManualConvMin;
2668     OMX_S16                        nManualConvMax;
2669     OMX_U16                        nManualExpMin;
2670     OMX_U16                        nManualExpMax;
2671     OMX_S16                        nBrightnessMin;
2672     OMX_S16                        nBrightnessMax;
2673     OMX_S16                        nContrastMin;
2674     OMX_S16                        nContrastMax;
2675     OMX_S16                        nSharpnessMin;
2676     OMX_S16                        nSharpnessMax;
2677     OMX_S16                        nSaturationMin;
2678     OMX_S16                        nSaturationMax;
2679 } OMX_TI_CAPTYPE;
2680 
2681 
2682 
2683 /**
2684  * Defines 3A Face priority mode.
2685  *
2686  * STRUCT MEMBERS:
2687  *  nSize               : Size of the structure in bytes
2688  *  nVersion            : OMX specification version information
2689  *  nPortIndex          : Port that this structure applies to
2690  *  bAwbFaceEnable      : Enable Face priority for Auto White Balance
2691  *  bAeFaceEnable       : Enable Face priority for Auto Exposure
2692  *  bAfFaceEnable       : Enable Face priority for Auto Focus
2693  */
2694 typedef struct OMX_TI_CONFIG_3A_FACE_PRIORITY {
2695 	OMX_U32 nSize;
2696 	OMX_VERSIONTYPE nVersion;
2697 	OMX_U32 nPortIndex;
2698 	OMX_BOOL bAwbFaceEnable;
2699 	OMX_BOOL bAeFaceEnable;
2700 	OMX_BOOL bAfFaceEnable;
2701 } OMX_TI_CONFIG_3A_FACE_PRIORITY;
2702 
2703 /**
2704  * Defines 3A Region priority mode.
2705  *
2706  * STRUCT MEMBERS:
2707  *  nSize               : Size of the structure in bytes
2708  *  nVersion            : OMX specification version information
2709  *  nPortIndex          : Port that this structure applies to
2710  *  bAwbFaceEnable      : Enable Region priority for Auto White Balance
2711  *  bAeFaceEnable       : Enable Region priority for Auto Exposure
2712  *  bAfFaceEnable       : Enable Region priority for Auto Focus
2713  */
2714 typedef struct OMX_TI_CONFIG_3A_REGION_PRIORITY {
2715 	OMX_U32 nSize;
2716 	OMX_VERSIONTYPE nVersion;
2717 	OMX_U32 nPortIndex;
2718 	OMX_BOOL bAwbRegionEnable;
2719 	OMX_BOOL bAeRegionEnable;
2720 	OMX_BOOL bAfRegionEnable;
2721 } OMX_TI_CONFIG_3A_REGION_PRIORITY;
2722 
2723 /*
2724 * STRUCT MEMBERS:
2725 * nSize         : Size of the structure in bytes
2726 * nVersion      : OMX specification version information
2727 * nPortIndex    : Port that this structure applies to
2728 * bAutoConvergence : Enable/Disable Auto Convergence
2729 */
2730 typedef struct OMX_TI_PARAM_AUTOCONVERGENCETYPE {
2731 	OMX_U32 nSize;
2732 	OMX_VERSIONTYPE nVersion;
2733 	OMX_U32 nPortIndex;
2734 	OMX_BOOL bAutoConvergence;
2735 } OMX_TI_PARAM_AUTOCONVERGENCETYPE;
2736 
2737 /**
2738  * Focus distance configuration
2739  *
2740  *  STRUCT MEMBERS:
2741  *  nSize: Size of the structure in bytes
2742  *  nVersion: OMX specification version information
2743  *  nPortIndex: Port that this structure applies to
2744  *  nFocusDistanceNear : Specifies the near focus distance in mm ( 0 equals infinity )
2745  *  nFocusDistanceOptimal : Specifies the optimal focus distance in mm ( 0 equals infinity )
2746  *  nFocusDistanceFar : Specifies the far focus distance in mm ( 0 equals infinity )
2747  *  nLensPosition : Specifies the current lens position in driver units
2748  */
2749 typedef struct OMX_TI_CONFIG_FOCUSDISTANCETYPE {
2750     OMX_U32 nSize;
2751     OMX_VERSIONTYPE nVersion;
2752     OMX_U32 nPortIndex;
2753     OMX_U32 nFocusDistanceNear;
2754     OMX_U32 nFocusDistanceOptimal;
2755     OMX_U32 nFocusDistanceFar;
2756     OMX_S32 nLensPosition;
2757 } OMX_TI_CONFIG_FOCUSDISTANCETYPE;
2758 
2759 /**
2760  * The OMX_TI_BRIGHTNESSCONTRASTCRTLTYPE enumeration is used to define the
2761  * brightness and contrast mode types.
2762  */
2763 typedef enum OMX_TI_BRIGHTNESSCONTRASTCRTLTYPE {
2764 	OMX_TI_BceModeOff = 0,
2765 	OMX_TI_BceModeOn,
2766 	OMX_TI_BceModeAuto,
2767 	OMX_TI_BceModeMax = 0x7FFFFFFF
2768 } OMX_TI_BRIGHTNESSCONTRASTCRTLTYPE;
2769 
2770 /**
2771  * Local and global brightness contrast type.
2772  *
2773  * STRUCT MEMBERS:
2774  *  nSize             : Size of the structure in bytes
2775  *  nVersion          : OMX specification version information
2776  *  nPortIndex        : Port that this structure applies to
2777  *  eControl          : Control field for GLBCE
2778  */
2779 typedef struct OMX_TI_CONFIG_LOCAL_AND_GLOBAL_BRIGHTNESSCONTRASTTYPE {
2780 	OMX_U32 nSize;
2781 	OMX_VERSIONTYPE nVersion;
2782 	OMX_U32 nPortIndex;
2783 	OMX_TI_BRIGHTNESSCONTRASTCRTLTYPE eControl;
2784 } OMX_TI_CONFIG_LOCAL_AND_GLOBAL_BRIGHTNESSCONTRASTTYPE;
2785 
2786 /**
2787  * Uncompressed image operating mode configuration structure.
2788  *
2789  * @param nSize         Size of the structure in bytes.
2790  * @param nVersion      OMX specification version information.
2791  * @param xMin          The minimum frame rate allowed.
2792  *                      Units are Q16 frames per second.
2793  * @param xMax          The maximum frame rate allowed.
2794  *                      Units are Q16 frames per second.
2795  */
2796 
2797 typedef struct OMX_TI_CONFIG_VARFRMRANGETYPE {
2798     OMX_U32 nSize;
2799     OMX_VERSIONTYPE nVersion;
2800     OMX_U32 xMin;
2801     OMX_U32 xMax;
2802 } OMX_TI_CONFIG_VARFRMRANGETYPE;
2803 
2804 /**
2805  * Single preview capture modes
2806  */
2807     typedef enum OMX_TI_SINGLEPREVIEWMODETYPE {
2808         OMX_TI_SinglePreviewMode_PreviewOnly,
2809         OMX_TI_SinglePreviewMode_Video,
2810         OMX_TI_SinglePreviewMode_ImageCapture,
2811         OMX_TI_SinglePreviewMode_ImageCaptureHighSpeed,
2812         OMX_TI_SinglePreviewMode_Reprocess,
2813         OMX_TI_SinglePreviewMode = 0x7FFFFFFF
2814     } OMX_TI_SINGLEPREVIEWMODETYPE;
2815 
2816 /**
2817  * Define configuration structure for
2818  * single preview capture mode
2819  *
2820  * STRUCT MEMBERS:
2821  *  nSize               : Size of the structure in bytes
2822  *  nVersion            : OMX specification version information
2823  *  eMode               : Select the subusecase mode (Video/HQ/HS)
2824  */
2825     typedef struct OMX_TI_CONFIG_SINGLEPREVIEWMODETYPE {
2826         OMX_U32                      nSize;
2827         OMX_VERSIONTYPE              nVersion;
2828         OMX_TI_SINGLEPREVIEWMODETYPE eMode;
2829     } OMX_TI_CONFIG_SINGLEPREVIEWMODETYPE;
2830 
2831 
2832 /**
2833  * Configuratin structure for freeze AWB parameter modifications.
2834  *
2835  * @param nSize         Size of the structure in bytes.
2836  * @param nVersion      OMX specification version information.
2837  * @param nPortIndex    Port index to which to apply.
2838  * @param nTimeDelay    Time for which the AWB parameters to be frozen.
2839  *                                             measured in milliseconds
2840  */
2841     typedef struct OMX_TI_CONFIG_FREEZE_AWB {
2842         OMX_U32         nSize;
2843         OMX_VERSIONTYPE nVersion;
2844         OMX_U32         nPortIndex;
2845         OMX_U32         nTimeDelay;
2846     } OMX_TI_CONFIG_FREEZE_AWB;
2847 
2848 /**
2849  * Configuration structure used to set
2850  * minimum time between two sequential WB coefficients modifications.
2851  *
2852  * @param nSize         Size of the structure in bytes.
2853  * @param nVersion      OMX specification version information.
2854  * @param nPortIndex    Port index to which to apply.
2855  * @param nDelayTime    The time in milliseconds.
2856  */
2857     typedef struct OMX_TI_CONFIG_AWB_DELAY {
2858         OMX_U32         nSize;
2859         OMX_VERSIONTYPE nVersion;
2860         OMX_U32         nPortIndex;
2861         OMX_U32         nDelayTime;
2862     } OMX_TI_CONFIG_AWB_DELAY;
2863 
2864 /**
2865  * Configuration structure used to set
2866  * minimum time delay between
2867  * two sequential AE parameters modifications
2868  *
2869  * @param nSize         Size of the structure in bytes.
2870  * @param nVersion      OMX specification version information.
2871  * @param nPortIndex    Port index to which to apply.
2872  * @param nDelayTime    The time in milliseconds.
2873  */
2874     typedef struct OMX_TI_CONFIG_AE_DELAY {
2875         OMX_U32         nSize;
2876         OMX_VERSIONTYPE nVersion;
2877         OMX_U32         nPortIndex;
2878         OMX_U32         nDelayTime;
2879     } OMX_TI_CONFIG_AE_DELAY;
2880 
2881 
2882 /**
2883  * Configuration structure used to freeze AE modifications
2884  * for a nTimeDelay milliseconds
2885  *
2886  * @param nSize         Size of the structure in bytes.
2887  * @param nVersion      OMX specification version information.
2888  * @param nPortIndex    Port index to which to apply.
2889  * @param nTimeDelay    The time in milliseconds.
2890  */
2891     typedef struct OMX_TI_CONFIG_FREEZE_AE {
2892         OMX_U32         nSize;
2893         OMX_VERSIONTYPE nVersion;
2894         OMX_U32         nPortIndex;
2895         OMX_U32         nTimeDelay;
2896     } OMX_TI_CONFIG_FREEZE_AE;
2897 
2898 /**
2899  * Configuration structure used to set
2900  * the AE gain threshold
2901  *
2902  * @param nSize         Size of the structure in bytes.
2903  * @param nVersion      OMX specification version information.
2904  * @param uMinTH        Minimum value for AE gain.
2905  * @param uMaxTH        Maximum value for AE gain.
2906  */
2907     typedef struct OMX_TI_CONFIG_AE_THRESHOLD {
2908         OMX_U32         nSize;
2909         OMX_VERSIONTYPE nVersion;
2910         OMX_U32         nPortIndex;
2911         OMX_U32         uMinTH;
2912         OMX_U32         uMaxTH;
2913     } OMX_TI_CONFIG_AE_THRESHOLD;
2914 
2915 /**
2916  * Enumeration describing the main gestures
2917  */
2918     typedef enum OMX_TI_GESTURES_TYPE {
2919         OMX_TI_GESTURE_NO_GESTURE = 0x70000001,
2920         OMX_TI_GESTURE_SWIPE_RIGHT,
2921         OMX_TI_GESTURE_SWIPE_LEFT,
2922         OMX_TI_GESTURE_FIST_RIGHT,
2923         OMX_TI_GESTURE_FIST_LEFT,
2924 
2925         OMX_TI_GESTURE_COUNT,
2926         OMX_TI_GESTURE_MAX = 0x7FFFFFFF
2927     } OMX_TI_GESTURES_TYPE;
2928 
2929 /**
2930  * Enumeration describing the main gesture objects
2931  */
2932     typedef enum OMX_TI_OBJECT_TYPE {
2933         OMX_TI_OBJECT_PALM,
2934         OMX_TI_OBJECT_FIST,
2935         OMX_TI_OBJECT_FACE,
2936 
2937         OMX_TI_OBJECT_MAX = 0x7FFFFFFF
2938     } OMX_TI_OBJECT_TYPE;
2939 
2940 /**
2941  * Data structure carrying information about
2942  * objects located at a certain area of frame buffer.
2943  *
2944  * @param nSize         Size of the structure in bytes.
2945  * @param nVersion      OMX specification version information.
2946  * @param nPortIndex    Port index to which to apply.
2947  * @param eType         The object type.
2948  * @param nTop          The top coordinate.
2949  * @param nLeft         The left coordinate.
2950  * @param nWidth        The width of the object.
2951  * @param nHeight       The height of the object.
2952  */
2953     typedef struct OMX_CONFIG_OBJECT_RECT_TYPE {
2954         OMX_U32            nSize;
2955         OMX_VERSIONTYPE    nVersion;
2956         OMX_U32            nPortIndex;
2957         OMX_TI_OBJECT_TYPE eType;
2958         OMX_S32            nTop;
2959         OMX_S32            nLeft;
2960         OMX_U32            nWidth;
2961         OMX_U32            nHeight;
2962     } OMX_CONFIG_OBJECT_RECT_TYPE;
2963 
2964 /**
2965  * Data structure carrying information about
2966  * gestures detected at a certain frame.
2967  *
2968  * @param nSize                 Size of the structure in bytes.
2969  * @param nVersion              OMX specification version information.
2970  * @param nPortIndex            Port index to which to apply.
2971  * @param nTimeStamp            Frame id.
2972  * @param eType                 Type of the gesture detected at that frame.
2973  * @param nNumDetectedGestures  Number ot the areas of the frame in which this gesture is detected.
2974  * @param nGestureAreas         The areas where this gesture is detected.
2975  */
2976     typedef struct OMX_TI_CONFIG_GESTURES_INFO {
2977         OMX_U32                     nSize;
2978         OMX_VERSIONTYPE             nVersion;
2979         OMX_U32                     nPortIndex;
2980         OMX_TICKS                   nTimeStamp;
2981         OMX_TI_GESTURES_TYPE        eType;
2982         OMX_U32                     nNumDetectedGestures;
2983         OMX_CONFIG_OBJECT_RECT_TYPE nGestureAreas[35];
2984     } OMX_TI_CONFIG_GESTURES_INFO;
2985 
2986 /**
2987 * Define the frames queue len for ZSL
2988 *
2989 * STRUCT MEMBERS:
2990 * nSize: Size of the structure in bytes
2991 * nVersion: OMX specification version information
2992 * nHistoryLen: History len in number of frames
2993 */
2994     typedef struct OMX_TI_PARAM_ZSLHISTORYLENTYPE {
2995         OMX_U32         nSize;
2996         OMX_VERSIONTYPE nVersion;
2997         OMX_U32         nHistoryLen;
2998     } OMX_TI_PARAM_ZSLHISTORYLENTYPE;
2999 
3000 /**
3001 * Define the frame delay in ms for ZSL
3002 *
3003 * STRUCT MEMBERS:
3004 * nSize: Size of the structure in bytes
3005 * nVersion: OMX specification version information
3006 * nDelay: Capture frame delay in ms
3007 */
3008     typedef struct OMX_TI_CONFIG_ZSLDELAYTYPE {
3009         OMX_U32         nSize;
3010         OMX_VERSIONTYPE nVersion;
3011         OMX_S32         nDelay;
3012     } OMX_TI_CONFIG_ZSLDELAYTYPE;
3013 
3014 /**
3015 * AlogAreas purpose
3016 * This type specifies the purpose of areas specified in OMX_ALGOAREASTYPE.
3017 * */
3018     typedef enum OMX_ALGOAREAPURPOSE{
3019         OMX_AlgoAreaFocus = 0, // Multi region focus
3020         OMX_AlgoAreaExposure,
3021     }OMX_ALGOAREAPURPOSE;
3022 
3023     typedef  struct OMX_ALGOAREA {
3024         OMX_S32 nLeft;                      /**< The leftmost coordinate of the area rectangle */
3025         OMX_S32 nTop;                       /**< The topmost coordinate of the area rectangle */
3026         OMX_U32 nWidth;                     /**< The width of the area rectangle in pixels */
3027         OMX_U32 nHeight;                    /**< The height of the area rectangle in pixels */
3028         OMX_U32 nPriority;                  /**< Priority - ranges from 1 to 1000 */
3029     }OMX_ALGOAREA;
3030 
3031 /**
3032 * Algorythm areas type
3033 * This type defines areas for Multi Region Focus,
3034 * or another algorithm region parameters,
3035 * such as Multi Region Auto Exposure.
3036 *
3037 * STRUCT MEMBERS:
3038 *  nSize            : Size of the structure in bytes
3039 *  nVersion         : OMX specification version information
3040 *  nPortIndex       : Port index
3041 *  tAreaPosition    : Area definition - coordinates and purpose - Multi Region Focus, Auto Exposure, etc.
3042 *  nNumAreas        : Number of areas defined in the array
3043 *  nAlgoAreaPurpose : Algo area purpose - eg. Multi Region Focus is OMX_AlgoAreaFocus
3044 */
3045     typedef  struct OMX_ALGOAREASTYPE {
3046         OMX_U32 nSize;
3047         OMX_VERSIONTYPE nVersion;
3048         OMX_U32 nPortIndex;
3049 
3050         OMX_U32 nNumAreas;
3051         OMX_ALGOAREA tAlgoAreas[MAX_ALGOAREAS];
3052         OMX_ALGOAREAPURPOSE nAlgoAreaPurpose;
3053     } OMX_ALGOAREASTYPE;
3054 
3055 /*==========================================================================*/
3056 /*!
3057 @brief OMX_TI_PARAM_ENHANCEDPORTRECONFIG : Suport added to new port reconfig usage
3058 @param bUsePortReconfigForCrop       Enables port reconfig for crop.
3059 @param bUsePortReconfigForPadding    Enables port reconfig for padding
3060 */
3061 /*==========================================================================*/
3062 
3063 typedef struct OMX_TI_PARAM_ENHANCEDPORTRECONFIG {
3064     OMX_U32 nSize;
3065     OMX_VERSIONTYPE nVersion;
3066     OMX_U32 nPortIndex;
3067     OMX_BOOL bUsePortReconfigForCrop;
3068     OMX_BOOL bUsePortReconfigForPadding;
3069 } OMX_TI_PARAM_ENHANCEDPORTRECONFIG;
3070 
3071 
3072 typedef struct {
3073     OMX_U16 nVPos; //!< AEWINSTART WINSV  //AFPAXSTART PAXSV
3074     OMX_U8  nVSize; //!< AEWWIN1 WINW      //AFPAX1 PAXH
3075     OMX_U16 nHPos; //!< AEWINSTART WINSH  //AFPAXSTART PAXSH
3076     OMX_U8  nHSize; //!< AEWWIN1 WINH      //AFPAX1 PAXW
3077     OMX_U8  nVCount; //!< AEWWIN1 WINVC     //AFPAX2 PAXVC
3078     OMX_U8  nVIncr; //!< AEWSUBWIN AEWINCV //AFPAX2 AFINCV
3079     OMX_U8  nHCount; //!< AEWWIN1 WINHC     //AFPAX2 PAXHC
3080     OMX_U8  nHIncr; //!< AEWSUBWIN AEWINCH //AFPAX2 AFINCH
3081 }OMX_TI_H3aPAXELCFG;
3082 
3083 typedef struct {
3084     /** Average value for red pixels in current paxel */
3085     OMX_U16 red;
3086     /** Average value for green pixels in current paxel */
3087     OMX_U16 green;
3088     /** Average value for blue pixels in current paxel */
3089     OMX_U16 blue;
3090     /** Flag indicating whether current paxel is valid 0:invalid, !0:valid */
3091     OMX_U16 valid;
3092 } OMX_TI_H3AAEWBPAXELDATA;
3093 
3094 typedef struct OMX_TI_H3AAFDATA {
3095     OMX_U32 nSize;                                          /**< The size of the structure
3096                                                                                                including the length of data field containing the histogram data */
3097     OMX_VERSIONTYPE       nVersion;
3098     OMX_U32               nPortIndex;
3099     OMX_TI_CAMERAVIEWTYPE eCameraView;
3100     OMX_U8               *data;
3101 } OMX_TI_H3AAFDATA;
3102 
3103 /**
3104 * Data structure carrying information about
3105 * VTC slice height.
3106 *
3107 * @param nSize Size of the structure in bytes.
3108 * @param nVersion OMX specification version information.
3109 * @param nSliceHeight Definition of slice height.
3110 *
3111 *
3112 *
3113 *
3114 */
3115 typedef struct OMX_TI_PARAM_VTCSLICE {
3116     OMX_U32         nSize;
3117     OMX_VERSIONTYPE nVersion;
3118     OMX_U32         nSliceHeight;
3119     OMX_U32         nInternalBuffers;
3120     OMX_PTR         IonBufhdl[2];
3121 } OMX_TI_PARAM_VTCSLICE;
3122 
3123 
3124 /**
3125  *  nSize is the size of the structure including the length of data field containing
3126  *  the histogram data.
3127  *  nBins is the number of bins in the histogram.
3128  *  eComponentType specifies the type of the histogram bins according to enum.
3129  *  It can be selected to generate multiple component types, then the extradata struct
3130  *  is repeated for each component type.
3131  */
3132 typedef struct OMX_TI_HISTOGRAMTYPE {
3133     OMX_U32 nSize;                      /**< The size of the structure
3134                                              including the length of data field containing the histogram data */
3135     OMX_VERSIONTYPE       nVersion;
3136     OMX_U32               nPortIndex;
3137     OMX_TI_CAMERAVIEWTYPE eCameraView;
3138     OMX_U32               nBins;        /**< The number of bins in the histogram */
3139     OMX_HISTCOMPONENTTYPE eComponentType; /**< Specifies the type of the histogram bins according to enum.
3140                                              It can be selected to generate multiple component types,
3141                                              then the extradata struct is repeated for each component type */
3142     OMX_U8 *data;
3143 } OMX_TI_HISTOGRAMTYPE;
3144 
3145 
3146 
3147 typedef struct OMX_TI_CPCAMDATA {
3148     OMX_U32               nSize;
3149     OMX_VERSIONTYPE       nVersion;
3150     OMX_U32               nPortIndex;
3151     OMX_TI_CAMERAVIEWTYPE eCameraView;
3152 
3153     /* Face Detect */
3154     OMX_U16           ulFaceCount;     // faces detected
3155     OMX_TI_FACERESULT tFacePosition[35];     // 35 is max faces supported by FDIF
3156 
3157 
3158     /**** Ancillary Data ******/
3159     OMX_U32 nFrameNumber;
3160     OMX_U16 nInputImageHeight;
3161     OMX_U16 nInputImageWidth;
3162     OMX_U16 nOutputImageHeight;
3163     OMX_U16 nOutputImageWidth;
3164     OMX_U16 nDigitalZoomFactor;
3165     OMX_S16 nCropCenterColumn;
3166     OMX_S16 nCropCenterRow;
3167     OMX_U16 nOpticalZoomValue;
3168     OMX_U8  nAFStatus;
3169     OMX_U8  nAWBStatus;
3170     OMX_U8  nAEStatus;
3171     OMX_U32 nExposureTime;
3172     OMX_U16 nEVCompensation;
3173     OMX_U8  nDigitalGainValue;
3174     OMX_U8  nAnalogGainValue;
3175     OMX_U16 nCurrentISO;
3176     OMX_U16 nReferenceISO;
3177     OMX_U8  nApertureValue;
3178     OMX_U8  nPixelRange;
3179     OMX_U8  nCameraShake;
3180     OMX_U8  nNumFacesDetected;
3181 
3182     /* Not Yet Supported */
3183     OMX_U16 nFocalDistance;
3184     OMX_U16 nShotNumber;
3185     OMX_U8  nFlashStatus;
3186 
3187 
3188     /***  White Balance gains ****/
3189     /**< White Balance Color Temperature in Kelvins */
3190     OMX_U16 nColorTemperature;
3191 
3192     /**< Bayer applied R color channel gain in (U13Q9) */
3193     OMX_U16 nGainR;
3194 
3195     /**< Bayer applied Gr color channel gain in (U13Q9) */
3196     OMX_U16 nGainGR;
3197 
3198     /**< Bayer applied Gb color channel gain in (U13Q9) */
3199     OMX_U16 nGainGB;
3200 
3201     /**< Bayer applied B color channel gain in (U13Q9) */
3202     OMX_U16 nGainB;
3203 
3204     /* BELOW  ARE NOT   SUPPORTED , Default set to 0 */
3205     OMX_S16 nOffsetR;              /**< Bayer applied R color channel offset */
3206     OMX_S16 nOffsetGR;             /**< Bayer applied Gr color channel offset */
3207     OMX_S16 nOffsetGB;             /**< Bayer applied Gb color channel offset */
3208     OMX_S16 nOffsetB;              /**< Bayer applied B color channel offset */
3209 
3210 
3211     /* AEWB,AF,HIST data size */
3212     OMX_U32 nAewbDataSize;
3213     OMX_U32 nAfDataSize;
3214     OMX_U32 nHistSize;
3215 
3216 
3217 
3218     /*** H3A AF-AEW DATA ***/
3219     OMX_TI_H3aPAXELCFG       tAfPaxelWin;
3220     OMX_TI_H3aPAXELCFG       tAewbPaxelWin;
3221     OMX_TI_H3AAEWBPAXELDATA *tpPaxel;
3222     OMX_TI_H3AAFDATA         tH3A_Af;
3223     /* Histogram */
3224     OMX_TI_HISTOGRAMTYPE Histogram;
3225 
3226 
3227 } OMX_TI_CPCAMDATA;
3228 
3229 /**
3230 * Start/Stop mechanical misalignment
3231 *
3232 * STRUCT MEMBERS:
3233 * nSize: Size of the structure in bytes
3234 * nVersion: OMX specification version information
3235 * nDelay: Capture frame delay in ms
3236 */
3237     typedef struct OMX_TI_CONFIG_MM {
3238         OMX_U32         nSize;
3239         OMX_VERSIONTYPE nVersion;
3240        OMX_BOOL        bMM;
3241     } OMX_TI_CONFIG_MM;
3242 
3243 /**
3244 * Start/Stop Affine transformation for Mm/Ac
3245 *
3246 * STRUCT MEMBERS:
3247 * nSize: Size of the structure in bytes
3248 * nVersion: OMX specification version information
3249 * bAffine: Enable / Disable
3250 */
3251     typedef struct OMX_TI_PARAM_AFFINE {
3252         OMX_U32         nSize;
3253         OMX_VERSIONTYPE nVersion;
3254         OMX_BOOL        bAffine;
3255         } OMX_TI_PARAM_AFFINE;
3256 
3257 /**
3258 * A pointer to this struct is passed to the OMX_SetParameter when the extension
3259 * index for the 'OMX.google.android.index.enableAndroidNativeBuffers' extension
3260 * is given.
3261 * The corresponding extension Index is OMX_TI_IndexUseNativeBuffers.
3262 * This will be used to inform OMX about the presence of gralloc pointers instead
3263 * of virtual pointers
3264 */
3265 typedef struct OMX_TI_PARAMUSENATIVEBUFFER {
3266     OMX_U32 nSize;
3267     OMX_VERSIONTYPE nVersion;
3268     OMX_U32 nPortIndex;
3269     OMX_BOOL bEnable;
3270 } OMX_TI_PARAMUSENATIVEBUFFER;
3271 
3272 /**
3273 * A pointer to this struct is passed to OMX_GetParameter when the extension
3274 * index for the 'OMX.google.android.index.getAndroidNativeBufferUsage'
3275 * extension is given.
3276 * The corresponding extension Index is OMX_TI_IndexAndroidNativeBufferUsage.
3277 * The usage bits returned from this query will be used to allocate the Gralloc
3278 * buffers that get passed to the useAndroidNativeBuffer command.
3279 */
3280 typedef struct OMX_TI_PARAMNATIVEBUFFERUSAGE {
3281     OMX_U32 nSize;
3282     OMX_VERSIONTYPE nVersion;
3283     OMX_U32 nPortIndex;
3284     OMX_U32 nUsage;
3285 } OMX_TI_PARAMNATIVEBUFFERUSAGE;
3286 
3287 /**
3288  * OMX_TI_ZSL_PRIORITY_TYPE Enumerated Value
3289  */
3290 typedef enum OMX_TI_ZSL_PRIORITY_TYPE {
3291     OMX_TI_ZSL_PRIORITY_TIME,
3292     OMX_TI_ZSL_PRIORITY_FOCUS,
3293     OMX_TI_ZSL_PRIORITY = 0x7FFFFFFF
3294 } OMX_TI_ZSL_PRIORITY_TYPE;
3295 
3296 /**
3297 * Define the priority tha twill be used to select ZSL frame
3298 *
3299 * STRUCT MEMBERS:
3300 * nSize: Size of the structure in bytes
3301 * nVersion: OMX specification version information
3302 * ePriority: Priority
3303 */
3304 typedef struct OMX_TI_CONFIG_ZSLFRAMESELECTPRIOTYPE {
3305     OMX_U32                  nSize;
3306     OMX_VERSIONTYPE          nVersion;
3307     OMX_TI_ZSL_PRIORITY_TYPE ePriority;
3308 } OMX_TI_CONFIG_ZSLFRAMESELECTPRIOTYPE;
3309 
3310 /**
3311 * MIPI, ECC, and CRC counters
3312 * Mipi counter counts the frames from the MIPI receiver (CSI_RX).
3313 * TCMD application will use this test
3314 * to validate the MIPI channel integrity (TX to RX).
3315 *
3316 * STRUCT MEMBERS:
3317 *  nSize              : Size of the structure in bytes
3318 *  nVersion           : OMX specification version information
3319 *  nPortIndex         : Port that this structure applies to
3320 *  bResetMIPICounter  : if OMX_SetConfig() is called with value True
3321 *                       for this parameter, the MIPICounter shall be reset to 0, by ducati.
3322 *  nMIPICounter       : MIPI frame counter
3323 *  nECCCounter        : ECC counter
3324 *  nCRCCounter        : CRC counter
3325 */
3326 typedef struct OMX_CONFIG_MIPICOUNTERS {
3327     OMX_U32         nSize;
3328     OMX_VERSIONTYPE nVersion;
3329     OMX_U32         nPortIndex;
3330     OMX_BOOL        bResetMIPICounter;
3331     OMX_U32         nMIPICounter;
3332     OMX_U32         nECCCounter;
3333     OMX_U32         nCRCCounter;
3334     OMX_U32         nFifoOvfCounter;
3335     OMX_U32         nOCPCounter;
3336     OMX_U32         nEccCorrCounter;
3337     OMX_U32         SoTErrCnt;
3338     OMX_U32         SoTSyncErrCnt;
3339     OMX_U32         ULPMCnt;
3340     OMX_U32         ULPMExitCnt;
3341     OMX_U32         ULPMEnterCnt;
3342     OMX_U32         ControlErrCnt;
3343     OMX_U32         ErrEscapeCnt;
3344     OMX_U32         CSIRxTimeoutCnt;
3345     OMX_U32         bStopStartCntrs;
3346 } OMX_CONFIG_MIPICOUNTERS;
3347 
3348 /**
3349 * CSI Timing Register
3350 *
3351 * STRUCT MEMBERS:
3352 *  nSize              : Size of the structure in bytes
3353 *  nVersion           : OMX specification version information
3354 *  nPortIndex         : Port that this structure applies to
3355 *  nReadWrite         : if OMX_SetConfig() is called with value True
3356 *                       for this parameter, the ISS_CAMERARX_CORE1_REG0 register will be
3357 *                       written with the supplied values below.
3358 *  nThsSettle         :
3359 *  nThsTerm           :
3360 *  nHsClkCfg          :
3361 */
3362 typedef struct OMX_CONFIG_CSITIMINGRW {
3363     OMX_U32         nSize;
3364     OMX_VERSIONTYPE nVersion;
3365     OMX_U32         nPortIndex;
3366     OMX_U8          nReadWrite;
3367     OMX_U8          nThsSettle;
3368     OMX_U8          nThsTerm;
3369     OMX_U8          nHsClkCfg;
3370 } OMX_CONFIG_CSITIMINGRW;
3371 
3372 /**
3373 * CSI Complex IO Data
3374 *
3375 * STRUCT MEMBERS:
3376 *  nSize              : Size of the structure in bytes
3377 *  nVersion           : OMX specification version information
3378 *  nPortIndex         : Port that this structure applies to
3379 *  nFrameCount        : Recieved Frames on the CSI2Rx
3380 *  nLaneCount         : Number of active lanes
3381 *  nCSISpeed          : CSI2Rx speed
3382 */
3383 typedef struct OMX_CONFIG_CSICMPXIO {
3384     OMX_U32         nSize;
3385     OMX_VERSIONTYPE nVersion;
3386     OMX_U32         nPortIndex;
3387     OMX_U32         nFrameCount;
3388     OMX_U32         nLaneCount;
3389     OMX_U32         nCSISpeed;
3390 } OMX_CONFIG_CSICMPXIO;
3391 
3392 /**
3393  * Auto Focus Score
3394  *
3395  *  STRUCT MEMBERS:
3396  *  nSize              : Size of the structure in bytes
3397  *  nVersion           : OMX specification version information
3398  *  nPortIndex         : Port that this structure applies to
3399  *  nAutoFocusScore    : Auto Focus Score
3400  */
3401 typedef struct OMX_CONFIG_AUTOFOCUSSCORE {
3402     OMX_U32         nSize;
3403     OMX_VERSIONTYPE nVersion;
3404     OMX_U32         nPortIndex;
3405     OMX_U32         nAutoFocusScore;
3406 } OMX_CONFIG_AUTOFOCUSSCORE;
3407 
3408 /**
3409  * Color Bar test pattern
3410  *
3411  *  STRUCT MEMBERS:
3412  *  nSize              : Size of the structure in bytes
3413  *  nVersion           : OMX specification version information
3414  *  nPortIndex         : Port that this structure applies to
3415  *  bEnableColorBars   : Enable Color Bars test pattern
3416  */
3417 typedef struct OMX_CONFIG_COLORBARS {
3418     OMX_U32         nSize;
3419     OMX_VERSIONTYPE nVersion;
3420     OMX_U32         nPortIndex;
3421     OMX_U32         bEnableColorBars;
3422 } OMX_CONFIG_COLORBARS;
3423 
3424 /**
3425 * Sensor OTP EEEPROM data
3426 *
3427 *  STRUCT MEMBERS:
3428 *  nSize              : Size of the structure in bytes
3429 *  nVersion           : OMX specification version information
3430 *  nPortIndex         : Port that this structure applies to
3431 *  pData              : pointer to the client's buffer
3432 *  nDataSize          : size of the EEPROM data in bytes
3433 *  nClientDataSize    : size of the client's buffer
3434 *  SensorIndex        : index of the eeprom buffer
3435 */
3436 typedef struct OMX_CONFIG_OTPEEPROM {
3437     OMX_U32         nSize;
3438     OMX_VERSIONTYPE nVersion;
3439     OMX_U32         nPortIndex;
3440     OMX_PTR         pData;
3441     OMX_U32         nDataSize;
3442     OMX_U32         nClientDataSize;
3443     OMX_U8          SensorIndex;
3444 }OMX_CONFIG_OTPEEPROM;
3445 
3446 /**
3447  * The OMX_ISP_TYPE enumeration is used to define the
3448  * TI ISP & ST ISP types.
3449  */
3450 typedef enum OMX_ISP_TYPE {
3451     OMX_TIISP = 0,
3452     OMX_STISP= 1,
3453     OMX_ISPUnknown
3454 } OMX_ISP_TYPE;
3455 
3456 /**
3457 * ISP Information
3458 *
3459 *  STRUCT MEMBERS:
3460 *  nSize              : Size of the structure in bytes
3461 *  nVersion           : OMX specification version information
3462 *  nPortIndex         : Port that this structure applies to
3463 *  eIspType              : ISP Type (TI ISP/ ST ISP)
3464 *  nHardwareVersion    : Hardware version of ISP
3465 *  nSoftwareVersion        : Software version of ISP
3466 */
3467 typedef struct OMX_CONFIG_ISPINFO {
3468     OMX_U32         nSize;
3469     OMX_VERSIONTYPE nVersion;
3470     OMX_U32         nPortIndex;
3471     OMX_ISP_TYPE    eIspType;
3472     OMX_U32         nHardwareVersion;
3473     OMX_U32         nSoftwareVersion;
3474     OMX_S8          cDucatiVersion[32];
3475 }OMX_CONFIG_ISPINFO;
3476 
3477 typedef enum OMX_TI_PORTTAPPOINTTYPE {
3478     OMX_TI_PortTap_Bayer_SensorOutput,
3479     OMX_TI_PortTap_Bayer_PostLsc,
3480     OMX_TI_PortTap_Bayer_PreBayerToYUVConversion,
3481     OMX_TI_PortTap_YUV_PostBayerToYUVConversion,
3482     OMX_TI_PortTap_YUV_PreJPEGCompression,
3483     OMX_TI_PortTap = 0x7FFFFFFF
3484 } OMX_TI_PORTTAPPOINTTYPE;
3485 
3486 /**
3487  * Define configuration structure for
3488  * tap in/out points for the selected port
3489  *
3490  * STRUCT MEMBERS:
3491  *  nSize       : Size of the structure in bytes
3492  *  nVersion    : OMX specification version information
3493  *  nPortIndex  : Port that this structure applies to
3494  *  eTapPoint   : Select the tap in/out point for the port
3495  */
3496 typedef struct OMX_TI_CONFIG_PORTTAPPOINTTYPE {
3497     OMX_U32                 nSize;
3498     OMX_VERSIONTYPE         nVersion;
3499     OMX_U32                 nPortIndex;
3500     OMX_TI_PORTTAPPOINTTYPE eTapPoint;
3501 } OMX_TI_CONFIG_PORTTAPPOINTTYPE;
3502 
3503 /**
3504  * Available methods to apply vect shot exposure and gain
3505  */
3506 typedef enum OMX_TI_EXPGAINAPPLYMETHODTYPE {
3507     OMX_TI_EXPGAINAPPLYMETHOD_ABSOLUTE,
3508     OMX_TI_EXPGAINAPPLYMETHOD_RELATIVE,
3509     OMX_TI_EXPGAINAPPLYMETHOD_FORCE_RELATIVE,
3510     OMX_TI_EXPGAINAPPLYMETHOD_FORCE_ABSOLUTE,
3511     OMX_TI_EXPGAINAPPLYMETHOD = 0x7FFFFFFF
3512 } OMX_TI_EXPGAINAPPLYMETHODTYPE;
3513 
3514 /**
3515  * Define configuration structure for
3516  * shot configuration for the selected port
3517  *
3518  * STRUCT MEMBERS:
3519  *  nSize       : Size of the structure in bytes
3520  *  nVersion    : OMX specification version information
3521  *  nPortIndex  : Port that this structure applies to
3522  *  nConfigId   : A unique config identification number that will be
3523  *                put in ancillary data for the corresponding output frame
3524  *  nFrames     : Number of sequential frames that will use this
3525  *                configuration
3526  *  nEC         : Total exposure compensation value
3527  *  nExp        : Exposure value for this configuration slot
3528  *  nGain       : Gain value for this configuration slot
3529  *  eExpGainApplyMethod : Selects the method which will be used to apply exposure and gain
3530  *  bNoSnapshot : Determinates whether a snapshot image will be send
3531  *                on the preview port for this shot config
3532  */
3533 typedef struct OMX_TI_CONFIG_SHOTCONFIG {
3534     OMX_U32                         nConfigId;
3535     OMX_U32                         nFrames;
3536     OMX_S32                         nEC;
3537     OMX_S32                         nExp;
3538     OMX_S32                         nGain;
3539     OMX_TI_EXPGAINAPPLYMETHODTYPE   eExpGainApplyMethod;
3540     OMX_BOOL                        bNoSnapshot;
3541 } OMX_TI_CONFIG_SHOTCONFIG;
3542 
3543 /**
3544  * Define configuration structure for
3545  * shot configuration vector for the selected port
3546  *
3547  * STRUCT MEMBERS:
3548  *  nSize           : Size of the structure in bytes
3549  *  nVersion        : OMX specification version information
3550  *  nPortIndex      : Port that this structure applies to
3551  *  bFlushQueue     : If TRUE: Flush queue and abort processing before enqueing
3552  *                    new shot configurations
3553  *  nNumConfigs     : Number of valid configurations in the nShotConfig array
3554  *  nShotConfig     : Array of shot configurations
3555  *  nSlotsAvilable  : Return value with number of available slots in the queue
3556  */
3557 typedef struct OMX_TI_CONFIG_ENQUEUESHOTCONFIGS {
3558     OMX_U32                     nSize;
3559     OMX_VERSIONTYPE             nVersion;
3560     OMX_U32                     nPortIndex;
3561     OMX_BOOL                    bFlushQueue;
3562     OMX_U32                     nNumConfigs;
3563     OMX_TI_CONFIG_SHOTCONFIG    nShotConfig[5];
3564 } OMX_TI_CONFIG_ENQUEUESHOTCONFIGS;
3565 
3566 /**
3567  * Define configuration structure to
3568  * query available/free shots in shot queue.
3569  * Will be supported only as GetConfig function.
3570  *
3571  * STRUCT MEMBERS:
3572  *  nSize           : Size of the structure in bytes
3573  *  nVersion        : OMX specification version information
3574  *  nPortIndex      : Port that this structure applies to
3575  *  nAvailableShots : Number of available shots
3576  */
3577 typedef struct OMX_TI_CONFIG_QUERYAVAILABLESHOTS {
3578     OMX_U32         nSize;
3579     OMX_VERSIONTYPE nVersion;
3580     OMX_U32         nPortIndex;
3581     OMX_U32         nAvailableShots;
3582 } OMX_TI_CONFIG_QUERYAVAILABLESHOTS;
3583 
3584 /**
3585  * Available vector shot capture stop methods
3586  */
3587 typedef enum OMX_TI_VECTSHOTSTOPMETHOD {
3588     OMX_TI_VECTSHOTSTOPMETHOD_GOTO_PREVIEW,
3589     OMX_TI_VECTSHOTSTOPMETHOD_WAIT_IN_CAPTURE,
3590     OMX_TI_VECTSHOTSTOPMETHOD_MAX = 0x7FFFFFFF
3591 } OMX_TI_VECTSHOTSTOPMETHOD;
3592 
3593 /**
3594  * Define configuration structure to
3595  * specify the beahvior of vector shot capture
3596  * when the shot queue is empty
3597  *
3598  * STRUCT MEMBERS:
3599  *  nSize           : Size of the structure in bytes
3600  *  nVersion        : OMX specification version information
3601  *  nPortIndex      : Port that this structure applies to
3602  *  eStopMethod     : Select the stop method
3603  */
3604 typedef struct OMX_TI_CONFIG_VECTSHOTSTOPMETHODTYPE {
3605     OMX_U32                     nSize;
3606     OMX_VERSIONTYPE             nVersion;
3607     OMX_U32                     nPortIndex;
3608     OMX_TI_VECTSHOTSTOPMETHOD   eStopMethod;
3609 } OMX_TI_CONFIG_VECTSHOTSTOPMETHODTYPE;
3610 
3611 
3612 #ifdef __cplusplus
3613 }
3614 #endif /* __cplusplus */
3615 
3616 #endif
3617 
3618 
3619