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