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