1/*--------------------------------------------------------------------------
2Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
3
4Redistribution and use in source and binary forms, with or without
5modification, are permitted provided that the following conditions are met:
6    * Redistributions of source code must retain the above copyright
7      notice, this list of conditions and the following disclaimer.
8    * Redistributions in binary form must reproduce the above copyright
9      notice, this list of conditions and the following disclaimer in the
10      documentation and/or other materials provided with the distribution.
11    * Neither the name of The Linux Foundation nor
12      the names of its contributors may be used to endorse or promote
13      products derived from this software without specific prior written
14      permission.
15
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27--------------------------------------------------------------------------*/
28
29#ifndef __H_QOMX_IVCOMMONEXTENSIONS_H__
30#define __H_QOMX_IVCOMMONEXTENSIONS_H__
31
32/*========================================================================
33
34*//** @file QOMX_CommonExtensions.h
35
36@par FILE SERVICES:
37      common extensions API for OpenMax IL.
38
39      This file contains the description of the Qualcomm OpenMax IL
40      common extention interface, through which the IL client and OpenMax
41      components can access additional capabilities.
42
43*//*====================================================================== */
44
45
46/*========================================================================
47
48                     INCLUDE FILES FOR MODULE
49
50========================================================================== */
51#include <OMX_Core.h>
52
53/*========================================================================
54
55                      DEFINITIONS AND DECLARATIONS
56
57========================================================================== */
58
59#if defined( __cplusplus )
60extern "C"
61{
62#endif /* end of macro __cplusplus */
63
64/* IV common extension strings */
65#define OMX_QCOM_INDEX_CONFIG_MEDIAINFO                 "OMX.QCOM.index.config.mediainfo"  /**< reference: QOMX_MEDIAINFOTYPE */
66#define OMX_QCOM_INDEX_CONFIG_CONTENTURI                "OMX.QCOM.index.config.contenturi" /**< reference: OMX_PARAM_CONTENTURITYPE */
67#define OMX_QCOM_INDEX_PARAM_IMAGESIZECONTROL           "OMX.Qualcomm.index.param.ImageSizeControl" /**< reference: QOMX_IMAGE_IMAGESIZECONTROLTYPE */
68#define OMX_QCOM_INDEX_CONFIG_PAUSEPORT                 "OMX.QCOM.index.config.PausePort" /**< reference: QOMX_CONFIG_PAUSEPORTTYPE */
69
70/** reference: QOMX_URANGETYPE
71 *  nMin, nMax, nStepSize give width in pixels */
72#define OMX_QCOM_INDEX_PARAM_FRAMEWIDTHRANGESUPPORTED   "OMX.QCOM.index.param.FrameWidthRangeSupported"
73
74/** reference: QOMX_URANGETYPE
75 *  nMin, nMax, nStepSize give height in pixels */
76#define OMX_QCOM_INDEX_PARAM_FRAMEHEIGHTRANGESUPPORTED  "OMX.QCOM.index.param.FrameHeightRangeSupported"
77
78/** reference: QOMX_URANGETYPE
79 *  nMin, nMax, nStepSize give the number of macroblocks per
80 *  frame. */
81#define OMX_QCOM_INDEX_PARAM_MACROBLOCKSPERFRAMERANGESUPPORTED "OMX.QCOM.index.param.MacroblocksPerFrameRangeSupported"
82
83/** reference: QOMX_URANGETYPE
84 *  nMin, nMax, nStepSize give the number of macroblocks per
85 *  second. */
86#define OMX_QCOM_INDEX_PARAM_MACROBLOCKSPERSECONDRANGESUPPORTED "OMX.QCOM.index.param.MacroblocksPerSecondRangeSupported"
87
88/** reference: QOMX_URANGETYPE
89 *  nMin, nMax, nStepSize give frame rate in frames per second
90 *  in Q16 format. */
91#define OMX_QCOM_INDEX_PARAM_FRAMERATERANGESUPPORTED    "OMX.QCOM.index.param.FrameRateRangeSupported"
92
93#define OMX_QCOM_INDEX_PARAM_PLANEDEFINITION            "OMX.QCOM.index.param.PlaneDefinition" /** reference: QOMX_PLANEDEFINITIONTYPE */
94
95/** reference: QOMX_URANGETYPE
96 *  nMin, nMax, nStepSize give the crop width in pixels */
97#define OMX_QOMX_INDEX_PARAM_CROPWIDTHRANGESUPPORTED        "OMX.QCOM.index.param.CropWidthRangeSupported"
98
99/** reference: QOMX_URANGETYPE
100 *  nMin, nMax, nStepSize give the crop height in pixels */
101#define OMX_QOMX_INDEX_PARAM_CROPHEIGHTRANGESUPPORTED        "OMX.QCOM.index.param.CropHeightRangeSupported"
102
103/** reference: QOMX_URANGETYPE
104 *  nMin, nMax, nStepSize give the digital zoom factor on width
105 *  in Q16 format. */
106#define OMX_QCOM_INDEX_PARAM_DIGITALZOOMWIDTHRANGESUPPORTED    "OMX.QCOM.index.param.DigitalZoomWidthRangeSupported"
107
108/** reference: QOMX_URANGETYPE
109 *  nMin, nMax, nStepSize give the digital zoom factor on height
110 *  in Q16 format. */
111#define OMX_QCOM_INDEX_PARAM_DIGITALZOOMHEIGHTRANGESUPPORTED    "OMX.QCOM.index.param.DigitalZoomHeightRangeSupported"
112
113    // new externsions for vidpp
114#define OMX_QCOM_INDEX_CONFIG_ACTIVE_REGION_DETECTION           "OMX.QCOM.index.config.activeregiondetection"
115#define OMX_QCOM_INDEX_CONFIG_ACTIVE_REGION_DETECTION_STATUS    "OMX.QCOM.index.config.activeregiondetectionstatus"
116#define OMX_QCOM_INDEX_CONFIG_SCALING_MODE                      "OMX.QCOM.index.config.scalingmode"
117#define OMX_QCOM_INDEX_CONFIG_NOISEREDUCTION                    "OMX.QCOM.index.config.noisereduction"
118#define OMX_QCOM_INDEX_CONFIG_IMAGEENHANCEMENT                  "OMX.QCOM.index.config.imageenhancement"
119/**
120 * Enumeration defining the extended uncompressed image/video
121 * formats.
122 *
123 * ENUMS:
124 *  YVU420PackedSemiPlanar       : Buffer containing all Y, and then V and U
125 *                                 interleaved.
126 *  YVU420PackedSemiPlanar32m4ka : YUV planar format, similar to the
127 *                                 YVU420PackedSemiPlanar format, but with the
128 *                                 following restrictions:
129 *
130 *                                 1. The width and height of both plane must
131 *                                 be a multiple of 32 texels.
132 *
133 *                                 2. The base address of both planes must be
134 *                                 aligned to a 4kB boundary.
135 *
136 *  YUV420PackedSemiPlanar16m2ka : YUV planar format, similar to the
137 *                                 YUV420PackedSemiPlanar format, but with the
138 *                                 following restrictions:
139 *
140 *                                 1. The width of the luma plane must be a
141 *                                 multiple of 16 pixels.
142 *
143 *                                 2. The address of both planes must be
144 *                                 aligned to a 2kB boundary.
145 *
146 *  YUV420PackedSemiPlanar64x32Tile2m8ka : YUV planar format, similar to the
147 *                                 YUV420PackedSemiPlanar format, but with the
148 *                                 following restrictions:
149 *
150 *                                 1. The data is laid out in a 4x2 MB tiling
151 *                                 memory structure
152 *
153 *                                 2. The width of each plane is a multiple of
154 *                                 2 4x2 MB tiles.
155 *
156 *                                 3. The height of each plan is a multiple of
157 *                                 a 4x2 MB tile.
158 *
159 *                                 4. The base address of both planes must be
160 *                                 aligned to an 8kB boundary.
161 *
162 *                                 5. The tiles are scanned in the order
163 *                                 defined in the MFCV5.1 User's Manual.
164 */
165typedef enum QOMX_COLOR_FORMATTYPE
166{
167    QOMX_COLOR_FormatYVU420PackedSemiPlanar       = 0x7F000001,
168    QOMX_COLOR_FormatYVU420PackedSemiPlanar32m4ka,
169    QOMX_COLOR_FormatYUV420PackedSemiPlanar16m2ka,
170    QOMX_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka,
171    QOMX_COLOR_FORMATYUV420PackedSemiPlanar32m,
172} QOMX_COLOR_FORMATTYPE;
173
174typedef enum QOMX_MEDIAINFOTAGTYPE {
175    QOMX_MediaInfoTagVersion,       /**< OMX_VERSIONTYPE. Version of the standard specifying the media information.*/
176    QOMX_MediaInfoTagUID,           /**< OMX_U8*. Unique ID of the media data, ie image unique ID.*/
177    QOMX_MediaInfoTagDescription,   /**< OMX_U8*. Comments about the media.*/
178    QOMX_MediaInfoTagTitle,         /**< OMX_U8*. Title of the media.*/
179    QOMX_MediaInfoTagAuthor,        /**< OMX_U8*. Author of the media.*/
180    QOMX_MediaInfoTagCopyright,     /**< OMX_U8*. Copyright information.*/
181    QOMX_MediaInfoTagTrackNum,      /**< OMX_U32. Track number.*/
182    QOMX_MediaInfoTagGenre,         /**< OMX_U8*. The genre of the media.*/
183    QOMX_MediaInfoTagEquipmentMake, /**< OMX_U8*. Manufacturer of recording equipment.*/
184    QOMX_MediaInfoTagEquipmentModel,/**< OMX_U8*. Model or name of the recording equipment.*/
185    QOMX_MediaInfoTagSoftware,      /**< OMX_U8*. Name and version of the software or firmware of the device generating the media.*/
186    QOMX_MediaInfoTagAssociatedFile,/**< OMX_U8*. The name of the file related to the media.  For example, an audio file related to an image file.*/
187    QOMX_MediaInfoTagResolution,    /**< QOMX_RESOLUTIONTYPE. Number of pixels per resolution unit.*/
188    QOMX_MediaInfoTagDateCreated,   /**< QOMX_DATESTAMPTYPE. Date when media was created.*/
189    QOMX_MediaInfoTagTimeCreated,   /**< QOMX_TIMESTAMPTYPE. Time when media was created.*/
190    QOMX_MediaInfoTagDateModified,  /**< QOMX_DATESTAMPETYPE. Date when file was last modified.*/
191    QOMX_MediaInfoTagTimeModified,  /**< QOMX_TIMESTAMPTYPE. Time when file was last modified.*/
192    QOMX_MediaInfoTagGPSAreaName,   /**< OMX_U8*. The name of the location.*/
193    QOMX_MediaInfoTagGPSVersion,    /**< OMX_VERSIONTYPE. GPS version.*/
194    QOMX_MediaInfoTagGPSCoordinates,/**< QOMX_GEODETICTYPE. The longitude, latitude, and altitude.*/
195    QOMX_MediaInfoTagGPSSatellites, /**< OMX_U8*. The GPS satellites used for measurements.*/
196    QOMX_MediaInfoTagGPSPrecision,  /**< OMX_U32. GPS degree of precision.*/
197    QOMX_MediaInfoTagGPSDateStamp,  /**< QOMX_DATESTAMPTYPE. Date of the GPS data.*/
198    QOMX_MediaInfoTagGPSTimeStamp,  /**< QOMX_TIMESTAMPTYPE. Time of the GPS data.*/
199    QOMX_MediaInfoTagMediaStreamType,/**< QOMX_MEDIASTREAMTYPE. Type of the stream. */
200    QOMX_MediaInfoDuration,         /**< OMX_TICKS. Total duration of the media.*/
201    QOMX_MediaInfoSize,                          /**< OMX_U32. Total size of the media in bytes.*/
202    QOMX_MediaInfoTagAlbum,                     /**< OMX_U8*. Name of album/movie/show.*/
203    QOMX_MediaInfoTagLocation,                  /**< OMX_U8*. Recording location information.*/
204    QOMX_MediaInfoTagClassification,            /**< OMX_U8*. Classification information of media.*/
205    QOMX_MediaInfoTagRatings,                   /**< OMX_U8*. Media Ratings based on popularity & rating criteria.*/
206    QOMX_MediaInfoTagKeyword,                   /**< OMX_U8*. Keyword associated with media which are intended to reflect mood of the A/V.*/
207    QOMX_MediaInfoTagPerformance,               /**< OMX_U8*. Media Performer information..*/
208    QOMX_MediaInfoTagYear,                      /**< OMX_U8*. Production year information of media.*/
209    QOMX_MediaInfoTagComposer,                  /**< OMX_U8*. Name of the composer of media i.e. audio.*/
210    QOMX_MediaInfoTagEncoderName,                  /**< OMX_U8*. Name of the person or organisation who encoded media.*/
211    QOMX_MediaInfoTagCopyProhibitFlag,          /**< OMX_U8*. Flag to indicate if copy is allowed or not.*/
212    QOMX_MediaInfoTagLyricist,                  /**< OMX_U8*. Name of the lyricist or text writer in recording. Specific to ID3 tag.*/
213    QOMX_MediaInfoTagSubtitle,                  /**< OMX_U8*. Subtitle/Description used for informaton directly related to title of media.*/
214    QOMX_MediaInfoTagOriginalFileName,          /**< OMX_U8*. Original file name.*/
215    QOMX_MediaInfoTagOriginalLyricist,          /**< OMX_U8*. Name of the original lyricist/text writer of original recording.*/
216    QOMX_MediaInfoTagOriginalArtist,            /**< OMX_U8*. Name of the original artist.*/
217    QOMX_MediaInfoTagOriginalReleaseYear,       /**< OMX_U8*. Original release year of recorded media.*/
218    QOMX_MediaInfoTagFileOwner,                 /**< OMX_U8*. Licensee or name of the file owner.*/
219    QOMX_MediaInfoTagOrchestra,                 /**< OMX_U8*. Name of the orchestra or performers during recording.*/
220    QOMX_MediaInfoTagConductor,                 /**< OMX_U8*. Name of the conductor.*/
221    QOMX_MediaInfoTagRemixedBy,                 /**< OMX_U8*. Person or organization name who did the remix.*/
222    QOMX_MediaInfoTagAlbumArtist,               /**< OMX_U8*. Name of the album artist.*/
223    QOMX_MediaInfoTagPublisher,                 /**< OMX_U8*. Name of the publisher or label.*/
224    QOMX_MediaInfoTagRecordingDates,            /**< OMX_U8*. Recording date of media.*/
225    QOMX_MediaInfoTagInternetRadioStationName,  /**< OMX_U8*. Name of the Internet radio station from which the audio is streamed.*/
226    QOMX_MediaInfoTagInternetRadioStationOwner, /**< OMX_U8*. Name of the owner of the Internet radio station from which the audio is streamed.*/
227    QOMX_MediaInfoTagInternationalRecordingCode,/**< OMX_U8*. International standard recording code.*/
228    QOMX_MediaInfoTagEncoderSwHwSettings,       /**< OMX_U8*. Software,hardware settings used by encoder.*/
229    QOMX_MediaInfoTagInvolvedPeopleList,        /**< OMX_U8*. List of people involved. Specific to ID3 tag.*/
230    QOMX_MediaInfoTagComments,                  /**< OMX_U8*. Comments about the media. It can be any kind of full text informaton.*/
231    QOMX_MediaInfoTagCommissioned,              /**< OMX_U8*. Commissioned information of media.*/
232    QOMX_MediaInfoTagSubject,                   /**< OMX_U8*. Subject associated with media.*/
233    QOMX_MediaInfoTagContact,                   /**< OMX_U8*. Conatct information. URL information of the seller.*/
234    QOMX_MediaInfoTagValidityPeriod,            /**< OMX_U8*. Length or period of validity of media.*/
235    QOMX_MediaInfoTagValidityEffectiveDate,     /**< OMX_U8*. Validity effective date of media*/
236    QOMX_MediaInfoTagNumberOfAllowedPlaybacks,  /**< OMX_U8*. Number of allowed playbacks for this media*/
237    QOMX_MediaInfoTagPlayCounter,               /**< OMX_U8*. Current play counter of the media.Its number of times a file has been played.*/
238    QOMX_MediaInfoTagMemo,                      /**< OMX_U8*. Memo associatd with media.*/
239    QOMX_MediaInfoTagDeviceName,                /**< OMX_U8*. Name of the devices used in creating media.*/
240    QOMX_MediaInfoTagURL,                       /**< OMX_U8*. List artist /genre /movie sites URL.*/
241    QOMX_MediaInfoTagFileType,                  /**< OMX_U8*. Indicates type of audio track.*/
242    QOMX_MediaInfoTagContentGroupDesc,          /**< OMX_U8*. Content group description if the sound belongs to a larger category of of music /sound.*/
243    QOMX_MediaInfoTagInitialKeys,               /**< OMX_U8*. Contains the musical key in which media starts.*/
244    QOMX_MediaInfoTagLanguages,                 /**< OMX_U8*. Languages of the text or lyrics spoken or sung in the media.*/
245    QOMX_MediaInfoTagMediaType,                 /**< OMX_U8*. Describes from which media the media sound originated.*/
246    QOMX_MediaInfoTagPlaylistDelay,             /**< OMX_U8*. Denotes number of milliseconds between each song of the playlist.*/
247    QOMX_MediaInfoTagBeatsPerMinute,            /**< OMX_U8*. Number of beats per minute in main part of audio.*/
248    QOMX_MediaInfoTagPartOfSet,                 /**< OMX_U8*. Describes part of the set selected or played. */
249    QOMX_MediaInfoTagInstrumentName,            /**< OMX_U8*. Name of the instrument used in creating media.*/
250    QOMX_MediaInfoTagLyrics,                    /**< OMX_U8*. Lyrics of the media/audio track.*/
251    QOMX_MediaInfoTagTrackName,                 /**< OMX_U8*. Name of the media/audio track.*/
252    QOMX_MediaInfoTagMarker,                    /**< OMX_U8*. Text string cotnents placed at a specific location to denote information about the music at that point.*/
253    QOMX_MediaInfoTagCuePoint,                  /**< OMX_U8*. Subset of the content which can be optionally played.*/
254    QOMX_MediaInfoTagGPSPositioningName,        /**< OMX_U8*. GPS positioning name. */
255    QOMX_MediaInfoTagGPSPositioningMethod,      /**< OMX_U8*. GPS positioning method.*/
256    QOMX_MediaInfoTagGPSSurveyData,             /**< OMX_U8*. GPS survey data. */
257    QOMX_MediaInfoTagGPSByteOrder,              /**< OMX_U16.GPS byte order. */
258    QOMX_MediaInfoTagGPSLatitudeRef,            /**< OMX_U32.Reference GPS latitude. */
259    QOMX_MediaInfoTagGPSLongitudeRef,           /**< OMX_U32.Reference GPS longitude */
260    QOMX_MediaInfoTagGPSAltitudeRef,            /**< OMX_U32. Reference GPS altitude.*/
261    QOMX_MediaInfoTagGPSExtensionMapScaleInfo,  /**< OMX_U64. GPS extension map scale information.*/
262    QOMX_MediaInfoTagUUIDAtomInfo,              /**< OMX_U8*. The user defined data associated with UUID.*/
263    QOMX_MediaInfoTagUUIDAtomCount,             /**< OMX_U32 UUID atom count.*/
264    QOMX_MediaInfoTagLocationRole,              /**< OMX_32. Indicates the role of the place. i.e. �0� indicate �shooting location'. �1� �real location�.*/
265    QOMX_MediaInfoTagAstronomicalBody,          /**< OMX_U8*. Astronomical body on which the location exists.*/
266    QOMX_MediaInfoTagUserInfoData               /**< OMX_U8*. The user defined tag informaton.*/
267} QOMX_MEDIAINFOTAGTYPE;
268
269typedef struct QOMX_MEDIAINFOTYPE {
270    OMX_U32 nSize;
271    OMX_VERSIONTYPE nVersion;
272    OMX_U32 nPortIndex; /**< Read-only value containing the index of the output port. */
273    QOMX_MEDIAINFOTAGTYPE eTag; /**< The type of media info being specified. */
274    OMX_U32 nDataSize; /**< The size of the associated cData.  Set nDataSize to 0 to retrieve the size required for cData. */
275    OMX_U8 cData[1]; /**< The media data info */
276} QOMX_MEDIAINFOTYPE;
277
278
279typedef enum QOMX_RESOLUTIONUNITTYPE {
280    QOMX_ResolutionUnitInch,
281    QOMX_ResolutionCentimeter
282} QOMX_RESOLUTIONUNITTYPE;
283
284typedef struct QOMX_RESOLUTIONTYPE {
285    QOMX_RESOLUTIONUNITTYPE eUnit; /**< The unit of measurement. */
286    OMX_U32 nX; /**< The number of pixels per unit in the width direction. */
287    OMX_U32 nY; /**< The number of pixels per unit in the height direction. */
288} QOMX_RESOLUTIONTYPE;
289
290typedef struct QOMX_TIMESTAMPTYPE {
291    OMX_U32 nHour; /**< The hour portion of the time stamp, based on a 24-hour format. */
292    OMX_U32 nMinute; /**< The minute portion of the time stamp. */
293    OMX_U32 nSecond; /**< The second portion of the time stamp. */
294    OMX_U32 nMillisecond; /**< the millisecond portion of the time stamp. */
295} QOMX_TIMESTAMPTYPE;
296
297typedef struct QOMX_DATESTAMPTYPE {
298    OMX_U32 nYear;  /**< The year portion of the date stamp. */
299    OMX_U32 nMonth; /**< The monthportion of the date stamp. Valid values are 1 to 12.*/
300    OMX_U32 nDay; /**< The day portion of the date stamp. Valid values are 1 to 31 depending on the month specified.*/
301} QOMX_DATESTAMPTYPE;
302
303typedef enum QOMX_GEODETICREFTYPE {
304    QOMX_GeodeticRefNorth,  /**< North latitude. */
305    QOMX_GeodeticRefSouth,  /**< South latitude. */
306    QOMX_GeodeticRefEast,   /**< East longitude. */
307    QOMX_GeodeticRefWest    /**< West longitude. */
308} QOMX_GEODETICREFTYPE;
309
310/** QOMX_GEODETICANGLETYPE is used to set geodetic angle coordinates on an ellipsoid (the Earth),
311and is explicitly used to specify latitude and longitude.  This structure is referenced by QOMX_GEODETICTYPE. */
312typedef struct QOMX_GEODETICANGLETYPE {
313    QOMX_GEODETICREFTYPE eReference; /**< Indicates whether the geodetic angle is a latitude or longitude. */
314    OMX_U32 nDegree; /**< The degree of the latitude or longitude. */
315    OMX_U32 nMinute; /**< The minute of the latitude or longitude. */
316    OMX_U32 nSecond; /**< The second of the latitude or longitude. */
317} QOMX_GEODETICANGLETYPE;
318
319typedef enum QOMX_ALTITUDEREFTYPE {
320    QOMX_AltitudeRefSeaLevel, /**< At sea level. */
321    QOMX_AltitudeRefBelowSeaLevel /**< Below sea level. */
322} QOMX_ALTITUDEREFTYPE;
323
324typedef struct QOMX_ALTITUDETYPE {
325    QOMX_ALTITUDEREFTYPE eReference; /**< The reference point for the altitude. */
326    OMX_U32 nMeter; /**< The absolute value of the number of meters above or below sea level. */
327    OMX_U32 nMillimeter; /**< The absolute value of the number of millimeters above or below sea level. */
328} QOMX_ALTITUDETYPE;
329
330/** QOMX_GEODETICTYPE is used to set geodetic coordinates such as longitude, latitude, and altitude.
331This structure references QOMX_GEODETICANGLETYPE and QOMX_ALTITUDETYPE. */
332typedef struct QOMX_GEODETICTYPE {
333    QOMX_GEODETICANGLETYPE sLatitude; /**< Indicates the latitude.*/
334    QOMX_GEODETICANGLETYPE sLongitude; /**< Indicates the longitude.*/
335    QOMX_ALTITUDETYPE sAltitude; /**< Indicates the altitude.*/
336} QOMX_GEODETICTYPE;
337
338
339typedef struct QOMX_IMAGE_IMAGESIZECONTROLTYPE {
340    OMX_U32 nSize;
341    OMX_VERSIONTYPE nVersion;
342    OMX_U32 nPortIndex; /**< port index on which size control needs to be applied */
343    OMX_U32 nTargetImageSize; /**< expected max target size in Bytes */
344} QOMX_IMAGE_IMAGESIZECONTROLTYPE;
345
346typedef enum QOMX_URITYPE {
347    QOMX_URITYPE_RTSP, /**< RTSP URI Type. */
348    QOMX_URITYPE_HTTP, /**< HTTP URI Type. */
349    QOMX_URITYPE_LOCAL /**< Local URI Type.(i.e Non Network) */
350}QOMX_URITYPE;
351
352
353typedef enum QOMX_STREAMTYPE {
354    QOMX_STREAMTYPE_VOD, /**< Video On demand Stream */
355    QOMX_STREAMTYPE_LIVE,/**< Live Stream */
356    QOMX_STREAMTYPE_FILE /**< File based Stream */
357}QOMX_STREAMTYPE;
358
359
360typedef struct QOMX_MEDIASTREAMTYPE{
361    QOMX_URITYPE eURIType;
362    QOMX_STREAMTYPE eStreamType;
363}QOMX_MEDIASTREAMTYPE;
364
365
366/**
367 * This structure specifies the parameters associated with each
368 * plane of the uncompressed image/video format.
369 */
370typedef struct QOMX_PLANEDEFINITIONTYPE {
371    OMX_U32 nSize;
372    OMX_VERSIONTYPE nVersion;
373    OMX_U32 nPortIndex;               /**< Represents the port that this structure applies to */
374    OMX_U32 nPlaneIndex;              /**< Specifies the plane enumeration index that this structure applies to, starting with a base value of 1 */
375    OMX_U32 nMinStride;               /**< Read-only parameter that specifies the minimum buffer stride */
376    OMX_U32 nMaxStride;               /**< Read-only parameter that specifies the maximum buffer stride */
377    OMX_U32 nStrideMultiples;         /**< Read-only parameter that specifies the buffer stride multiple supported */
378    OMX_S32 nActualStride;            /**< Specifies the actual stride to be applied */
379    OMX_U32 nMinPlaneBufferHeight;    /**< Read-only parameter that specifies the minimum buffer height (number of stride lines) */
380    OMX_U32 nActualPlaneBufferHeight; /**< Specifies the actual buffer height (number of stride lines) to be applied */
381    OMX_U32 nBufferSize;              /**< Read-only parameter that specifies the minimum size of the buffer, in bytes */
382    OMX_U32 nBufferAlignment;         /**< Read-only field that specifies the required alignment of the buffer, in bytes */
383} QOMX_PLANEDEFINITIONTYPE;
384
385/**
386 *  Pause port parameters
387 *
388 *  STRUCT MEMBERS:
389 *  nSize           : Size of the structure in bytes
390 *  nVersion        : OMX specification version information
391 *  nPortIndex      : Index of port that this structure represent
392 *  bPausePort      : Boolean field which indicates if port is paused or resume. By default bPausePort = OMX_FALSE
393 *                    & port will be paused when bPausePort = OMX_TRUE
394 */
395typedef struct QOMX_CONFIG_PAUSEPORTTYPE {
396  OMX_U32 nSize;
397  OMX_VERSIONTYPE nVersion;
398  OMX_U32 nPortIndex;                /**< Represents the port that this structure applies to */
399  OMX_BOOL bPausePort;               /**< Specifies if port need to PAUSE or RESUME */
400} QOMX_CONFIG_PAUSEPORTTYPE;
401
402
403typedef struct QOMX_RECTTYPE {
404    OMX_S32 nLeft;
405    OMX_S32 nTop;
406    OMX_U32 nWidth;
407    OMX_U32 nHeight;
408} QOMX_RECTTYPE;
409
410typedef struct QOMX_ACTIVEREGIONDETECTIONTYPE {
411    OMX_U32 nSize;
412    OMX_VERSIONTYPE nVersion;
413    OMX_U32 nPortIndex;
414    OMX_BOOL bEnable;
415    QOMX_RECTTYPE sROI;
416    OMX_U32 nNumExclusionRegions;
417    QOMX_RECTTYPE sExclusionRegions[1];
418} QOMX_ACTIVEREGIONDETECTIONTYPE;
419
420typedef struct QOMX_ACTIVEREGIONDETECTION_STATUSTYPE {
421    OMX_U32 nSize;
422    OMX_VERSIONTYPE nVersion;
423    OMX_U32 nPortIndex;
424    OMX_BOOL bDetected;
425    QOMX_RECTTYPE sDetectedRegion;
426} QOMX_ACTIVEREGIONDETECTION_STATUSTYPE;
427
428typedef enum QOMX_SCALE_MODETYPE {
429    QOMX_SCALE_MODE_Normal,
430    QOMX_SCALE_MODE_Anamorphic,
431    QOMX_SCALE_MODE_Max = 0x7FFFFFFF
432} QOMX_SCALE_MODETYPE;
433
434typedef struct QOMX_SCALINGMODETYPE {
435    OMX_U32 nSize;
436    OMX_VERSIONTYPE nVersion;
437    QOMX_SCALE_MODETYPE  eScaleMode;
438} QOMX_SCALINGMODETYPE;
439
440typedef struct QOMX_NOISEREDUCTIONTYPE {
441    OMX_U32 nSize;
442    OMX_VERSIONTYPE nVersion;
443    OMX_U32 nPortIndex;
444    OMX_BOOL bEnable;
445    OMX_BOOL bAutoMode;
446    OMX_S32 nNoiseReduction;
447} QOMX_NOISEREDUCTIONTYPE;
448
449typedef struct QOMX_IMAGEENHANCEMENTTYPE {
450    OMX_U32 nSize;
451    OMX_VERSIONTYPE nVersion;
452    OMX_U32 nPortIndex;
453    OMX_BOOL bEnable;
454    OMX_BOOL bAutoMode;
455    OMX_S32 nImageEnhancement;
456} QOMX_IMAGEENHANCEMENTTYPE;
457
458/*
459 * these are part of OMX1.2 but JB MR2 branch doesn't have them defined
460 * OMX_IndexParamInterlaceFormat
461 * OMX_INTERLACEFORMATTYPE
462 */
463#ifndef OMX_IndexParamInterlaceFormat
464#define OMX_IndexParamInterlaceFormat (0x7FF00000)
465typedef enum OMX_INTERLACETYPE
466{
467   OMX_InterlaceFrameProgressive,
468   OMX_InterlaceInterleaveFrameTopFieldFirst,
469   OMX_InterlaceInterleaveFrameBottomFieldFirst,
470   OMX_InterlaceFrameTopFieldFirst,
471   OMX_InterlaceFrameBottomFieldFirst
472}OMX_INTERLACEs;
473
474typedef struct OMX_INTERLACEFORMATTYPE {
475    OMX_U32 nSize;
476    OMX_VERSIONTYPE nVersion;
477    OMX_U32 nPortIndex;
478    OMX_U32 nFormat;
479    OMX_TICKS nTimeStamp;
480} OMX_INTERLACEFORMATTYPE;
481#endif
482#if defined( __cplusplus )
483}
484#endif /* end of macro __cplusplus */
485
486#endif /* end of macro __H_QOMX_IVCOMMONEXTENSIONS_H__ */
487