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