1 /*--------------------------------------------------------------------------
2 Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
3 
4 Redistribution and use in source and binary forms, with or without
5 modification, 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 
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23 OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26 ADVISED 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 )
60 extern "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  */
165 typedef 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 
174 typedef 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 
269 typedef 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 
279 typedef enum QOMX_RESOLUTIONUNITTYPE {
280     QOMX_ResolutionUnitInch,
281     QOMX_ResolutionCentimeter
282 } QOMX_RESOLUTIONUNITTYPE;
283 
284 typedef 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 
290 typedef 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 
297 typedef 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 
303 typedef 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),
311 and is explicitly used to specify latitude and longitude.  This structure is referenced by QOMX_GEODETICTYPE. */
312 typedef 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 
319 typedef enum QOMX_ALTITUDEREFTYPE {
320     QOMX_AltitudeRefSeaLevel, /**< At sea level. */
321     QOMX_AltitudeRefBelowSeaLevel /**< Below sea level. */
322 } QOMX_ALTITUDEREFTYPE;
323 
324 typedef 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.
331 This structure references QOMX_GEODETICANGLETYPE and QOMX_ALTITUDETYPE. */
332 typedef 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 
339 typedef 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 
346 typedef 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 
353 typedef 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 
360 typedef 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  */
370 typedef 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  */
395 typedef 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 
403 typedef struct QOMX_RECTTYPE {
404     OMX_S32 nLeft;
405     OMX_S32 nTop;
406     OMX_U32 nWidth;
407     OMX_U32 nHeight;
408 } QOMX_RECTTYPE;
409 
410 typedef 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 
420 typedef 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 
428 typedef 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 
434 typedef struct QOMX_SCALINGMODETYPE {
435     OMX_U32 nSize;
436     OMX_VERSIONTYPE nVersion;
437     QOMX_SCALE_MODETYPE  eScaleMode;
438 } QOMX_SCALINGMODETYPE;
439 
440 typedef 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 
449 typedef 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)
465 typedef enum OMX_INTERLACETYPE
466 {
467    OMX_InterlaceFrameProgressive,
468    OMX_InterlaceInterleaveFrameTopFieldFirst,
469    OMX_InterlaceInterleaveFrameBottomFieldFirst,
470    OMX_InterlaceFrameTopFieldFirst,
471    OMX_InterlaceFrameBottomFieldFirst
472 }OMX_INTERLACEs;
473 
474 typedef 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