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