omxil/omxilapi/shai/OMX_Symbian_IVCommonExt.h
branchOpenMAX-IL_SHAI
changeset 16 eedf2dcd43c6
equal deleted inserted replaced
15:c1e808730d6c 16:eedf2dcd43c6
       
     1 /*
       
     2   OMX_Symbian_IVCommonExt.h
       
     3   
       
     4   Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
       
     5   All rights reserved.
       
     6 
       
     7   This program and the accompanying materials are made available 
       
     8   under the terms of the Eclipse Public License v1.0 which accompanies 
       
     9   this distribution, and is available at 
       
    10   http://www.eclipse.org/legal/epl-v10.html
       
    11 
       
    12   Initial Contributors:
       
    13   Nokia Corporation - initial contribution.
       
    14 */
       
    15 
       
    16 /** @file
       
    17 @brief Symbian OpenMAX IL Extension Data Structures Common for Imaging and Video.
       
    18 
       
    19 This file contains the extension structures for the Symbian IL extensions that
       
    20 are common to Imaging and Video domains.
       
    21 
       
    22 @publishedDeviceAbstraction
       
    23 */
       
    24 
       
    25 #ifndef OMX_Symbian_IVCommonExt_h
       
    26 #define OMX_Symbian_IVCommonExt_h
       
    27 
       
    28 #ifdef __cplusplus
       
    29 extern "C" {
       
    30 #endif /* __cplusplus */
       
    31 
       
    32 /* Each OMX header must include all required header files to allow the
       
    33  * header to compile without errors.  The includes below are required
       
    34  * for this header file to compile successfully 
       
    35  */
       
    36 #include <OMX_Types.h>
       
    37 #include <OMX_IVCommon.h>
       
    38 #include <OMX_Image.h>
       
    39 
       
    40 
       
    41 /* Extensions to standard enums */
       
    42 /* ---------------------------- */
       
    43 
       
    44  
       
    45 /**
       
    46  * Offset to Symbian extensions
       
    47  */
       
    48 #define OMX_SYMBIAN_EXTENSION_START_OFFSET 0x00A00000
       
    49 
       
    50 
       
    51 /** 
       
    52  * Exposure Control extensions
       
    53  */
       
    54 typedef enum OMX_SYMBIAN_EXPOSURECONTROLTYPE {
       
    55     OMX_SYMBIAN_ExposureControlCenter = OMX_ExposureControlVendorStartUnused + OMX_SYMBIAN_EXTENSION_START_OFFSET,
       
    56     OMX_SYMBIAN_ExposureControlVeryLong,
       
    57     OMX_SYMBIAN_ExposureControlHwFunctionalTesting, 
       
    58     OMX_SYMBIAN_ExposureControlMax = 0x7FFFFFFF
       
    59 } OMX_SYMBIAN_EXPOSURECONTROLTYPE;
       
    60 
       
    61 /** 
       
    62  * Image Filter extensions
       
    63  */
       
    64 typedef enum OMX_SYMBIAN_IMAGEFILTERTYPE {
       
    65     OMX_SYMBIAN_ImageFilterSepia = OMX_ImageFilterVendorStartUnused + OMX_SYMBIAN_EXTENSION_START_OFFSET,
       
    66     OMX_SYMBIAN_ImageFilterGrayScale,
       
    67     OMX_SYMBIAN_ImageFilterNatural,
       
    68     OMX_SYMBIAN_ImageFilterVivid,
       
    69     OMX_SYMBIAN_ImageFilterMax = 0x7FFFFFFF
       
    70 } OMX_SYMBIAN_IMAGEFILTERTYPE;
       
    71 
       
    72 
       
    73 /* Extended generic types */
       
    74 /* ---------------------- */
       
    75  
       
    76 
       
    77 /** 
       
    78  * Generic point type
       
    79  * Point coordinates in 2D space
       
    80 */
       
    81 typedef struct OMX_SYMBIAN_POINTTYPE {
       
    82     OMX_S32 nX; 
       
    83     OMX_S32 nY;
       
    84 } OMX_SYMBIAN_POINTTYPE;
       
    85 
       
    86 /** 
       
    87  * Generic size type
       
    88  * Size of rectangle in 2D space
       
    89 */
       
    90 typedef struct OMX_SYMBIAN_SIZETYPE {
       
    91     OMX_S32 nWidth;
       
    92     OMX_S32 nHeight;
       
    93 } OMX_SYMBIAN_SIZETYPE;
       
    94 
       
    95 /** 
       
    96  * Generic rectangle type.
       
    97  * Rectangle represented by top left corner coordinates
       
    98  * and the size of the rectangle
       
    99  * There exist also a rectangle config defined in the OMX IL standard.
       
   100  * The purpose of this addition is to provide a generic rectangle type to 
       
   101  * be used by other configs and params.
       
   102 */
       
   103 typedef struct OMX_SYMBIAN_RECTTYPE {
       
   104     OMX_SYMBIAN_POINTTYPE sTopLeft;
       
   105     OMX_SYMBIAN_SIZETYPE sSize;    
       
   106 } OMX_SYMBIAN_RECTTYPE;
       
   107 
       
   108 /** 
       
   109  * Relative rectangle type.
       
   110  * The purpose of this type is to represent a rectangular
       
   111  * region relative to certain reference size.
       
   112  * 
       
   113  * Example:
       
   114  * The location of an object detected in camera scene can be represendted
       
   115  * with relative rect. Let the object be located in rectangular are which has
       
   116  * top left coordintes (10,20) and size (90,120). The object detection algorithm
       
   117  * has used 320x240 sized image for analysis and that will be used as the 
       
   118  * reference size in the relative rect. The object location in 2 megapixel 
       
   119  * (1600x1200 pixels) captured image can be calculated by scaling the top left 
       
   120  * X-coordinate and rectangle width with reference size's width's faction 1600/320=5. 
       
   121  * Likewise for the Y-coordinate and height 1200/240=5. In the captured image 
       
   122  * the object is located inside a rectangular region that has top left coordinates 
       
   123  * (10*5, 20*5) = (50, 100) and size (90*5, 120*5) = (450, 600).      
       
   124 */
       
   125 typedef struct OMX_SYMBIAN_RELATIVERECTTYPE {
       
   126     OMX_SYMBIAN_RECTTYPE sRect;      /**< Rectangle represented as concerete top left coordinates and size */
       
   127     OMX_SYMBIAN_SIZETYPE sReference; /**< Reference size. Since sRect is relative to this reference size
       
   128                                           it can be scaled up or down to represent the same rectangular 
       
   129                                           region in relation to bigger or smaller reference sizes */
       
   130 } OMX_SYMBIAN_RELATIVERECTTYPE;
       
   131 
       
   132 
       
   133 
       
   134 /* Extended generic config and param structs */
       
   135 /* ----------------------------------------- */
       
   136  
       
   137 
       
   138 /** 
       
   139  * Generic signed 32-bit integer config struct.
       
   140 */
       
   141 typedef struct OMX_SYMBIAN_CONFIG_S32TYPE { 
       
   142     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   143     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   144     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   145     OMX_S32 nValue;             /**< signed 32-bit value */
       
   146 } OMX_SYMBIAN_CONFIG_S32TYPE; 
       
   147 
       
   148 /** 
       
   149  * Generic unsigned 32-bit integer param struct.
       
   150 */
       
   151 typedef OMX_SYMBIAN_CONFIG_S32TYPE OMX_SYMBIAN_PARAM_S32TYPE; 
       
   152 
       
   153 /** 
       
   154  * Generic unsigned 32-bit integer config struct.
       
   155 */
       
   156 typedef struct OMX_SYMBIAN_CONFIG_U32TYPE {
       
   157     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   158     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   159     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   160     OMX_U32 nValue;             /**< Unsigned 32-bit value */
       
   161 } OMX_SYMBIAN_CONFIG_U32TYPE; 
       
   162 
       
   163 /** 
       
   164  * Generic unsigned 32-bit integer param struct.
       
   165 */
       
   166 typedef OMX_SYMBIAN_CONFIG_U32TYPE OMX_SYMBIAN_PARAM_U32TYPE; 
       
   167 
       
   168 /** 
       
   169  * Port specific generic boolean config struct
       
   170  * OMX spec already has boolean config but
       
   171  * without port index
       
   172 */
       
   173 typedef struct OMX_SYMBIAN_CONFIG_BOOLEANTYPE {
       
   174     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   175     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   176     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   177     OMX_BOOL bEnabled;          /**< Boolean value */
       
   178 } OMX_SYMBIAN_CONFIG_BOOLEANTYPE; 
       
   179 
       
   180 /** 
       
   181  * Generic point config struct
       
   182 */
       
   183 typedef struct OMX_SYMBIAN_CONFIG_POINTTYPE {
       
   184     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   185     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   186     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   187     OMX_SYMBIAN_POINTTYPE sPoint; /**< Point coordinates */
       
   188 } OMX_SYMBIAN_CONFIG_POINTTYPE; 
       
   189 
       
   190 
       
   191 
       
   192 /* Extended params and configs */
       
   193 /* --------------------------- */
       
   194 
       
   195 
       
   196 /** 
       
   197  * High level control type classification.
       
   198 */
       
   199 typedef enum OMX_SYMBIAN_HIGHLEVELCONTROLTYPE {
       
   200     OMX_SYMBIAN_ControlOff,  /**< Explicitly turn feature off */ 
       
   201     OMX_SYMBIAN_ControlOn,   /**< Explicitly turn feature on */
       
   202     OMX_SYMBIAN_ControlAuto, /**< Let feature to be turned on or off automatically */
       
   203     OMX_SYMBIAN_ControlMax = 0x7FFFFFFF
       
   204 } OMX_SYMBIAN_HIGHLEVELCONTROLTYPE;
       
   205 
       
   206 /** 
       
   207  * Generic high level control config struct.
       
   208  *
       
   209 */
       
   210 typedef struct OMX_SYMBIAN_CONFIG_HIGHLEVELCONTROLTYPE {
       
   211     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   212     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   213     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   214     OMX_SYMBIAN_HIGHLEVELCONTROLTYPE eControl; /**< High level control for given feature */
       
   215 } OMX_SYMBIAN_CONFIG_HIGHLEVELCONTROLTYPE;
       
   216 
       
   217 
       
   218 
       
   219 /** 
       
   220  * Zoom Factor config struct.
       
   221  * 
       
   222  * Note: Zoom factor is not the same as scale factor.
       
   223  * The zoom factor actually tells how much field of view
       
   224  * is decreased i.e. when zoom factor is 2x the 
       
   225  * FoV is decreased to half (1/2) of the original.
       
   226  * The scaling factor caused by decreasing the FoV is 
       
   227  * dependent on the output resolution.
       
   228 */
       
   229 typedef struct OMX_SYMBIAN_CONFIG_ZOOMFACTORTYPE { 
       
   230     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   231     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   232     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   233     OMX_U32 xZoomFactor; /**< Zoom factor in unsigned Q16 format */
       
   234 }OMX_SYMBIAN_CONFIG_ZOOMFACTORTYPE;
       
   235 
       
   236 /** 
       
   237  * Enumeration of possible focus ranges 
       
   238  */
       
   239 typedef enum OMX_SYMBIAN_FOCUSRANGETYPE {
       
   240     OMX_SYMBIAN_FocusRangeAuto,       /**< Focus range automatically decided by implementation */
       
   241     OMX_SYMBIAN_FocusRangeHyperfocal, /**< Focus range hyperfocal */
       
   242     OMX_SYMBIAN_FocusRangeSuperMacro, /**< Focus range supermacro */
       
   243     OMX_SYMBIAN_FocusRangeMacro,      /**< Focus range macro */
       
   244     OMX_SYMBIAN_FocusRangeInfinity,   /**< Focus range infinity */
       
   245     OMX_SYMBIAN_FocusRangeMax = 0x7FFFFFFF
       
   246 } OMX_SYMBIAN_FOCUSRANGETYPE;
       
   247 
       
   248 /** 
       
   249  * Focus Range config struct.
       
   250 */
       
   251 typedef struct OMX_SYMBIAN_CONFIG_FOCUSRANGETYPE {
       
   252     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   253     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   254     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   255     OMX_SYMBIAN_FOCUSRANGETYPE eFocusRange; /**< Focus range */
       
   256 } OMX_SYMBIAN_CONFIG_FOCUSRANGETYPE;
       
   257 
       
   258 /** 
       
   259  * Focus Status.
       
   260 */
       
   261 typedef struct OMX_SYMBIAN_CONFIG_EXTFOCUSSTATUSTYPE { 
       
   262     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   263     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   264     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   265     OMX_FOCUSSTATUSTYPE eFocusStatus; /**< Focus status */
       
   266 } OMX_SYMBIAN_CONFIG_EXTFOCUSSTATUSTYPE;
       
   267 
       
   268 /** 
       
   269  * Enumeration of possible flicker removal values 
       
   270  */
       
   271 typedef enum OMX_SYMBIAN_FLICKERREMOVALTYPE {
       
   272     OMX_SYMBIAN_FlickerRemovalOff,  /**< Flicker removal disabled */
       
   273     OMX_SYMBIAN_FlickerRemovalAuto, /**< Automatically detected AC frequency */
       
   274     OMX_SYMBIAN_FlickerRemoval50,   /**< Flicker removal for 50 Hz AC frequency */
       
   275     OMX_SYMBIAN_FlickerRemoval60,   /**< Flicker removal for 60 Hz AC frequency */
       
   276     OMX_SYMBIAN_FlickerRemovalMax = 0x7FFFFFFF
       
   277 } OMX_SYMBIAN_FLICKERREMOVALTYPE;
       
   278 
       
   279 /** 
       
   280  * Flicker Removal.
       
   281 */
       
   282 typedef struct OMX_SYMBIAN_CONFIG_FLICKERREMOVALTYPE {
       
   283     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   284     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   285     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   286    OMX_SYMBIAN_FLICKERREMOVALTYPE eFlickerRemoval; /**< Flicker removal mode */
       
   287 }OMX_SYMBIAN_CONFIG_FLICKERREMOVALTYPE;
       
   288 
       
   289 /** 
       
   290  * Enumeration of possible power versus image quality choices
       
   291  */
       
   292 typedef enum OMX_SYMBIAN_QUALITYHINTTYPE {
       
   293     OMX_SYMBIAN_QualityNotSpecified = 0, /**< Not specified, component decides by itself */
       
   294     OMX_SYMBIAN_QualityLow,              /**< Power consumption priorized over quality */
       
   295     OMX_SYMBIAN_QualityBalanced,         /**< Balanced between quality and power consumption */
       
   296     OMX_SYMBIAN_QualityHigh,             /**< High quality priorized over power consumption */
       
   297     OMX_SYMBIAN_QualityMax = 0x7FFFFFFF
       
   298 } OMX_SYMBIAN_QUALITYHINTTYPE;
       
   299 
       
   300 /** 
       
   301  * Power versus quality hint provided by IL client to implementation.
       
   302 */
       
   303 typedef struct OMX_SYMBIAN_CONFIG_HINTPOWERVSQUALITYTYPE {
       
   304     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   305     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   306     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   307     OMX_SYMBIAN_QUALITYHINTTYPE eQHint; /**< Power vs quality hint */
       
   308 } OMX_SYMBIAN_CONFIG_HINTPOWERVSQUALITYTYPE;
       
   309 
       
   310 /** 
       
   311  * Enumeration of possible depth of field choices
       
   312  */
       
   313 typedef enum OMX_SYMBIAN_DOFHINTTYPE {
       
   314     OMX_SYMBIAN_DoFNotSpecified = 0, /**< Not specified, component decides by itself */
       
   315     OMX_SYMBIAN_DoFSmall,            /**< Small DoF */
       
   316     OMX_SYMBIAN_DoFMedium,           /**< Medium DoF */  
       
   317     OMX_SYMBIAN_DoFLarge,            /**< Large DoF */
       
   318     OMX_SYMBIAN_DoFMax = 0x7FFFFFFF
       
   319 } OMX_SYMBIAN_DOFHINTTYPE;
       
   320 
       
   321 /** 
       
   322  * Depth of field hint provided by IL client to implementation.
       
   323  *
       
   324 */
       
   325 typedef struct OMX_SYMBIAN_CONFIG_HINTDOFTYPE {
       
   326     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   327     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   328     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   329     OMX_SYMBIAN_DOFHINTTYPE eDoFHint; /**< DoF hint */
       
   330 } OMX_SYMBIAN_CONFIG_HINTDOFTYPE;
       
   331 
       
   332 /** 
       
   333  * HW information retrieval struct.
       
   334 */
       
   335 typedef struct OMX_SYMBIAN_CONFIG_HWINFOTYPE {
       
   336     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   337     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   338     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   339     OMX_U32 nVersion1;          /**< For camera sensor filled like this:                                    
       
   340                                      Bits 0...7 Sensor Manufacturer (8 bits). 
       
   341                                      Bits 8...15 Sensor Version/Revision (8 bit). 
       
   342                                      Bits 16...31 Sensor Model (16 bits).
       
   343                                      For flashgun filled like this:
       
   344                                      Bits 0-7    Flash IC Info
       
   345                                      Bits 8-15   Flash IC revision
       
   346                                      Bits 16-17  Flash Module Info A as present in Module Info Reg.A of flash HW 
       
   347                                      (Only valid for some Xenon flash, leave as 0 for LED and even for Xenon if not available)
       
   348                                      Bits 24-31  Flash Module Info B as present in Module Info Reg.B of flash HW 
       
   349                                      (Only valid for some Xenon flash, leave as 0 for LED and even for Xenon if not available) */
       
   350     OMX_U32 nVersion2;          /**< Not filled for camera
       
   351                                      For flashgun filled in same way as nVersion1 but containin information for secondary flash IC connected to same camera. 
       
   352                                      Leave as 0s if there is only single flash IC*/
       
   353     OMX_STRING cInfoString;     /**< Additional information string */
       
   354 } OMX_SYMBIAN_CONFIG_HWINFOTYPE;
       
   355 
       
   356 /** 
       
   357  * Capture mode extension.
       
   358  * 
       
   359  * Capture mode is extended to allow additional capture modes
       
   360  * like time nudge and bracketing
       
   361 */
       
   362 typedef struct OMX_SYMBIAN_CONFIG_EXTCAPTUREMODETYPE {
       
   363     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   364     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   365     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   366     OMX_U32 nFrameBefore;       /**< Number of frames to be stored before capture bit is set */ 
       
   367     OMX_BOOL bPrepareCapture;   /**< Enables capturing frames into ring buffer before capture bit is set */
       
   368     OMX_BOOL bEnableBracketing; /**< Enables bracketing mode where settings are changed for each captured frame */
       
   369 }OMX_SYMBIAN_CONFIG_EXTCAPTUREMODETYPE;
       
   370 
       
   371 /** 
       
   372  * Enumeration of possible rotation angles
       
   373  */
       
   374 typedef enum OMX_SYMBIAN_ROTATIONANGLETYPE {
       
   375     OMX_SYMBIAN_RotationCW0 = 0, /**< Rotation angle zero degrees clockwise */
       
   376     OMX_SYMBIAN_RotationCW90,    /**< Rotation angle 90 degrees clockwise */
       
   377     OMX_SYMBIAN_RotationCW180,   /**< Rotation angle 180 degrees clockwise */
       
   378     OMX_SYMBIAN_RotationCW270,   /**< Rotation angle 270 degrees clockwise */
       
   379     OMX_SYMBIAN_RotationMax = 0x7FFFFFFF
       
   380 } OMX_SYMBIAN_ROTATIONANGLETYPE;
       
   381 
       
   382 /** 
       
   383  * Enumeration of possible image orientation values 
       
   384  * The orientation values are same as the ones defined
       
   385  * for Exif orientation tag.
       
   386  */
       
   387 typedef enum OMX_SYMBIAN_ORIENTATIONORIGINTYPE
       
   388 {
       
   389     OMX_SYMBIAN_OrientationNotSpecified = 0x0,    /**< Orientatio of frame is not specified */
       
   390     OMX_SYMBIAN_OrientationRowTopColumnLeft,      /**< Frame is in normal orientation */
       
   391     OMX_SYMBIAN_OrientationRowTopColumnRight,     /**< Frame is mirrored */
       
   392     OMX_SYMBIAN_OrientationRowBottomColumnRight,  /**< Frame is 180 degrees CW rotated (=mirrored and flipped) */
       
   393     OMX_SYMBIAN_OrientationRowBottomColumnLeft,   /**< Frame is flipped */
       
   394     OMX_SYMBIAN_OrientationRowLeftColumnTop,      /**< Frame is 90 degrees CW rotated and mirrored */
       
   395     OMX_SYMBIAN_OrientationRowRightColumnTop,     /**< Frame is 270 degrees CW rotated */
       
   396     OMX_SYMBIAN_OrientationRowRightColumnBottom,  /**< Frame is 270 degrees CW rotated and mirrored */
       
   397     OMX_SYMBIAN_OrientationRowLeftColumnBottom,   /**< Frame is 90 degrees CW rotated */
       
   398     OMX_SYMBIAN_OrientationMax = 0x7FFFFFFF
       
   399 } OMX_SYMBIAN_ORIENTATIONORIGINTYPE;
       
   400 
       
   401 /** 
       
   402  * Orientation Configuration.
       
   403 */
       
   404 typedef struct OMX_SYMBIAN_CONFIG_ORIENTATIONTYPE {
       
   405     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   406     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   407     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   408     OMX_SYMBIAN_ORIENTATIONORIGINTYPE eOrientation; /**< Frame orientation */
       
   409 } OMX_SYMBIAN_CONFIG_ORIENTATIONTYPE;
       
   410 
       
   411 /**
       
   412  * Maximum number of ROIs in config
       
   413  */
       
   414 #define OMX_SYMBIAN_MAX_NUMBER_OF_ROIS 10
       
   415 
       
   416 /** 
       
   417  * Tracking object type classification.
       
   418 */
       
   419 typedef enum OMX_SYMBIAN_ROIOBJECTTYPE {
       
   420     OMX_SYMBIAN_RoiObjectNone,       /**< Unspecified object type */
       
   421     OMX_SYMBIAN_RoiObjectTypeFace,   /**< Object type face */
       
   422     OMX_SYMBIAN_RoiObjectTypeObject, /**< Object type generic object */
       
   423     OMX_SYMBIAN_RoiObjectMax = 0x7FFFFFFF
       
   424 } OMX_SYMBIAN_ROIOBJECTTYPE;
       
   425 
       
   426 /**
       
   427  * Pricipal 3D orientation type
       
   428  */
       
   429 typedef struct OMX_SYMBIAN_3DORIENTATIONYTYPE {
       
   430     OMX_U32 nYaw;   /**< Yaw rotation angle in degrees, 0xFFFFFFFF if unknown */
       
   431     OMX_U32 nPitch; /**< Pitch rotation angle in degrees, 0xFFFFFFFF if unknown */
       
   432     OMX_U32 nRoll;  /**< Roll rotation angle in degrees, 0xFFFFFFFF if unknown */
       
   433 } OMX_SYMBIAN_3DORIENTATIONYTYPE;
       
   434 
       
   435 /**
       
   436  * Object information structure
       
   437  */
       
   438 typedef struct OMX_SYMBIAN_ROIOBJECTINFOTYPE{
       
   439     OMX_SYMBIAN_RELATIVERECTTYPE sROI;           /**< Region where the object is located in the scene */
       
   440     OMX_U32 nROIID;                              /**< Identification number for ROI if available, zero by default */ 
       
   441     OMX_U32 nPriority;                           /**< ROI priority, 0 being the highest priority */
       
   442     OMX_SYMBIAN_ROIOBJECTTYPE eObjectType;       /**< Type of object in this ROI */
       
   443     OMX_SYMBIAN_3DORIENTATIONYTYPE nOrientation; /**< 3D orientation of the object in the ROI */
       
   444 } OMX_SYMBIAN_ROIOBJECTINFOTYPE;
       
   445 
       
   446 /** 
       
   447  * Regions of interest config
       
   448  * 
       
   449  * Used to indicate number of regions of interest within the image
       
   450  * Also some additional information about the object in the ROI
       
   451  * can be embedded but is not mandatory
       
   452 */
       
   453 typedef struct OMX_SYMBIAN_CONFIG_ROITYPE {    
       
   454     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   455     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   456     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   457     OMX_U32 nNumberOfROIs;      /**< Number of ROIs included in this config */
       
   458     OMX_SYMBIAN_ROIOBJECTINFOTYPE sROIs[OMX_SYMBIAN_MAX_NUMBER_OF_ROIS]; /**< Array of ROIs */ 
       
   459 } OMX_SYMBIAN_CONFIG_ROITYPE; 
       
   460 
       
   461 /** 
       
   462  * Enumeration of possible xenon flash status values 
       
   463  */
       
   464 typedef enum OMX_SYMBIAN_XENONFLASHSTATUSTYPE
       
   465 {
       
   466     OMX_SYMBIAN_XenonFlashUnknown  = 0x0,   /**< Xenon flash status is unknown */
       
   467     OMX_SYMBIAN_XenonFlashDischarged,       /**< Xenon flash is discharged */
       
   468     OMX_SYMBIAN_XenonFlashCharging,         /**< Xenon flash is charging */
       
   469     OMX_SYMBIAN_XenonFlashReady,            /**< Xenon flash is ready to be used */
       
   470     OMX_SYMBIAN_XenonFlashNotAvailable,     /**< Xenon flash can not be used at the moment
       
   471                                                  (temporarily overheated etc...) */
       
   472     OMX_SYMBIAN_XenonFlashMax = 0x7FFFFFFF
       
   473 } OMX_SYMBIAN_XENONFLASHSTATUSTYPE;
       
   474 
       
   475 /** 
       
   476  * Xenon flash status Config.
       
   477 */
       
   478 typedef struct OMX_SYMBIAN_CONFIG_XENONFLASHSTATUSTYPE { 
       
   479     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   480     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   481     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   482     OMX_SYMBIAN_XENONFLASHSTATUSTYPE eFlashStatus; /**< Xenon flash status */
       
   483 } OMX_SYMBIAN_CONFIG_XENONFLASHSTATUSTYPE;
       
   484 
       
   485 
       
   486 /** 
       
   487  * Enumeration of possible pre capture exposure time estimates
       
   488  * 
       
   489  * This enumeration is used to implement pre-capture warning about
       
   490  * low or high exposure time which could lead to bad quality images
       
   491  */
       
   492 typedef enum OMX_SYMBIAN_PRECAPTUREEXPOSURETIMETYPE
       
   493 {
       
   494     OMX_SYMBIAN_PreCaptureExposureNoneOrOngoing = 0x0, /**< Exposure time not known or exposure already started */
       
   495     OMX_SYMBIAN_PreCaptureExposureNormal,              /**< Exposure time is within normal limits */
       
   496     OMX_SYMBIAN_PreCaptureExposureShort,               /**< Exposure time is short, risk of underexposing the images */
       
   497     OMX_SYMBIAN_PreCaptureExposureLong,                /**< Exposure time is long, risk of blurry image */
       
   498     OMX_SYMBIAN_PreCaptureExposureMax = 0x7FFFFFFF
       
   499 } OMX_SYMBIAN_PRECAPTUREEXPOSURETIMETYPE;
       
   500 
       
   501 /** 
       
   502  * Pre-Capture Exposure Time Config.
       
   503 */
       
   504 typedef struct OMX_SYMBIAN_CONFIG_PRECAPTUREEXPOSURETIMETYPE {
       
   505     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   506     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   507     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   508     OMX_SYMBIAN_PRECAPTUREEXPOSURETIMETYPE eExposureTime; /**< Estimated exposure time */
       
   509 } OMX_SYMBIAN_CONFIG_PRECAPTUREEXPOSURETIMETYPE;
       
   510 
       
   511 /** 
       
   512  * Enumeration of possible bracket mode values 
       
   513  */
       
   514 typedef enum OMX_SYMBIAN_BRACKETMODETYPE {
       
   515     OMX_SYMBIAN_BracketExposureRelativeInEV, /**< Exposure value is changed relative to 
       
   516                                                         the value set by automatic exposure. 
       
   517                                                         nBracketValues are in Q16. Increment is additive. */
       
   518     OMX_SYMBIAN_BracketMax = 0x7FFFFFFF
       
   519 } OMX_SYMBIAN_BRACKETMODETYPE;
       
   520 
       
   521 /** 
       
   522  * Bracketing Config.
       
   523 */
       
   524 typedef struct OMX_SYMBIAN_CONFIG_BRACKETINGTYPE {
       
   525     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   526     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   527     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   528     OMX_SYMBIAN_BRACKETMODETYPE eBracketMode; /**< Bracketing mode - what values are changed during bracket capture */
       
   529     OMX_U32 nNbrBracketingValues;             /**< Number of bracketing values */
       
   530     OMX_U32 nBracketValues[5];                /**< Bracketing values in an array */
       
   531 } OMX_SYMBIAN_CONFIG_BRACKETINGTYPE;
       
   532 
       
   533 /** 
       
   534  * Enumeration of possible levels of RAW processing 
       
   535  */
       
   536 typedef enum OMX_SYMBIAN_RAWIMAGEPRESETTYPE {
       
   537     OMX_SYMBIAN_RawImageUnprocessed, /**< RAW data is unprocessed */
       
   538     OMX_SYMBIAN_RawImageProcessed,   /**< RAW data has some processing enabled */
       
   539     OMX_SYMBIAN_RawImageMax = 0x7FFFFFFF
       
   540 } OMX_SYMBIAN_RAWIMAGEPRESETTYPE;
       
   541 
       
   542 /** 
       
   543  * RAW Preset Config.
       
   544 */
       
   545 typedef struct OMX_SYMBIAN_CONFIG_RAWPRESETTYPE {
       
   546     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   547     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   548     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   549     OMX_SYMBIAN_RAWIMAGEPRESETTYPE ePreset; /**< RAW processing preset */
       
   550 } OMX_SYMBIAN_CONFIG_RAWPRESETTYPE;
       
   551 
       
   552 /** 
       
   553  * Image Parameters Lock.
       
   554 */
       
   555 typedef struct OMX_SYMBIAN_CONFIG_LOCKTYPE {
       
   556     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   557     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   558     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   559     OMX_BOOL bLock;           /**< Setting this true will lock the setting and 
       
   560                                    its value is not automatically updated anymore */
       
   561     OMX_BOOL bAtCapture;      /**< Setting this true will lock the setting value only
       
   562                                    when next capture occurs */
       
   563 } OMX_SYMBIAN_CONFIG_LOCKTYPE;
       
   564 
       
   565 /** 
       
   566  * Image Flash Control Config.
       
   567  * 
       
   568  * Extended because in standard flash control is a param
       
   569 */
       
   570 typedef struct OMX_SYMBIAN_CONFIG_FLASHCONTROLTYPE {
       
   571     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   572     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   573     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   574     OMX_IMAGE_FLASHCONTROLTYPE eFlashControl; /**< Flash mode setting */
       
   575 }OMX_SYMBIAN_CONFIG_FLASHCONTROLTYPE;
       
   576 
       
   577 /** 
       
   578  * Enumeration of possible focus region control values
       
   579  */
       
   580 typedef enum OMX_SYMBIAN_FOCUSREGIONCONTROL {
       
   581     OMX_SYMBIAN_FocusRegionAuto,           /**< Focus region decided by AF algorithm */
       
   582     OMX_SYMBIAN_FocusRegionManual,         /**< Manual focus region selected by user */
       
   583     OMX_SYMBIAN_FocusRegionFacePriority,   /**< ROI with priority face (if available) should be used as focus region, otherwise automatically selected by AF algorithm */
       
   584     OMX_SYMBIAN_FocusRegionObjectPriority, /**< ROI with priority object (if available) should be used as focus region, otherwise automatically selected by AF algorithm */
       
   585     OMX_SYMBIAN_FocusRegionMax = 0x7FFFFFFF
       
   586 } OMX_SYMBIAN_FOCUSREGIONCONTROL;
       
   587 
       
   588 /** 
       
   589  * Focus Region Control Config.
       
   590 */
       
   591 typedef struct OMX_SYMBIAN_CONFIG_FOCUSREGIONTYPE {
       
   592     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   593     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   594     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   595     OMX_SYMBIAN_FOCUSREGIONCONTROL eFocusRegionControl; /**< Focus region selection */
       
   596     OMX_SYMBIAN_RELATIVERECTTYPE sFocusRegion;          /**< Focus region if focus region control is manual */
       
   597 } OMX_SYMBIAN_CONFIG_FOCUSREGIONTYPE;
       
   598 
       
   599 /**
       
   600  * Enumeration of possible camera self tests
       
   601  */
       
   602 typedef enum OMX_SYMBIAN_CAMERASELFTESTTYPE
       
   603 {
       
   604     OMX_SYMBIAN_CameraSelfTestNone = 0,
       
   605     OMX_SYMBIAN_CameraSelfTestSensor,                /**< Verifies command and data bus connections of camera sensor */
       
   606     OMX_SYMBIAN_CameraSelfTestHwa,                   /**< Verifies command bus and data bus connections between host and camera HWA */
       
   607     OMX_SYMBIAN_CameraSelfTestFocus,                 /**< Verifies that focus lens is able to move. This test typically requires HW's 
       
   608                                                                 ability to measure lens position. Test can be done e.g. by moving lens to 
       
   609                                                                 two different positions and reading back the lens position */
       
   610 
       
   611     OMX_SYMBIAN_CamearSelfTestOpticalZoom,           /**< Verifies that optical zoom lens is able to move. This test typically requires 
       
   612                                                                 HW's ability to measure lens position. Test can be done e.g. by moving lens to 
       
   613                                                                 two different positions and reading back the lens position */
       
   614     OMX_SYMBIAN_CameraSelfTestFlashDriverPrimaryL,   /**< tests connections to primary flash driver IC */
       
   615     OMX_SYMBIAN_CameraSelfTestFlashDriverSecondaryL, /**< tests connections to secondary flash driver IC */
       
   616     OMX_SYMBIAN_CameraSelfTestFlashL,                /**< tests capture flash without using strobe signal from camera */
       
   617     OMX_SYMBIAN_CameraSelfTestFlashWithStrobe,       /**< tests capture flash using strobe signal from camera: ONLY 
       
   618                                                                 this one needs to be done in idle state from flash tests cases */
       
   619     OMX_SYMBIAN_CameraSelfTestVideoLightL,           /**< tests video light */
       
   620     OMX_SYMBIAN_CameraSelfTestAfLightL,              /**< tests AF assistance light */
       
   621     OMX_SYMBIAN_CameraSelfTestIndicatorLightL,       /**< tests capture indicator light */
       
   622     OMX_SYMBIAN_CameraSelfTestFlashTorchL,           /**< tests flash in torch mode */
       
   623     OMX_SYMBIAN_CameraSelfTestHwaControl,	          /**< Verifies HWA command bus connection */
       
   624     OMX_SYMBIAN_CameraSelfTestHwaOTP,		          /**< Sanity check for HWA OTP programming */
       
   625     OMX_SYMBIAN_CameraSelfTestHwaSDRAM,	          /**< Verifies HWA SDRAM bus connections */
       
   626     OMX_SYMBIAN_CameraSelfTestHwaSleep,		      /**< Verifies HWA ability to sleep/wakeup */
       
   627     OMX_SYMBIAN_CameraSelfTestHwaPmControl,	      /**< Verifies HWA power managment control */
       
   628     OMX_SYMBIAN_CameraSelfTestSensorControl,	      /**< Verifies sensor command bus connection */
       
   629     OMX_SYMBIAN_CameraSelfTestSensorNVM,	          /**< Verifies sensor non-volatile memory is readable */
       
   630     OMX_SYMBIAN_CameraSelfTestLensDrvControl,	      /**< Verifies lens driver IC command bus connection */
       
   631     OMX_SYMBIAN_CameraSelfTestShutter,		          /**< Verifies shutter operation */
       
   632     OMX_SYMBIAN_CameraSelfTestNDFilter,		      /**< Verifies ND filter */
       
   633     OMX_SYMBIAN_CameraSelfTestGlobalReset,	          /**< Verifies global reset signal (from camera to host) connection */
       
   634     OMX_SYMBIAN_CameraSelfTestMax = 0x7FFFFFFF
       
   635 } OMX_SYMBIAN_CAMERASELFTESTTYPE;
       
   636 
       
   637 /**
       
   638  * Self test type and result struct
       
   639  */
       
   640 typedef struct OMX_SYMBIAN_CAMERASELFTESTRESULTTYPE {
       
   641     OMX_SYMBIAN_CAMERASELFTESTTYPE eTestId;   /**< Test id */
       
   642     OMX_ERRORTYPE eResult;                         /**< Test result */
       
   643 } OMX_SYMBIAN_CAMERASELFTESTRESULTTYPE;
       
   644 
       
   645 #define OMX_SYMBIAN_MAX_SELF_TESTS_PER_REQUEST 20
       
   646 
       
   647 /**
       
   648  * Self test select config 
       
   649  */
       
   650 typedef struct OMX_SYMBIAN_CONFIG_CAMERASELFTESTSELECTTYPE { 
       
   651     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   652     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   653     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   654     OMX_U32 nFlashHwFaultRegister1;
       
   655     OMX_U32 nFlashHwFaultRegister2;
       
   656     OMX_U16 nTestSelectMaxSizeUsed;
       
   657     OMX_SYMBIAN_CAMERASELFTESTRESULTTYPE eSelfTests[OMX_SYMBIAN_MAX_SELF_TESTS_PER_REQUEST]; /**< Self test results */
       
   658 } OMX_SYMBIAN_CONFIG_CAMERASELFTESTSELECTTYPE; 
       
   659 
       
   660 /**
       
   661  * Enumeration of functional tests
       
   662  */
       
   663 typedef enum OMX_SYMBIAN_CAMERAHWFUNCTEST {
       
   664     OMX_SYMBIAN_CameraFuncTestNone = 0,
       
   665     OMX_SYMBIAN_CameraFuncTestDeadPixels,
       
   666     OMX_SYMBIAN_CameraFuncTestCouplet,
       
   667     OMX_SYMBIAN_CameraFuncTestBrightness,
       
   668     OMX_SYMBIAN_CameraFuncTestVignetting,
       
   669     OMX_SYMBIAN_CameraFuncTestNdFilter,
       
   670     OMX_SYMBIAN_CameraFuncTestFocus,
       
   671     OMX_SYMBIAN_CameraFuncTestIris,
       
   672     OMX_SYMBIAN_CameraFuncTestFlash,
       
   673     OMX_SYMBIAN_CameraFuncTestIndicatorLed,
       
   674     OMX_SYMBIAN_CameraFuncTestVideoLight,
       
   675     OMX_SYMBIAN_CameraFuncTestBlemish,
       
   676     OMX_SYMBIAN_CameraFuncTestShutter,
       
   677     OMX_SYMBIAN_CameraFuncTestMax = 0x7FFFFFFF
       
   678 } OMX_SYMBIAN_CAMERAHWFUNCTEST;
       
   679 
       
   680 #define OMX_SYMBIAN_MAX_FUNC_TESTS_PER_REQUEST 20
       
   681 
       
   682 /**
       
   683  * Functional test selection config
       
   684  */
       
   685 typedef struct OMX_SYMBIAN_CONFIG_CAMERAHWFUNCTESTSELECTTYPE { 
       
   686     OMX_U32 nSize;                  /**< Size of the structure in bytes */
       
   687     OMX_VERSIONTYPE nVersion;       /**< OMX specification version information */
       
   688     OMX_U32 nPortIndex;             /**< Port that this structure applies to */
       
   689     OMX_U16 nTestSelectMaxSizeUsed; /**< Number of entries in eFuncTests */
       
   690     OMX_SYMBIAN_CAMERAHWFUNCTEST eFuncTests[OMX_SYMBIAN_MAX_FUNC_TESTS_PER_REQUEST]; /**< Array of selected tests */ 
       
   691     OMX_BOOL bTestImageOutput;      /**< If set OMX_TRUE, NRW format test image is outputted in addition to test results */
       
   692 }OMX_SYMBIAN_CONFIG_CAMERAHWFUNCTESTSELECTTYPE;
       
   693 
       
   694 /**
       
   695  * Enumeration of scene modes
       
   696  */
       
   697 typedef enum OMX_SYMBIAN_SCENEMODETYPE {
       
   698     OMX_SYMBIAN_SceneAuto = 0,      /**< Camera settings automatically selected by camera */
       
   699     OMX_SYMBIAN_ScenePortrait,      /**< Use camera settings suitable for taking portrait images */
       
   700     OMX_SYMBIAN_SceneLandscape,     /**< Use camera settings suitable for taking landscae images */
       
   701     OMX_SYMBIAN_SceneNight,         /**< Use camera settings suitable for taking low light images */
       
   702     OMX_SYMBIAN_SceneNightPortrait, /**< Use camera settings suitable for taking portrait images in low light */
       
   703     OMX_SYMBIAN_SceneSport,         /**< Use camera settings suitable for taking images when there is fast movement in the scene */
       
   704     OMX_SYMBIAN_SceneMacro,         /**< Use camera settings suitable for taking close-up images */
       
   705     OMX_SYMBIAN_SceneMax = 0x7FFFFFFF
       
   706 } OMX_SYMBIAN_SCENEMODETYPE;
       
   707 
       
   708 /**
       
   709  * Scene mode config
       
   710  */
       
   711 typedef struct OMX_SYMBIAN_CONFIG_SCENEMODETYPE {
       
   712     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   713     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   714     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   715     OMX_SYMBIAN_SCENEMODETYPE eSceneType; /**< Scene mode selection */
       
   716 } OMX_SYMBIAN_CONFIG_SCENEMODETYPE;
       
   717 
       
   718 /**
       
   719  * RGB histogram returned using this config
       
   720  */
       
   721 typedef struct OMX_SYMBIAN_CONFIG_RGBHISTOGRAM {
       
   722     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   723     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   724     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   725     OMX_U32 nRed[256];          /**< Histogram for red color */
       
   726     OMX_U32 nGreen[256];        /**< Histogram for green color */
       
   727     OMX_U32 nBlue[256];         /**< Histogram for blue color */
       
   728 } OMX_SYMBIAN_CONFIG_RGBHISTOGRAM;
       
   729 
       
   730 /**
       
   731  * Histogram control config
       
   732  */
       
   733 typedef struct OMX_SYMBIAN_CONFIG_HISTOGRAMCONTROLTYPE {
       
   734     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   735     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   736     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   737     OMX_BOOL bMeasure;          /**< Set OMX_TRUE to start histogram measurement */
       
   738     OMX_U32 nBins;              /**< Number of bins */
       
   739     OMX_U32 nBytesPerBin;       /**< Number of bytes / bin */
       
   740 } OMX_SYMBIAN_CONFIG_HISTOGRAMCONTROLTYPE;
       
   741 
       
   742 /**
       
   743  * Region of interest selection config 
       
   744  */
       
   745 typedef struct OMX_SYMBIAN_CONFIG_ROISELECTIONTYPE {
       
   746     OMX_U32 nSize;                   /**< Size of the structure in bytes */
       
   747     OMX_VERSIONTYPE nVersion;        /**< OMX specification version information */
       
   748     OMX_U32 nPortIndex;              /**< Port that this structure applies to */
       
   749     OMX_BOOL bReset;                 /**< OMX_TRUE = reset all selections done. Rest of the fields are not used */ 
       
   750     OMX_BOOL bSelect;                /**< OMX_TRUE = select / OMX_FALSE = deselect */
       
   751     OMX_SYMBIAN_RELATIVERECTTYPE sROI;     /**< Indicates the region where the object to be selected is located in the scene */
       
   752     OMX_U32 nROIID;                              /**< This field can contain the ID of object in order to assist  
       
   753                                                       object selection. 0 means undefined and is the default value. */
       
   754     OMX_SYMBIAN_ROIOBJECTTYPE eObjectType; /**< Indicates the type of object to be selected. */
       
   755 } OMX_SYMBIAN_CONFIG_ROISELECTIONTYPE;
       
   756 
       
   757 /**
       
   758  * Classification of algorithm comlexity values
       
   759  */
       
   760 typedef enum OMX_SYMBIAN_ALGORITHMCOMPLEXITYTYPE {
       
   761     OMX_SYMBIAN_AlgComplexityLow,
       
   762     OMX_SYMBIAN_AlgComplexityMedium,
       
   763     OMX_SYMBIAN_AlgComplexityHigh,
       
   764     OMX_SYMBIAN_AlgComplexityMax = 0x7FFFFFFF
       
   765 } OMX_SYMBIAN_ALGORITHMCOMPLEXITYTYPE;
       
   766 
       
   767 /**
       
   768  * Algorithm complexity config
       
   769  */
       
   770 typedef struct OMX_SYMBIAN_CONFIG_ALGORITHMCOMPLEXITYTYPE {
       
   771     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   772     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   773     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   774     OMX_SYMBIAN_ALGORITHMCOMPLEXITYTYPE eComplexity; /**< Algorithm complexity to use */
       
   775 } OMX_SYMBIAN_CONFIG_ALGORITHMCOMPLEXITYTYPE;
       
   776 
       
   777 /** Color format extensions. */
       
   778 typedef enum OMX_SYMBIAN_COLOR_FORMATTYPE {
       
   779     OMX_SYMBIAN_COLOR_FormatYUV420MBPackedSemiPlanar = OMX_COLOR_FormatVendorStartUnused + OMX_SYMBIAN_EXTENSION_START_OFFSET,
       
   780     OMX_SYMBIAN_COLOR_FormatRawBayer12bit,
       
   781     OMX_SYMBIAN_COLOR_FormatMax = 0x7FFFFFFF
       
   782 } OMX_SYMBIAN_COLOR_FORMATTYPE;
       
   783 
       
   784 /** Primary color enumeration. */
       
   785 typedef enum OMX_SYMBIAN_COLORPRIMARYTYPE {
       
   786     OMX_SYMBIAN_ColorPrimaryFullRange,
       
   787     OMX_SYMBIAN_ColorPrimaryBT601,
       
   788     OMX_SYMBIAN_ColorPrimaryBT709,
       
   789     OMX_SYMBIAN_ColorMax = 0x7FFFFFFF
       
   790 } OMX_SYMBIAN_COLORPRIMARYTYPE;
       
   791 
       
   792 /** YUV data color range.
       
   793 
       
   794 The index specified for this structure is retrieved using 
       
   795 OMX_GetExtensionIndex() with the extension string 
       
   796 "OMX.Symbian.Index.Param.Common.ColorPrimary".
       
   797 */
       
   798 typedef struct OMX_SYMBIAN_PARAM_COLORPRIMARYTYPE {
       
   799     OMX_U32 nSize;
       
   800     OMX_VERSIONTYPE nVersion;
       
   801     OMX_U32 nPortIndex;
       
   802     OMX_SYMBIAN_COLORPRIMARYTYPE eColorPrimary;
       
   803 } OMX_SYMBIAN_PARAM_COLORPRIMARYTYPE;
       
   804 
       
   805 
       
   806 /** Pixel Aspect Ratio.
       
   807 
       
   808 The index specified for this structure is retrieved using 
       
   809 OMX_GetExtensionIndex() with the extension string 
       
   810 "OMX.Symbian.Index.Param.Common.PixelAspectRatio".
       
   811 */
       
   812 typedef struct OMX_SYMBIAN_PARAM_PIXELASPECTRATIOTYPE
       
   813 {
       
   814     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
   815     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
   816     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   817     OMX_U8 nHorizontal;         /**< Width of pixel. nHorizontal is 4 is For 4:3 PAR */
       
   818     OMX_U8 nVertical;           /**< Height of pixel. nVertical is 3 is For 4:3 PAR */
       
   819     OMX_TICKS nTimestamp;       /**< Time when PAR change should happen */
       
   820 } OMX_SYMBIAN_PARAM_PIXELASPECTRATIOTYPE;
       
   821 
       
   822 
       
   823 #ifdef __cplusplus
       
   824 }
       
   825 #endif /* __cplusplus */
       
   826 
       
   827 #endif /* OMX_Symbian_IVCommonExt_h */