10b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/*Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. 20b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 30b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamRedistribution and use in source and binary forms, with or without 40b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tammodification, are permitted provided that the following conditions are 50b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tammet: 60b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam * Redistributions of source code must retain the above copyright 70b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam notice, this list of conditions and the following disclaimer. 80b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam * Redistributions in binary form must reproduce the above 90b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam copyright notice, this list of conditions and the following 100b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam disclaimer in the documentation and/or other materials provided 110b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam with the distribution. 120b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam * Neither the name of The Linux Foundation nor the names of its 130b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam contributors may be used to endorse or promote products derived 140b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam from this software without specific prior written permission. 150b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 160b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamTHIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 170b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 180b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 190b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 200b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamBE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 210b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 220b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 230b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 240b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 250b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 260b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd TamIF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/ 270b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 280b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#ifndef __QOMX_EXTENSIONS_H__ 290b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#define __QOMX_EXTENSIONS_H__ 300b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 310b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#ifdef __cplusplus 320b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamextern "C" { 330b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#endif 340b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 350b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#include <OMX_Image.h> 360b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#include <qexif.h> 370b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 380b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** qomx_image_eventd 390b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* Qcom specific events extended from OMX_EVENT 400b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @ OMX_EVENT_THUMBNAIL_DROPPED - Indicates that the thumbnail 410b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* size id too big to be included 420b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* in the exif and will be 430b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* dropped 440b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 450b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef enum { 460b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_EVENT_THUMBNAIL_DROPPED = OMX_EventVendorStartUnused+1 470b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_IMAGE_EXT_EVENTS; 480b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 490b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** 500b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* The following macros defines the string to be used for 510b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* getting the extension indices. 520b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 530b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#define QOMX_IMAGE_EXT_EXIF_NAME "OMX.QCOM.image.exttype.exif" 540b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#define QOMX_IMAGE_EXT_THUMBNAIL_NAME "OMX.QCOM.image.exttype.thumbnail" 550b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#define QOMX_IMAGE_EXT_BUFFER_OFFSET_NAME "OMX.QCOM.image.exttype.bufferOffset" 560b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#define QOMX_IMAGE_EXT_MOBICAT_NAME "OMX.QCOM.image.exttype.mobicat" 570b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#define QOMX_IMAGE_EXT_ENCODING_MODE_NAME "OMX.QCOM.image.encoding.mode" 580b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#define QOMX_IMAGE_EXT_WORK_BUFFER_NAME "OMX.QCOM.image.exttype.workbuffer" 590b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#define QOMX_IMAGE_EXT_METADATA_NAME "OMX.QCOM.image.exttype.metadata" 600b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#define QOMX_IMAGE_EXT_META_ENC_KEY_NAME "OMX.QCOM.image.exttype.metaEncKey" 610b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#define QOMX_IMAGE_EXT_MEM_OPS_NAME "OMX.QCOM.image.exttype.mem_ops" 620b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#define QOMX_IMAGE_EXT_JPEG_SPEED_NAME "OMX.QCOM.image.exttype.jpeg.speed" 630b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 640b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** QOMX_IMAGE_EXT_INDEXTYPE 650b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* This enum is an extension of the OMX_INDEXTYPE enum and 660b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* specifies Qcom supported extention indexes. These indexes are 670b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* associated with the extension names and can be used as 680b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* Indexes in the SetParameter and Getparameter functins to set 690b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* or get values from qcom specific data structures 700b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 710b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef enum { 720b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam //Name: OMX.QCOM.image.exttype.exif 730b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_IMAGE_EXT_EXIF = 0x07F00000, 740b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 750b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam //Name: OMX.QCOM.image.exttype.thumbnail 760b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_IMAGE_EXT_THUMBNAIL = 0x07F00001, 770b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 780b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam //Name: OMX.QCOM.image.exttype.bufferOffset 790b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_IMAGE_EXT_BUFFER_OFFSET = 0x07F00002, 800b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 810b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam //Name: OMX.QCOM.image.exttype.mobicat 820b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_IMAGE_EXT_MOBICAT = 0x07F00003, 830b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 840b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam //Name: OMX.QCOM.image.encoding.approach 850b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_IMAGE_EXT_ENCODING_MODE = 0x07F00004, 860b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 870b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam //Name: OMX.QCOM.image.exttype.workbuffer 880b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_IMAGE_EXT_WORK_BUFFER = 0x07F00005, 890b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 900b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam //Name: OMX.QCOM.image.exttype.metadata 910b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_IMAGE_EXT_METADATA = 0x07F00008, 920b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 930b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam //Name: OMX.QCOM.image.exttype.metaEncKey 940b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_IMAGE_EXT_META_ENC_KEY = 0x07F00009, 950b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 960b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam //Name: OMX.QCOM.image.exttype.memOps 970b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_IMAGE_EXT_MEM_OPS = 0x07F0000A, 980b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 990b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam //Name: OMX.QCOM.image.exttype.jpeg.speed 1000b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_IMAGE_EXT_JPEG_SPEED = 0x07F000B, 1010b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 1020b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_IMAGE_EXT_INDEXTYPE; 1030b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 1040b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** QOMX_BUFFER_INFO 1050b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* The structure specifies informaton 1060b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* associated with the buffers and should be passed as appData 1070b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* in UseBuffer calls to the OMX component with buffer specific 1080b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* data. @ fd - FD of the buffer allocated. If the buffer is 1090b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* allocated on the heap, it can be zero. 1100b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @offset - Buffer offset 1110b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 1120b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 1130b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 1140b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 fd; 1150b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 offset; 1160b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_BUFFER_INFO; 1170b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 1180b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** QEXIF_INFO_DATA 1190b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* The basic exif structure used to construct 1200b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* information for a single exif tag. 1210b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @tag_entry 1220b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @tag_id 1230b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 1240b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct{ 1250b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam exif_tag_entry_t tag_entry; 1260b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam exif_tag_id_t tag_id; 1270b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QEXIF_INFO_DATA; 1280b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 1290b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** QEXTN_DATA 1300b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* The structure used to carry addtional payload 1310b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* meant to be in EXIF Appx marker fields. 1320b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @sw_3a_version 1330b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 1340b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 1350b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam uint16_t sw_3a_version[4]; 1360b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QEXTN_DATA; 1370b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 1380b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/**QOMX_EXIF_INFO 1390b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* The structure contains an array of exif tag 1400b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* structures(qexif_info_data) and should be passed to the OMX 1410b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* layer by the OMX client using the extension index. 1420b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @exif_data - Array of exif tags 1430b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @numOfEntries - Number of exif tags entries being passed in 1440b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* the array 1450b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @debug_data - specific debug information for internal use 1460b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 1470b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 1480b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QEXIF_INFO_DATA *exif_data; 1490b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 numOfEntries; 1500b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QEXTN_DATA debug_data; 1510b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_EXIF_INFO; 1520b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 1530b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/**QOMX_YUV_FRAME_INFO 1540b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* The structre contains all the offsets 1550b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* associated with the Y and cbcr buffers. 1560b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @yOffset - Offset within the Y buffer 1570b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @cbcrOffset - Offset within the cb/cr buffer. The array 1580b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* should be populated in order depending on cb 1590b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* first or cr first in case of planar data. For 1600b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* pseusoplanar, only the first array element 1610b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* needs to be filled and the secnd element should 1620b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* be set to zero. 1630b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @cbcrStartOffset - Start offset of the cb/cr buffer starting 1640b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* starting from the Y buffer. The array 1650b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* should be populated in order depending on 1660b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* cb first or cr first in case of planar 1670b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* data. For pseusoplanar, only the first 1680b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* array element needs to be filled and the 1690b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* secnd element should be set to zero. 1700b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 1710b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 1720b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 yOffset; 1730b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 cbcrOffset[2]; 1740b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 cbcrStartOffset[2]; 1750b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_YUV_FRAME_INFO; 1760b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 1770b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** qomx_thumbnail_info 1780b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* Includes all information associated with the thumbnail 1790b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @input_width - Width of the input thumbnail buffer 1800b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @input_height - Heighr of the input thumbnail buffer 1810b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @scaling_enabled - Flag indicating if thumbnail scaling is 1820b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* enabled. 1830b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @quality - JPEG Q factor value in the range of 1-100. A factor of 1 1840b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam * produces the smallest, worst quality images, and a factor 1850b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam * of 100 produces the largest, best quality images. A 1860b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam * typical default is 75 for small good quality images. 1870b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @crop_info - Includes the crop width, crop height, 1880b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* horizontal and vertical offsets. 1890b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @output_width - Output Width of the the thumbnail. This is 1900b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* the width after scaling if scaling is enabled 1910b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* or width after cropping if only cropping is 1920b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* enabled or same same input width otherwise 1930b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @output_height - Output height of the thumbnail. This is 1940b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* the height after scaling if scaling is enabled 1950b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* or height after cropping if only cropping is 1960b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* enabled or same same input height otherwise 1970b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 1980b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 1990b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 input_width; 2000b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 input_height; 2010b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U8 scaling_enabled; 2020b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 quality; 2030b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_CONFIG_RECTTYPE crop_info; 2040b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 output_width; 2050b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 output_height; 2060b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_YUV_FRAME_INFO tmbOffset; 2070b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 rotation; 2080b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_THUMBNAIL_INFO; 2090b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 2100b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/**qomx_mobicat 2110b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* Mobicat data to padded tot he OMX layer 2120b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @mobicatData - Mobicate data 2130b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @mobicatDataLength - length of the mobicat data 2140b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 2150b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 2160b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U8 *mobicatData; 2170b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 mobicatDataLength; 2180b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_MOBICAT; 2190b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 2200b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/**qomx_workbuffer 2210b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* Ion buffer to be used for the H/W encoder 2220b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @fd - FD of the buffer allocated 2230b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @vaddr - Buffer address 2240b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 2250b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 2260b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam int fd; 2270b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam uint8_t *vaddr; 2280b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam uint32_t length; 2290b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_WORK_BUFFER; 2300b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 2310b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/**QOMX_METADATA 2320b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam * 2330b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam * meta data to be set in EXIF 2340b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam */ 2350b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 2360b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U8 *metadata; 2370b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 metaPayloadSize; 2380b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U8 mobicat_mask; 2390b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_METADATA; 2400b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 2410b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/**QOMX_META_ENC_KEY 2420b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam * 2430b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam * meta data encryption key 2440b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam */ 2450b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 2460b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U8 *metaKey; 2470b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_U32 keyLen; 2480b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_META_ENC_KEY; 2490b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 2500b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** QOMX_IMG_COLOR_FORMATTYPE 2510b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* This enum is an extension of the OMX_COLOR_FORMATTYPE enum. 2520b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* It specifies Qcom supported color formats. 2530b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 2540b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef enum QOMX_IMG_COLOR_FORMATTYPE { 2550b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYVU420SemiPlanar = OMX_COLOR_FormatVendorStartUnused + 0x300, 2560b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYVU422SemiPlanar, 2570b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYVU422SemiPlanar_h1v2, 2580b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYUV422SemiPlanar_h1v2, 2590b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYVU444SemiPlanar, 2600b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYUV444SemiPlanar, 2610b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYVU420Planar, 2620b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYVU422Planar, 2630b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYVU422Planar_h1v2, 2640b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYUV422Planar_h1v2, 2650b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYVU444Planar, 2660b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_QCOM_IMG_COLOR_FormatYUV444Planar 2670b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_IMG_COLOR_FORMATTYPE; 2680b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 2690b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** QOMX_ENCODING_MODE 2700b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* This enum is used to select parallel encoding 2710b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* or sequential encoding for the thumbnail and 2720b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* main image 2730b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 2740b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef enum { 2750b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_Serial_Encoding, 2760b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam OMX_Parallel_Encoding 2770b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_ENCODING_MODE; 2780b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 2790b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 2800b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/**omx_jpeg_ouput_buf_t 2810b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* Structure describing jpeg output buffer 2820b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @handle - Handle to the containing class 2830b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @mem_hdl - Handle to camera memory struct 2840b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @vaddr - Buffer address 2850b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @size - Buffer size 2860b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @fd - file descriptor 2870b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 2880b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 2890b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam void *handle; 2900b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam void *mem_hdl; 2910b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam int8_t isheap; 2920b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam size_t size; /*input*/ 2930b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam void *vaddr; 2940b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam int fd; 2950b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} omx_jpeg_ouput_buf_t; 2960b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 2970b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** QOMX_MEM_OPS 2980b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* Structure holding the function pointers to 2990b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* buffer memory operations 3000b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @get_memory - function to allocate buffer memory 3010b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 3020b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 3030b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam int (*get_memory)( omx_jpeg_ouput_buf_t *p_out_buf); 3040b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_MEM_OPS; 3050b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 3060b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** QOMX_JPEG_SPEED_MODE 3070b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* Enum specifying the values for the jpeg 3080b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* speed mode setting 3090b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 3100b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef enum { 3110b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_JPEG_SPEED_MODE_NORMAL, 3120b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_JPEG_SPEED_MODE_HIGH 3130b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_JPEG_SPEED_MODE; 3140b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 3150b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam/** QOMX_JPEG_SPEED 3160b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* Structure used to set the jpeg speed mode 3170b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* parameter 3180b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam* @speedMode - jpeg speed mode 3190b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam**/ 3200b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tamtypedef struct { 3210b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam QOMX_JPEG_SPEED_MODE speedMode; 3220b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam} QOMX_JPEG_SPEED; 3230b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 3240b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#ifdef __cplusplus 3250b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam } 3260b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#endif 3270b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam 3280b22217da5945fcfef82ce2c0e0ccb2de2fb63ecEd Tam#endif 329