OMX_Image.h revision 334de520b0369215b7931fefa424fb92d295f0eb
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/**
19334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Copyright (c) 2008 The Khronos Group Inc.
20334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
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
27334de520b0369215b7931fefa424fb92d295f0ebJames Dong * to the following conditions:
28334de520b0369215b7931fefa424fb92d295f0ebJames Dong * The above copyright notice and this permission notice shall be included
29334de520b0369215b7931fefa424fb92d295f0ebJames Dong * in all copies or substantial portions of the Software.
30334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
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
37334de520b0369215b7931fefa424fb92d295f0ebJames Dong * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
39334de520b0369215b7931fefa424fb92d295f0ebJames Dong
40334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
41334de520b0369215b7931fefa424fb92d295f0ebJames Dong * @file OMX_Image.h - OpenMax IL version 1.1.2
42334de520b0369215b7931fefa424fb92d295f0ebJames Dong * 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/**
54334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Each OMX header must include all required header files to allow the
55334de520b0369215b7931fefa424fb92d295f0ebJames Dong * header to compile without errors.  The includes below are required
56334de520b0369215b7931fefa424fb92d295f0ebJames Dong * 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
67334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
68334de520b0369215b7931fefa424fb92d295f0ebJames Dong * 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 */
81334de520b0369215b7931fefa424fb92d295f0ebJames Dong    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/**
88334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Data structure used to define an image path. The number of image paths
89334de520b0369215b7931fefa424fb92d295f0ebJames Dong * for input and output will vary by type of the image component.
90334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
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.
96334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
97334de520b0369215b7931fefa424fb92d295f0ebJames Dong * The PortDefinition structure is used to define all of the parameters
98334de520b0369215b7931fefa424fb92d295f0ebJames Dong * necessary for the compliant component to setup an input or an output
99334de520b0369215b7931fefa424fb92d295f0ebJames Dong * image path.  If additional vendor specific data is required, it should
100334de520b0369215b7931fefa424fb92d295f0ebJames Dong * be transmitted to the component using the CustomCommand function.
101334de520b0369215b7931fefa424fb92d295f0ebJames Dong * 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
106334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  pNativeRender         : Platform specific reference for a display if a
107334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          sync, otherwise this field is 0
108334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nFrameWidth           : Width of frame to be used on port if
109334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          uncompressed format is used.  Use 0 for
110334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          unknown, don't care or variable
111334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nFrameHeight          : Height of frame to be used on port if
112334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          uncompressed format is used. Use 0 for
113334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          unknown, don't care or variable
114334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nStride               : Number of bytes per span of an image (i.e.
115334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          indicates the number of bytes to get from
116334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          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
119334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  bFlagErrorConcealment : Turns on error concealment if it is supported by
120334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          the OMX component
121334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  eCompressionFormat    : Compression format used in this instance of
122334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          the component. When OMX_IMAGE_CodingUnused is
123334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          specified, eColorFormat is valid
124334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  eColorFormat          : Decompressed format used by this component
125334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  pNativeWindow         : Platform specific reference for a window object if a
126334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                          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;
131334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nFrameWidth;
132334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nFrameHeight;
133334de520b0369215b7931fefa424fb92d295f0ebJames Dong    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
142334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
143334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Port format parameter.  This structure is used to enumerate the various
144334de520b0369215b7931fefa424fb92d295f0ebJames Dong * data input/output format supported by the port.
145334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
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
150334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nIndex             : Indicates the enumeration index for the format from
151334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                       0x0 to N-1
152334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  eCompressionFormat : Compression format used in this instance of the
153334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                       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
167334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
168334de520b0369215b7931fefa424fb92d295f0ebJames Dong * 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,
180334de520b0369215b7931fefa424fb92d295f0ebJames Dong    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
186334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
187334de520b0369215b7931fefa424fb92d295f0ebJames Dong * 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
203334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
204334de520b0369215b7931fefa424fb92d295f0ebJames Dong * 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,
211334de520b0369215b7931fefa424fb92d295f0ebJames Dong    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
216334de520b0369215b7931fefa424fb92d295f0ebJames Dong
217334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
218334de520b0369215b7931fefa424fb92d295f0ebJames Dong * 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
225334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  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
239334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
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
243334de520b0369215b7931fefa424fb92d295f0ebJames Dong * tables for chroma and luma
244334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
245334de520b0369215b7931fefa424fb92d295f0ebJames Dong * STRUCT MEMBERS:
246334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nSize      : Size of the structure in bytes
247334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nVersion   : OMX specification version information
248334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nPortIndex : Port that this structure applies to
249334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nQFactor   : JPEG Q factor value in the range of 1-100. A factor of 1
250334de520b0369215b7931fefa424fb92d295f0ebJames Dong *               produces the smallest, worst quality images, and a factor
251334de520b0369215b7931fefa424fb92d295f0ebJames Dong *               of 100 produces the largest, best quality images.  A
252334de520b0369215b7931fefa424fb92d295f0ebJames Dong *               typical default is 75 for small good quality images
253334de520b0369215b7931fefa424fb92d295f0ebJames Dong */
254334de520b0369215b7931fefa424fb92d295f0ebJames Dongtypedef struct OMX_IMAGE_PARAM_QFACTORTYPE {
255334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nSize;
256334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_VERSIONTYPE nVersion;
257334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nPortIndex;
258334de520b0369215b7931fefa424fb92d295f0ebJames Dong    OMX_U32 nQFactor;
259334de520b0369215b7931fefa424fb92d295f0ebJames Dong} OMX_IMAGE_PARAM_QFACTORTYPE;
260334de520b0369215b7931fefa424fb92d295f0ebJames Dong
261334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
262334de520b0369215b7931fefa424fb92d295f0ebJames Dong * 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,
270334de520b0369215b7931fefa424fb92d295f0ebJames Dong    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
275334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
276334de520b0369215b7931fefa424fb92d295f0ebJames Dong * JPEG quantization tables are used to determine DCT compression for
277334de520b0369215b7931fefa424fb92d295f0ebJames Dong * YUV data, as an alternative to specifying Q factor, providing exact
278334de520b0369215b7931fefa424fb92d295f0ebJames Dong * control of compression
279334de520b0369215b7931fefa424fb92d295f0ebJames Dong *
280334de520b0369215b7931fefa424fb92d295f0ebJames Dong * STRUCT MEMBERS:
281334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nSize                   : Size of the structure in bytes
282334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nVersion                : OMX specification version information
283334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nPortIndex              : Port that this structure applies to
284334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  eQuantizationTable      : Quantization table type
285334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nQuantizationMatrix[64] : JPEG quantization table of coefficients stored
286334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                            in increasing columns then by rows of data (i.e.
287334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                            row 1, ... row 8). Quantization values are in
288334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                            the range 0-255 and stored in linear order
289334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                            (i.e. the component will zig-zag the
290334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                            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
301334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
302334de520b0369215b7931fefa424fb92d295f0ebJames Dong * Huffman table type, the same Huffman table is applied for chroma and
303334de520b0369215b7931fefa424fb92d295f0ebJames Dong * 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,
312334de520b0369215b7931fefa424fb92d295f0ebJames Dong    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
317334de520b0369215b7931fefa424fb92d295f0ebJames Dong/**
318334de520b0369215b7931fefa424fb92d295f0ebJames Dong * 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
325334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nNumberOfHuffmanCodeOfLength[16] : 0-16, number of Huffman codes of each
326334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                                     possible length
327334de520b0369215b7931fefa424fb92d295f0ebJames Dong *  nHuffmanTable[256]               : 0-255, the size used for AC and DC
328334de520b0369215b7931fefa424fb92d295f0ebJames Dong *                                     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