1334de520b0369215b7931fefa424fb92d295f0ebJames Dong/* ------------------------------------------------------------------
2334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Copyright (C) 1998-2009 PacketVideo
3334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
4334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Licensed under the Apache License, Version 2.0 (the "License");
5334de520b0369215b7931fefa424fb92d295f0ebJames Dong * you may not use this file except in compliance with the License.
6334de520b0369215b7931fefa424fb92d295f0ebJames Dong * You may obtain a copy of the License at
7334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
8334de520b0369215b7931fefa424fb92d295f0ebJames Dong *      http://www.apache.org/licenses/LICENSE-2.0
9334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
10334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Unless required by applicable law or agreed to in writing, software
11334de520b0369215b7931fefa424fb92d295f0ebJames Dong * distributed under the License is distributed on an "AS IS" BASIS,
12334de520b0369215b7931fefa424fb92d295f0ebJames Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13334de520b0369215b7931fefa424fb92d295f0ebJames Dong * express or implied.
14334de520b0369215b7931fefa424fb92d295f0ebJames Dong * See the License for the specific language governing permissions
15334de520b0369215b7931fefa424fb92d295f0ebJames Dong * and limitations under the License.
16334de520b0369215b7931fefa424fb92d295f0ebJames Dong * -------------------------------------------------------------------
17334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
18334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
19a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Copyright (c) 2008 The Khronos Group Inc.
20a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *
21334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Permission is hereby granted, free of charge, to any person obtaining
22334de520b0369215b7931fefa424fb92d295f0ebJames Dong * a copy of this software and associated documentation files (the
23334de520b0369215b7931fefa424fb92d295f0ebJames Dong * "Software"), to deal in the Software without restriction, including
24334de520b0369215b7931fefa424fb92d295f0ebJames Dong * without limitation the rights to use, copy, modify, merge, publish,
25334de520b0369215b7931fefa424fb92d295f0ebJames Dong * distribute, sublicense, and/or sell copies of the Software, and to
26334de520b0369215b7931fefa424fb92d295f0ebJames Dong * permit persons to whom the Software is furnished to do so, subject
27a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * to the following conditions:
28334de520b0369215b7931fefa424fb92d295f0ebJames Dong * The above copyright notice and this permission notice shall be included
29a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * in all copies or substantial portions of the Software.
30a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *
31334de520b0369215b7931fefa424fb92d295f0ebJames Dong * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
32334de520b0369215b7931fefa424fb92d295f0ebJames Dong * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
33334de520b0369215b7931fefa424fb92d295f0ebJames Dong * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
34334de520b0369215b7931fefa424fb92d295f0ebJames Dong * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
35334de520b0369215b7931fefa424fb92d295f0ebJames Dong * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
36334de520b0369215b7931fefa424fb92d295f0ebJames Dong * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
37a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
39334de520b0369215b7931fefa424fb92d295f0ebJames Dong
40a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
41334de520b0369215b7931fefa424fb92d295f0ebJames Dong * @file OMX_Image.h - OpenMax IL version 1.1.2
42a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * The structures needed by Image components to exchange parameters and
43334de520b0369215b7931fefa424fb92d295f0ebJames Dong * configuration data with the components.
44334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
45334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifndef OMX_Image_h
46334de520b0369215b7931fefa424fb92d295f0ebJames Dong#define OMX_Image_h
47334de520b0369215b7931fefa424fb92d295f0ebJames Dong
48334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifdef __cplusplus
49334de520b0369215b7931fefa424fb92d295f0ebJames Dongextern "C" {
50334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif /* __cplusplus */
51334de520b0369215b7931fefa424fb92d295f0ebJames Dong
52334de520b0369215b7931fefa424fb92d295f0ebJames Dong
53334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
54a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Each OMX header must include all required header files to allow the
55a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * header to compile without errors.  The includes below are required
56a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * for this header file to compile successfully
57334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
58334de520b0369215b7931fefa424fb92d295f0ebJames Dong
59334de520b0369215b7931fefa424fb92d295f0ebJames Dong#include <OMX_IVCommon.h>
60334de520b0369215b7931fefa424fb92d295f0ebJames Dong
61334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @defgroup imaging OpenMAX IL Imaging Domain
62334de520b0369215b7931fefa424fb92d295f0ebJames Dong * @ingroup iv
63334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Structures for OpenMAX IL Imaging domain
64334de520b0369215b7931fefa424fb92d295f0ebJames Dong * @{
65334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
66334de520b0369215b7931fefa424fb92d295f0ebJames Dong
67a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
68a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Enumeration used to define the possible image compression coding.
69334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
70334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_IMAGE_CODINGTYPE {
71334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingUnused,      /**< Value when format is N/A */
72334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingAutoDetect,  /**< Auto detection of image format */
73334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingJPEG,        /**< JPEG/JFIF image format */
74334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingJPEG2K,      /**< JPEG 2000 image format */
75334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingEXIF,        /**< EXIF image format */
76334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingTIFF,        /**< TIFF image format */
77334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingGIF,         /**< Graphics image format */
78334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingPNG,         /**< PNG image format */
79334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingLZW,         /**< LZW image format */
80334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingBMP,         /**< Windows Bitmap format */
81a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_IMAGE_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
82334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
83334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CodingMax = 0x7FFFFFFF
84334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_CODINGTYPE;
85334de520b0369215b7931fefa424fb92d295f0ebJames Dong
86334de520b0369215b7931fefa424fb92d295f0ebJames Dong
87334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
88a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Data structure used to define an image path. The number of image paths
89a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * for input and output will vary by type of the image component.
90a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *
91334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  Input (aka Source) : Zero Inputs, one Output,
92334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  Splitter           : One Input, 2 or more Outputs,
93334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  Processing Element : One Input, one output,
94334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  Mixer              : 2 or more inputs, one output,
95334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  Output (aka Sink)  : One Input, zero outputs.
96a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *
97a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * The PortDefinition structure is used to define all of the parameters
98a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * necessary for the compliant component to setup an input or an output
99a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * image path.  If additional vendor specific data is required, it should
100a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * be transmitted to the component using the CustomCommand function.
101a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Compliant components will prepopulate this structure with optimal
102334de520b0369215b7931fefa424fb92d295f0ebJames Dong * values during the OMX_GetParameter() command.
103334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
104334de520b0369215b7931fefa424fb92d295f0ebJames Dong * STRUCT MEMBERS:
105334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  cMIMEType             : MIME type of data for the port
106a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  pNativeRender         : Platform specific reference for a display if a
107334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          sync, otherwise this field is 0
108a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nFrameWidth           : Width of frame to be used on port if
109a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *                          uncompressed format is used.  Use 0 for
110334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          unknown, don't care or variable
111a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nFrameHeight          : Height of frame to be used on port if
112a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *                          uncompressed format is used. Use 0 for
113334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          unknown, don't care or variable
114a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nStride               : Number of bytes per span of an image (i.e.
115334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          indicates the number of bytes to get from
116a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *                          span N to span N+1, where negative stride
117334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          indicates the image is bottom up
118334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nSliceHeight          : Height used when encoding in slices
119a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  bFlagErrorConcealment : Turns on error concealment if it is supported by
120334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          the OMX component
121a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  eCompressionFormat    : Compression format used in this instance of
122a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *                          the component. When OMX_IMAGE_CodingUnused is
123334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          specified, eColorFormat is valid
124334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  eColorFormat          : Decompressed format used by this component
125a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  pNativeWindow         : Platform specific reference for a window object if a
126a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *                          display sink , otherwise this field is 0x0.
127334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
128334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_IMAGE_PORTDEFINITIONTYPE {
129334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_STRING cMIMEType;
130334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_NATIVE_DEVICETYPE pNativeRender;
131a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_U32 nFrameWidth;
132334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nFrameHeight;
133a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_S32 nStride;
134334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSliceHeight;
135334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_BOOL bFlagErrorConcealment;
136334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CODINGTYPE eCompressionFormat;
137334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_COLOR_FORMATTYPE eColorFormat;
138334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_NATIVE_WINDOWTYPE pNativeWindow;
139334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_PORTDEFINITIONTYPE;
140334de520b0369215b7931fefa424fb92d295f0ebJames Dong
141334de520b0369215b7931fefa424fb92d295f0ebJames Dong
142a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
143a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Port format parameter.  This structure is used to enumerate the various
144334de520b0369215b7931fefa424fb92d295f0ebJames Dong * data input/output format supported by the port.
145a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *
146334de520b0369215b7931fefa424fb92d295f0ebJames Dong * STRUCT MEMBERS:
147334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nSize              : Size of the structure in bytes
148334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nVersion           : OMX specification version information
149334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nPortIndex         : Indicates which port to set
150a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nIndex             : Indicates the enumeration index for the format from
151334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                       0x0 to N-1
152a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  eCompressionFormat : Compression format used in this instance of the
153a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *                       component. When OMX_IMAGE_CodingUnused is specified,
154334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                       eColorFormat is valid
155334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  eColorFormat       : Decompressed format used by this component
156334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
157334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_IMAGE_PARAM_PORTFORMATTYPE {
158334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
159334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
160334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nPortIndex;
161334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nIndex;
162334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_CODINGTYPE eCompressionFormat;
163334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_COLOR_FORMATTYPE eColorFormat;
164334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_PARAM_PORTFORMATTYPE;
165334de520b0369215b7931fefa424fb92d295f0ebJames Dong
166334de520b0369215b7931fefa424fb92d295f0ebJames Dong
167a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
168a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Flash control type
169334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
170334de520b0369215b7931fefa424fb92d295f0ebJames Dong * ENUMS
171334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  Torch : Flash forced constantly on
172334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
173334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_IMAGE_FLASHCONTROLTYPE {
174334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FlashControlOn = 0,
175334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FlashControlOff,
176334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FlashControlAuto,
177334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FlashControlRedEyeReduction,
178334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FlashControlFillin,
179334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FlashControlTorch,
180a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_IMAGE_FlashControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
181334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FlashControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
182334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FlashControlMax = 0x7FFFFFFF
183334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_FLASHCONTROLTYPE;
184334de520b0369215b7931fefa424fb92d295f0ebJames Dong
185334de520b0369215b7931fefa424fb92d295f0ebJames Dong
186a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
187a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Flash control configuration
188334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
189334de520b0369215b7931fefa424fb92d295f0ebJames Dong * STRUCT MEMBERS:
190334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nSize         : Size of the structure in bytes
191334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nVersion      : OMX specification version information
192334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nPortIndex    : Port that this structure applies to
193334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  eFlashControl : Flash control type
194334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
195334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_IMAGE_PARAM_FLASHCONTROLTYPE {
196334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
197334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
198334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nPortIndex;
199334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FLASHCONTROLTYPE eFlashControl;
200334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_PARAM_FLASHCONTROLTYPE;
201334de520b0369215b7931fefa424fb92d295f0ebJames Dong
202334de520b0369215b7931fefa424fb92d295f0ebJames Dong
203a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
204a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Focus control type
205334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
206334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_IMAGE_FOCUSCONTROLTYPE {
207334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FocusControlOn = 0,
208334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FocusControlOff,
209334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FocusControlAuto,
210334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FocusControlAutoLock,
211a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_IMAGE_FocusControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
212334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FocusControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
213334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FocusControlMax = 0x7FFFFFFF
214334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_FOCUSCONTROLTYPE;
215334de520b0369215b7931fefa424fb92d295f0ebJames Dong
216a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar
217a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
218a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Focus control configuration
219334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
220334de520b0369215b7931fefa424fb92d295f0ebJames Dong * STRUCT MEMBERS:
221334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nSize           : Size of the structure in bytes
222334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nVersion        : OMX specification version information
223334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nPortIndex      : Port that this structure applies to
224334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  eFocusControl   : Focus control
225a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nFocusSteps     : Focus can take on values from 0 mm to infinity.
226334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                    Interest is only in number of steps over this range.
227334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nFocusStepIndex : Current focus step index
228334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
229334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE {
230334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
231334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
232334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nPortIndex;
233334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_FOCUSCONTROLTYPE eFocusControl;
234334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nFocusSteps;
235334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nFocusStepIndex;
236334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE;
237334de520b0369215b7931fefa424fb92d295f0ebJames Dong
238334de520b0369215b7931fefa424fb92d295f0ebJames Dong
239a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
240334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Q Factor for JPEG compression, which controls the tradeoff between image
241334de520b0369215b7931fefa424fb92d295f0ebJames Dong * quality and size.  Q Factor provides a more simple means of controlling
242334de520b0369215b7931fefa424fb92d295f0ebJames Dong * JPEG compression quality, without directly programming Quantization
243a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * tables for chroma and luma
244334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
245334de520b0369215b7931fefa424fb92d295f0ebJames Dong * STRUCT MEMBERS:
246a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nSize      : Size of the structure in bytes
247a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nVersion   : OMX specification version information
248a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nPortIndex : Port that this structure applies to
249a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nQFactor   : JPEG Q factor value in the range of 1-100. A factor of 1
250a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *               produces the smallest, worst quality images, and a factor
251a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *               of 100 produces the largest, best quality images.  A
252a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *               typical default is 75 for small good quality images
253334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
254334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_IMAGE_PARAM_QFACTORTYPE {
255a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_U32 nSize;
256a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_VERSIONTYPE nVersion;
257a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_U32 nPortIndex;
258a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_U32 nQFactor;
259334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_PARAM_QFACTORTYPE;
260334de520b0369215b7931fefa424fb92d295f0ebJames Dong
261a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
262a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Quantization table type
263334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
264334de520b0369215b7931fefa424fb92d295f0ebJames Dong
265334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_IMAGE_QUANTIZATIONTABLETYPE {
266334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_QuantizationTableLuma = 0,
267334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_QuantizationTableChroma,
268334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_QuantizationTableChromaCb,
269334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_QuantizationTableChromaCr,
270a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_IMAGE_QuantizationTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
271334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_QuantizationTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
272334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_QuantizationTableMax = 0x7FFFFFFF
273334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_QUANTIZATIONTABLETYPE;
274334de520b0369215b7931fefa424fb92d295f0ebJames Dong
275a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
276334de520b0369215b7931fefa424fb92d295f0ebJames Dong * JPEG quantization tables are used to determine DCT compression for
277a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * YUV data, as an alternative to specifying Q factor, providing exact
278a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * control of compression
279334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
280334de520b0369215b7931fefa424fb92d295f0ebJames Dong * STRUCT MEMBERS:
281334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nSize                   : Size of the structure in bytes
282a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nVersion                : OMX specification version information
283334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nPortIndex              : Port that this structure applies to
284334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  eQuantizationTable      : Quantization table type
285a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nQuantizationMatrix[64] : JPEG quantization table of coefficients stored
286a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *                            in increasing columns then by rows of data (i.e.
287a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *                            row 1, ... row 8). Quantization values are in
288334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                            the range 0-255 and stored in linear order
289a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *                            (i.e. the component will zig-zag the
290a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *                            quantization table data if required internally)
291334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
292334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE {
293334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
294334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
295334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nPortIndex;
296334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_QUANTIZATIONTABLETYPE eQuantizationTable;
297334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U8 nQuantizationMatrix[64];
298334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE;
299334de520b0369215b7931fefa424fb92d295f0ebJames Dong
300334de520b0369215b7931fefa424fb92d295f0ebJames Dong
301a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
302a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * Huffman table type, the same Huffman table is applied for chroma and
303a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * luma component
304334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
305334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef enum OMX_IMAGE_HUFFMANTABLETYPE {
306334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_HuffmanTableAC = 0,
307334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_HuffmanTableDC,
308334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_HuffmanTableACLuma,
309334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_HuffmanTableACChroma,
310334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_HuffmanTableDCLuma,
311334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_HuffmanTableDCChroma,
312a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar    OMX_IMAGE_HuffmanTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
313334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_HuffmanTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
314334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_HuffmanTableMax = 0x7FFFFFFF
315334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_HUFFMANTABLETYPE;
316334de520b0369215b7931fefa424fb92d295f0ebJames Dong
317a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar/**
318a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar * JPEG Huffman table
319334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
320334de520b0369215b7931fefa424fb92d295f0ebJames Dong * STRUCT MEMBERS:
321334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nSize                            : Size of the structure in bytes
322334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nVersion                         : OMX specification version information
323334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nPortIndex                       : Port that this structure applies to
324334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  eHuffmanTable                    : Huffman table type
325a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nNumberOfHuffmanCodeOfLength[16] : 0-16, number of Huffman codes of each
326334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                                     possible length
327a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *  nHuffmanTable[256]               : 0-255, the size used for AC and DC
328a1ae5a4fe52192525f510dc14ecf1f7d4fb107f5Lajos Molnar *                                     HuffmanTable are 16 and 162
329334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
330334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_IMAGE_PARAM_HUFFMANTTABLETYPE {
331334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
332334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
333334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nPortIndex;
334334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_IMAGE_HUFFMANTABLETYPE eHuffmanTable;
335334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U8 nNumberOfHuffmanCodeOfLength[16];
336334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U8 nHuffmanTable[256];
337334de520b0369215b7931fefa424fb92d295f0ebJames Dong}OMX_IMAGE_PARAM_HUFFMANTTABLETYPE;
338334de520b0369215b7931fefa424fb92d295f0ebJames Dong
339334de520b0369215b7931fefa424fb92d295f0ebJames Dong/** @} */
340334de520b0369215b7931fefa424fb92d295f0ebJames Dong#ifdef __cplusplus
341334de520b0369215b7931fefa424fb92d295f0ebJames Dong}
342334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif /* __cplusplus */
343334de520b0369215b7931fefa424fb92d295f0ebJames Dong
344334de520b0369215b7931fefa424fb92d295f0ebJames Dong#endif
345334de520b0369215b7931fefa424fb92d295f0ebJames Dong/* File EOF */
346