1dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/** 2e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * Copyright (c) 2008 The Khronos Group Inc. 3e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 10e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * to the following conditions: 11dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * The above copyright notice and this permission notice shall be included 12e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * in all copies or substantial portions of the Software. 13e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 20e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */ 22dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand 23e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 24dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * @file OMX_Image.h - OpenMax IL version 1.1.2 25e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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/** 37e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * Each OMX header must include all required header files to allow the 38e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * header to compile without errors. The includes below are required 39e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 50e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 51e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 */ 64e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 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/** 71e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * Data structure used to define an image path. The number of image paths 72e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * for input and output will vary by type of the image component. 73e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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. 79e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 80e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * The PortDefinition structure is used to define all of the parameters 81e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * necessary for the compliant component to setup an input or an output 82e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * image path. If additional vendor specific data is required, it should 83e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * be transmitted to the component using the CustomCommand function. 84e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 89e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * pNativeRender : Platform specific reference for a display if a 90dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * sync, otherwise this field is 0 91e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nFrameWidth : Width of frame to be used on port if 92e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * uncompressed format is used. Use 0 for 93dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * unknown, don't care or variable 94e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nFrameHeight : Height of frame to be used on port if 95e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * uncompressed format is used. Use 0 for 96dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * unknown, don't care or variable 97e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nStride : Number of bytes per span of an image (i.e. 98dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * indicates the number of bytes to get from 99e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 102e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * bFlagErrorConcealment : Turns on error concealment if it is supported by 103dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * the OMX component 104e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * eCompressionFormat : Compression format used in this instance of 105e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * the component. When OMX_IMAGE_CodingUnused is 106dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * specified, eColorFormat is valid 107dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * eColorFormat : Decompressed format used by this component 108e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * pNativeWindow : Platform specific reference for a window object if a 109e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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; 114e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nFrameWidth; 115dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_U32 nFrameHeight; 116e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 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 125e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 126e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * Port format parameter. This structure is used to enumerate the various 127dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * data input/output format supported by the port. 128e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 133e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nIndex : Indicates the enumeration index for the format from 134dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * 0x0 to N-1 135e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * eCompressionFormat : Compression format used in this instance of the 136e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 150e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 151e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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, 163e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 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 169e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 170e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 186e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 187e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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, 194e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 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 199e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 200e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 201e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 208e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 222e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 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 226e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * tables for chroma and luma 227dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * 228dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * STRUCT MEMBERS: 229e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nSize : Size of the structure in bytes 230e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nVersion : OMX specification version information 231e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nPortIndex : Port that this structure applies to 232e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nQFactor : JPEG Q factor value in the range of 1-100. A factor of 1 233e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * produces the smallest, worst quality images, and a factor 234e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * of 100 produces the largest, best quality images. A 235e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * typical default is 75 for small good quality images 236dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */ 237dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct OMX_IMAGE_PARAM_QFACTORTYPE { 238e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nSize; 239e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_VERSIONTYPE nVersion; 240e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nPortIndex; 241e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin OMX_U32 nQFactor; 242dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} OMX_IMAGE_PARAM_QFACTORTYPE; 243dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand 244e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 245e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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, 253e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 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 258e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 259dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * JPEG quantization tables are used to determine DCT compression for 260e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * YUV data, as an alternative to specifying Q factor, providing exact 261e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * control of compression 262dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * 263dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * STRUCT MEMBERS: 264dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * nSize : Size of the structure in bytes 265e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nVersion : OMX specification version information 266dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * nPortIndex : Port that this structure applies to 267dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * eQuantizationTable : Quantization table type 268e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nQuantizationMatrix[64] : JPEG quantization table of coefficients stored 269e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * in increasing columns then by rows of data (i.e. 270e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * row 1, ... row 8). Quantization values are in 271dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * the range 0-255 and stored in linear order 272e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * (i.e. the component will zig-zag the 273e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 284e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 285e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * Huffman table type, the same Huffman table is applied for chroma and 286e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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, 295e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin 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 300e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin/** 301e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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 308e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nNumberOfHuffmanCodeOfLength[16] : 0-16, number of Huffman codes of each 309dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * possible length 310e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * nHuffmanTable[256] : 0-255, the size used for AC and DC 311e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin * 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