1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright (c) 2008 The Khronos Group Inc.
3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Permission is hereby granted, free of charge, to any person obtaining
5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * a copy of this software and associated documentation files (the
6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * "Software"), to deal in the Software without restriction, including
7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * without limitation the rights to use, copy, modify, merge, publish,
8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * distribute, sublicense, and/or sell copies of the Software, and to
9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * permit persons to whom the Software is furnished to do so, subject
10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * to the following conditions:
11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The above copyright notice and this permission notice shall be included
12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * in all copies or substantial portions of the Software.
13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @file OMX_Image.h - OpenMax IL version 1.1.2
25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The structures needed by Image components to exchange parameters and
26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * configuration data with the components.
27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_Image_h
29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_Image_h
30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __cplusplus
32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinextern "C" {
33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif /* __cplusplus */
34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Each OMX header must include all required header files to allow the
38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * header to compile without errors.  The includes below are required
39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * for this header file to compile successfully
40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_IVCommon.h>
43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @defgroup imaging OpenMAX IL Imaging Domain
45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @ingroup iv
46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Structures for OpenMAX IL Imaging domain
47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @{
48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Enumeration used to define the possible image compression coding.
52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_IMAGE_CODINGTYPE {
54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingUnused,      /**< Value when format is N/A */
55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingAutoDetect,  /**< Auto detection of image format */
56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingJPEG,        /**< JPEG/JFIF image format */
57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingJPEG2K,      /**< JPEG 2000 image format */
58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingEXIF,        /**< EXIF image format */
59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingTIFF,        /**< TIFF image format */
60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingGIF,         /**< Graphics image format */
61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingPNG,         /**< PNG image format */
62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingLZW,         /**< LZW image format */
63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingBMP,         /**< Windows Bitmap format */
64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CodingMax = 0x7FFFFFFF
67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_IMAGE_CODINGTYPE;
68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Data structure used to define an image path. The number of image paths
72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * for input and output will vary by type of the image component.
73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  Input (aka Source) : Zero Inputs, one Output,
75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  Splitter           : One Input, 2 or more Outputs,
76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  Processing Element : One Input, one output,
77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  Mixer              : 2 or more inputs, one output,
78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  Output (aka Sink)  : One Input, zero outputs.
79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * The PortDefinition structure is used to define all of the parameters
81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * necessary for the compliant component to setup an input or an output
82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * image path.  If additional vendor specific data is required, it should
83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * be transmitted to the component using the CustomCommand function.
84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Compliant components will prepopulate this structure with optimal
85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * values during the OMX_GetParameter() command.
86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * STRUCT MEMBERS:
88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  cMIMEType             : MIME type of data for the port
89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  pNativeRender         : Platform specific reference for a display if a
90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          sync, otherwise this field is 0
91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nFrameWidth           : Width of frame to be used on port if
92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          uncompressed format is used.  Use 0 for
93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          unknown, don't care or variable
94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nFrameHeight          : Height of frame to be used on port if
95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          uncompressed format is used. Use 0 for
96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          unknown, don't care or variable
97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nStride               : Number of bytes per span of an image (i.e.
98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          indicates the number of bytes to get from
99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          span N to span N+1, where negative stride
100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          indicates the image is bottom up
101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nSliceHeight          : Height used when encoding in slices
102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  bFlagErrorConcealment : Turns on error concealment if it is supported by
103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          the OMX component
104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  eCompressionFormat    : Compression format used in this instance of
105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          the component. When OMX_IMAGE_CodingUnused is
106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          specified, eColorFormat is valid
107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  eColorFormat          : Decompressed format used by this component
108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  pNativeWindow         : Platform specific reference for a window object if a
109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                          display sink , otherwise this field is 0x0.
110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_IMAGE_PORTDEFINITIONTYPE {
112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_STRING cMIMEType;
113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_NATIVE_DEVICETYPE pNativeRender;
114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nFrameWidth;
115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nFrameHeight;
116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_S32 nStride;
117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nSliceHeight;
118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bFlagErrorConcealment;
119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CODINGTYPE eCompressionFormat;
120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COLOR_FORMATTYPE eColorFormat;
121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_NATIVE_WINDOWTYPE pNativeWindow;
122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_IMAGE_PORTDEFINITIONTYPE;
123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Port format parameter.  This structure is used to enumerate the various
127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * data input/output format supported by the port.
128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * STRUCT MEMBERS:
130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nSize              : Size of the structure in bytes
131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nVersion           : OMX specification version information
132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nPortIndex         : Indicates which port to set
133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nIndex             : Indicates the enumeration index for the format from
134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                       0x0 to N-1
135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  eCompressionFormat : Compression format used in this instance of the
136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                       component. When OMX_IMAGE_CodingUnused is specified,
137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                       eColorFormat is valid
138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  eColorFormat       : Decompressed format used by this component
139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_IMAGE_PARAM_PORTFORMATTYPE {
141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nSize;
142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE nVersion;
143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nPortIndex;
144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nIndex;
145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_CODINGTYPE eCompressionFormat;
146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COLOR_FORMATTYPE eColorFormat;
147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_IMAGE_PARAM_PORTFORMATTYPE;
148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Flash control type
152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * ENUMS
154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  Torch : Flash forced constantly on
155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_IMAGE_FLASHCONTROLTYPE {
157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FlashControlOn = 0,
158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FlashControlOff,
159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FlashControlAuto,
160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FlashControlRedEyeReduction,
161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FlashControlFillin,
162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FlashControlTorch,
163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FlashControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FlashControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FlashControlMax = 0x7FFFFFFF
166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_IMAGE_FLASHCONTROLTYPE;
167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Flash control configuration
171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * STRUCT MEMBERS:
173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nSize         : Size of the structure in bytes
174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nVersion      : OMX specification version information
175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nPortIndex    : Port that this structure applies to
176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  eFlashControl : Flash control type
177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_IMAGE_PARAM_FLASHCONTROLTYPE {
179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nSize;
180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE nVersion;
181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nPortIndex;
182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FLASHCONTROLTYPE eFlashControl;
183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_IMAGE_PARAM_FLASHCONTROLTYPE;
184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Focus control type
188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_IMAGE_FOCUSCONTROLTYPE {
190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FocusControlOn = 0,
191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FocusControlOff,
192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FocusControlAuto,
193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FocusControlAutoLock,
194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FocusControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FocusControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FocusControlMax = 0x7FFFFFFF
197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_IMAGE_FOCUSCONTROLTYPE;
198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Focus control configuration
202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * STRUCT MEMBERS:
204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nSize           : Size of the structure in bytes
205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nVersion        : OMX specification version information
206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nPortIndex      : Port that this structure applies to
207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  eFocusControl   : Focus control
208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nFocusSteps     : Focus can take on values from 0 mm to infinity.
209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                    Interest is only in number of steps over this range.
210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nFocusStepIndex : Current focus step index
211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE {
213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nSize;
214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE nVersion;
215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nPortIndex;
216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_FOCUSCONTROLTYPE eFocusControl;
217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nFocusSteps;
218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nFocusStepIndex;
219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE;
220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Q Factor for JPEG compression, which controls the tradeoff between image
224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * quality and size.  Q Factor provides a more simple means of controlling
225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * JPEG compression quality, without directly programming Quantization
226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * tables for chroma and luma
227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * STRUCT MEMBERS:
229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nSize      : Size of the structure in bytes
230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nVersion   : OMX specification version information
231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nPortIndex : Port that this structure applies to
232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nQFactor   : JPEG Q factor value in the range of 1-100. A factor of 1
233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *               produces the smallest, worst quality images, and a factor
234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *               of 100 produces the largest, best quality images.  A
235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *               typical default is 75 for small good quality images
236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_IMAGE_PARAM_QFACTORTYPE {
238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nSize;
239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE nVersion;
240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nPortIndex;
241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nQFactor;
242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_IMAGE_PARAM_QFACTORTYPE;
243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Quantization table type
246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_IMAGE_QUANTIZATIONTABLETYPE {
249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_QuantizationTableLuma = 0,
250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_QuantizationTableChroma,
251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_QuantizationTableChromaCb,
252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_QuantizationTableChromaCr,
253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_QuantizationTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_QuantizationTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_QuantizationTableMax = 0x7FFFFFFF
256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_IMAGE_QUANTIZATIONTABLETYPE;
257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * JPEG quantization tables are used to determine DCT compression for
260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * YUV data, as an alternative to specifying Q factor, providing exact
261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * control of compression
262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * STRUCT MEMBERS:
264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nSize                   : Size of the structure in bytes
265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nVersion                : OMX specification version information
266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nPortIndex              : Port that this structure applies to
267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  eQuantizationTable      : Quantization table type
268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nQuantizationMatrix[64] : JPEG quantization table of coefficients stored
269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                            in increasing columns then by rows of data (i.e.
270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                            row 1, ... row 8). Quantization values are in
271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                            the range 0-255 and stored in linear order
272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                            (i.e. the component will zig-zag the
273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                            quantization table data if required internally)
274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE {
276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nSize;
277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE nVersion;
278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nPortIndex;
279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_QUANTIZATIONTABLETYPE eQuantizationTable;
280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 nQuantizationMatrix[64];
281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE;
282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Huffman table type, the same Huffman table is applied for chroma and
286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * luma component
287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_IMAGE_HUFFMANTABLETYPE {
289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_HuffmanTableAC = 0,
290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_HuffmanTableDC,
291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_HuffmanTableACLuma,
292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_HuffmanTableACChroma,
293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_HuffmanTableDCLuma,
294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_HuffmanTableDCChroma,
295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_HuffmanTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_HuffmanTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_HuffmanTableMax = 0x7FFFFFFF
298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_IMAGE_HUFFMANTABLETYPE;
299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * JPEG Huffman table
302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * STRUCT MEMBERS:
304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nSize                            : Size of the structure in bytes
305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nVersion                         : OMX specification version information
306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nPortIndex                       : Port that this structure applies to
307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  eHuffmanTable                    : Huffman table type
308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nNumberOfHuffmanCodeOfLength[16] : 0-16, number of Huffman codes of each
309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                                     possible length
310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *  nHuffmanTable[256]               : 0-255, the size used for AC and DC
311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *                                     HuffmanTable are 16 and 162
312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_IMAGE_PARAM_HUFFMANTTABLETYPE {
314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nSize;
315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE nVersion;
316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nPortIndex;
317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_HUFFMANTABLETYPE eHuffmanTable;
318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 nNumberOfHuffmanCodeOfLength[16];
319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 nHuffmanTable[256];
320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}OMX_IMAGE_PARAM_HUFFMANTTABLETYPE;
321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** @} */
323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __cplusplus
324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif /* __cplusplus */
326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* File EOF */
329