166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Redistribution and use in source and binary forms, with or without
466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * modification, are permitted provided that the following conditions are
566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * met:
666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *     * Redistributions of source code must retain the above copyright
766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       notice, this list of conditions and the following disclaimer.
866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *     * Redistributions in binary form must reproduce the above
966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       copyright notice, this list of conditions and the following
1066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       disclaimer in the documentation and/or other materials provided
1166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       with the distribution.
1266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *     * Neither the name of The Linux Foundation nor the names of its
1366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       contributors may be used to endorse or promote products derived
1466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *       from this software without specific prior written permission.
1566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
1666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
1766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
1966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
2066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
2366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
2566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
2666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *
2866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin */
2966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
3066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#ifndef __QCAMERA_TYPES_H__
3166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define __QCAMERA_TYPES_H__
3266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
3366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin// System dependencies
3466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include <stdint.h>
3566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#include <media/msmb_camera.h>
3666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
3766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_MAX_NUM_BUFS_PER_STREAM 64
3866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_METADATA_PRIVATE_PAYLOAD_SIZE_IN_BYTES 8096
3966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define AWB_DEBUG_DATA_SIZE               (45000)
4066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define AEC_DEBUG_DATA_SIZE               (5000)
4166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define AF_DEBUG_DATA_SIZE                (10000)
4266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define AF_STATS_DEBUG_DATA_SIZE          (40000)
4366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define ASD_DEBUG_DATA_SIZE               (100)
4466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define STATS_BUFFER_DEBUG_DATA_SIZE      (75000)
4566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
4666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CEILING64(X) (((X) + 0x0003F) & 0xFFFFFFC0)
4766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CEILING32(X) (((X) + 0x0001F) & 0xFFFFFFE0)
4866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CEILING16(X) (((X) + 0x000F) & 0xFFF0)
4966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CEILING4(X)  (((X) + 0x0003) & 0xFFFC)
5066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CEILING2(X)  (((X) + 0x0001) & 0xFFFE)
5166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
5266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_ZOOMS_CNT 91
5366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_SIZES_CNT 40
5466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_EXP_BRACKETING_LENGTH 32
5566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_ROI 10
5666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_STREAM_NUM_IN_BUNDLE 8
5766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_NUM_STREAMS          8
5866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CHROMATIX_SIZE 60000
5966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define COMMONCHROMATIX_SIZE 45000
6066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CPPCHROMATIX_SIZE 36000
6166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define SWPOSTPROCCHROMATIX_SIZE 36000
6266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define AFTUNE_SIZE  32768
6366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define A3CHROMATIX_SIZE 30000
6466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_SCALE_SIZES_CNT 8
6566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_SAMP_DECISION_CNT     64
6666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define SENSOR_PHYSICAL_SIZE_CNT  2
6766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define EXPOSURE_TIME_RANGE_CNT   2
6866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define BLACK_LEVEL_PATTERN_CNT   4
6966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define FORWARD_MATRIX_COLS       3
7066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define FORWARD_MATRIX_ROWS       3
7166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define COLOR_TRANSFORM_COLS      3
7266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define COLOR_TRANSFORM_ROWS      3
7366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAL_TRANSFORM_COLS        3
7466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAL_TRANSFORM_ROWS        3
7566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
7666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_ISP_DATA_SIZE (20*1024)
7766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_PP_DATA_SIZE  16384
7866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_AE_STATS_DATA_SIZE  1000
7966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_AWB_STATS_DATA_SIZE 1000
8066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_AF_STATS_DATA_SIZE  1000
8166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_ASD_STATS_DATA_SIZE 1000
8266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
8366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_CAPTURE_BATCH_NUM 32
8466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
85d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch#define TUNING_DATA_VERSION        6
8666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define TUNING_SENSOR_DATA_MAX     0x10000 /*(need value from sensor team)*/
8766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define TUNING_VFE_DATA_MAX        0x10000 /*(need value from vfe team)*/
8866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define TUNING_CPP_DATA_MAX        0x10000 /*(need value from pproc team)*/
8966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define TUNING_CAC_DATA_MAX        0x10000 /*(need value from imglib team)*/
9066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define TUNING_DATA_MAX            (TUNING_SENSOR_DATA_MAX + \
9166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                   TUNING_VFE_DATA_MAX + TUNING_CPP_DATA_MAX + \
9266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                   TUNING_CAC_DATA_MAX)
9366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
9466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define TUNING_SENSOR_DATA_OFFSET  0
9566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define TUNING_VFE_DATA_OFFSET     TUNING_SENSOR_DATA_MAX
9666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define TUNING_CPP_DATA_OFFSET     (TUNING_SENSOR_DATA_MAX + TUNING_VFE_DATA_MAX)
9766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define TUNING_CAC_DATA_OFFSET     (TUNING_SENSOR_DATA_MAX + \
9866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                   TUNING_VFE_DATA_MAX + TUNING_CPP_DATA_MAX)
9966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_STATS_DATA_SIZE 4000
10066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
10166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_AF_BRACKETING_VALUES 5
10266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_TEST_PATTERN_CNT     8
10366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
10466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define GPS_PROCESSING_METHOD_SIZE 33
10566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define EXIF_IMAGE_DESCRIPTION_SIZE 100
10666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
10766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_INFLIGHT_REQUESTS  6
10866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_INFLIGHT_BLOB      3
10966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MIN_INFLIGHT_REQUESTS  3
11066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_INFLIGHT_REPROCESS_REQUESTS 1
11166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_INFLIGHT_HFR_REQUESTS (48)
11266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MIN_INFLIGHT_HFR_REQUESTS (40)
11366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
11466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define QCAMERA_DUMP_FRM_LOCATION "/data/misc/camera/"
11566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define QCAMERA_MAX_FILEPATH_LENGTH 64
11666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
11766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define LIKELY(x)       __builtin_expect((x), true)
11866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define UNLIKELY(x)     __builtin_expect((x), false)
11966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
12066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define RELCAM_CALIB_ROT_MATRIX_MAX 9
12166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define RELCAM_CALIB_SURFACE_PARMS_MAX 32
12266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define RELCAM_CALIB_RESERVED_MAX 62
12366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
12466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_NUM_CAMERA_PER_BUNDLE    2 /* Max number of cameras per bundle */
12566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define EXTRA_FRAME_SYNC_BUFFERS     4 /* Extra frame sync buffers in dc mode*/
12666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MM_CAMERA_FRAME_SYNC_NODES   EXTRA_FRAME_SYNC_BUFFERS
12766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
12866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_REPROCESS_STALL 2
12966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
13066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define QCAMERA_MAX_FILEPATH_LENGTH 64
13166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
13266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_EEPROM_VERSION_INFO_LEN 32
13366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
13466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_OPTICAL_BLACK_REGIONS 5
13566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
13666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*reprocess pipeline stages are pproc and jpeg */
13766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define MAX_REPROCESS_PIPELINE_STAGES 2
13866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
1391687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan/* Defines the number of rows in the color correction matrix (CCM) */
1401687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan#define AWB_NUM_CCM_ROWS (3)
1411687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan
1421687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan/* Defines the number of columns in the color correction matrix (CCM) */
1431687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan#define AWB_NUM_CCM_COLS (3)
1441687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan
14566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
14666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HAL_V1 = 1,
14766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HAL_V3 = 3
14866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_hal_version_t;
14966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
15066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
15166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STATUS_SUCCESS,       /* Operation Succeded */
15266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STATUS_FAILED,        /* Failure in doing operation */
15366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STATUS_INVALID_PARM,  /* Inavlid parameter provided */
15466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STATUS_NOT_SUPPORTED, /* Parameter/operation not supported */
15566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STATUS_ACCEPTED,      /* Parameter accepted */
15666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STATUS_MAX,
15766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_status_t;
15866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
15966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
16066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* back main camera */
16166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_POSITION_BACK,
16266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* front main camera */
16366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_POSITION_FRONT,
16466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* back aux camera */
16566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_POSITION_BACK_AUX,
16666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* front aux camera */
16766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_POSITION_FRONT_AUX
16866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_position_t;
16966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
17066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
17166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLICKER_NONE,
17266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLICKER_50_HZ,
17366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLICKER_60_HZ
17466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_flicker_t;
17566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
17666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
17766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_JPEG = 0,
17866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_420_NV12 = 1,
17966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_420_NV21,
18066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_420_NV21_ADRENO,
18166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_420_YV12,
18266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_422_NV16,
18366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_422_NV61,
18466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_420_NV12_VENUS,
18566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Note: For all raw formats, each scanline needs to be 16 bytes aligned */
18666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
18766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Packed YUV/YVU raw format, 16 bpp: 8 bits Y and 8 bits UV.
18866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * U and V are interleaved with Y: YUYV or YVYV */
18966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_RAW_8BIT_YUYV,
19066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_RAW_8BIT_YVYU,
1911687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    CAM_FORMAT_YUV_RAW_8BIT_UYVY, //10
19266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_RAW_8BIT_VYUY,
19366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
19466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* QCOM RAW formats where data is packed into 64bit word.
19566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * 8BPP: 1 64-bit word contains 8 pixels p0 - p7, where p0 is
19666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *       stored at LSB.
19766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * 10BPP: 1 64-bit word contains 6 pixels p0 - p5, where most
19866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *       significant 4 bits are set to 0. P0 is stored at LSB.
19966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * 12BPP: 1 64-bit word contains 5 pixels p0 - p4, where most
20066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *       significant 4 bits are set to 0. P0 is stored at LSB. */
20166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_8BPP_GBRG,
20266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_8BPP_GRBG,
20366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_8BPP_RGGB,
20466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_8BPP_BGGR,
20566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_10BPP_GBRG,
20666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_10BPP_GRBG,
20766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_10BPP_RGGB,
20866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_10BPP_BGGR,
2091687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    CAM_FORMAT_BAYER_QCOM_RAW_12BPP_GBRG,  //20
21066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_12BPP_GRBG,
21166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_12BPP_RGGB,
21266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_12BPP_BGGR,
21366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* MIPI RAW formats based on MIPI CSI-2 specifiction.
21466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * 8BPP: Each pixel occupies one bytes, starting at LSB.
21566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *       Output with of image has no restrictons.
21666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * 10BPP: Four pixels are held in every 5 bytes. The output
21766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *       with of image must be a multiple of 4 pixels.
21866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * 12BPP: Two pixels are held in every 3 bytes. The output
21966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *       width of image must be a multiple of 2 pixels. */
22066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_8BPP_GBRG,
22166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_8BPP_GRBG,
22266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_8BPP_RGGB,
22366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_8BPP_BGGR,
22466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_10BPP_GBRG,
22566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_10BPP_GRBG,
2261687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    CAM_FORMAT_BAYER_MIPI_RAW_10BPP_RGGB, //30
22766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_10BPP_BGGR,
22866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_12BPP_GBRG,
22966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_12BPP_GRBG,
23066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_12BPP_RGGB,
23166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_12BPP_BGGR,
23266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Ideal raw formats where image data has gone through black
23366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * correction, lens rolloff, demux/channel gain, bad pixel
23466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * correction, and ABF.
23566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * Ideal raw formats could output any of QCOM_RAW and MIPI_RAW
23666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * formats, plus plain8 8bbp, plain16 800, plain16 10bpp, and
23766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * plain 16 12bpp */
23866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_8BPP_GBRG,
23966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_8BPP_GRBG,
24066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_8BPP_RGGB,
24166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_8BPP_BGGR,
2421687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_10BPP_GBRG, //40
24366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_10BPP_GRBG,
24466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_10BPP_RGGB,
24566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_10BPP_BGGR,
24666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_12BPP_GBRG,
24766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_12BPP_GRBG,
24866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_12BPP_RGGB,
24966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_12BPP_BGGR,
25066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_8BPP_GBRG,
25166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_8BPP_GRBG,
2521687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_8BPP_RGGB, //50
25366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_8BPP_BGGR,
25466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_10BPP_GBRG,
25566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_10BPP_GRBG,
25666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_10BPP_RGGB,
25766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_10BPP_BGGR,
25866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_12BPP_GBRG,
25966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_12BPP_GRBG,
26066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_12BPP_RGGB,
26166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_12BPP_BGGR,
2621687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN8_8BPP_GBRG, //60
26366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN8_8BPP_GRBG,
26466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN8_8BPP_RGGB,
26566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN8_8BPP_BGGR,
26666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_8BPP_GBRG,
26766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_8BPP_GRBG,
26866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_8BPP_RGGB,
26966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_8BPP_BGGR,
27066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_10BPP_GBRG,
27166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_10BPP_GRBG,
2721687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_10BPP_RGGB, //70
27366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_10BPP_BGGR,
27466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_12BPP_GBRG,
27566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_12BPP_GRBG,
27666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_12BPP_RGGB,
27766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_12BPP_BGGR,
27866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
27966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* generic 8-bit raw */
28066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_JPEG_RAW_8BIT,
28166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_META_RAW_8BIT,
28266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
28366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* QCOM RAW formats where data is packed into 64bit word.
28466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * 14BPP: 1 64-bit word contains 4 pixels p0 - p3, where most
28566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *       significant 4 bits are set to 0. P0 is stored at LSB.
28666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     */
28766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_14BPP_GBRG,
28866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_14BPP_GRBG,
2891687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    CAM_FORMAT_BAYER_QCOM_RAW_14BPP_RGGB, //80
29066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_QCOM_RAW_14BPP_BGGR,
29166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* MIPI RAW formats based on MIPI CSI-2 specifiction.
29266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * 14 BPPP: 1st byte: P0 [13:6]
29366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *          2nd byte: P1 [13:6]
29466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *          3rd byte: P2 [13:6]
29566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *          4th byte: P3 [13:6]
29666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *          5th byte: P0 [5:0]
29766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *          7th byte: P1 [5:0]
29866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *          8th byte: P2 [5:0]
29966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *          9th byte: P3 [5:0]
30066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     */
30166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_14BPP_GBRG,
30266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_14BPP_GRBG,
30366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_14BPP_RGGB,
30466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_MIPI_RAW_14BPP_BGGR,
30566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_14BPP_GBRG,
30666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_14BPP_GRBG,
30766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_14BPP_RGGB,
30866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_14BPP_BGGR,
3091687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_14BPP_GBRG, //90
31066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_14BPP_GRBG,
31166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_14BPP_RGGB,
31266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_14BPP_BGGR,
31366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* 14BPP: 1st byte: P0 [8:0]
31466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *        2nd byte: P0 [13:9]
31566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *        3rd byte: P1 [8:0]
31666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     *        4th byte: P1 [13:9]
31766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     */
31866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_14BPP_GBRG,
31966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_14BPP_GRBG,
32066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_14BPP_RGGB,
32166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_BAYER_IDEAL_RAW_PLAIN16_14BPP_BGGR,
32266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
32366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_444_NV24,
32466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_444_NV42,
32566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
326d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    /* Y plane only, used for FD, 8BPP */
3271687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    CAM_FORMAT_Y_ONLY, //100
32866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
32966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* UBWC format */
33066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_420_NV12_UBWC,
33166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
33266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_YUV_420_NV21_VENUS,
33366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
33466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* RGB formats */
33566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_8888_ARGB,
33666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
337d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    /* Y plane only */
338d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_Y_ONLY_10_BPP,
339d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_Y_ONLY_12_BPP,
340d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_Y_ONLY_14_BPP,
341d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_QCOM_RAW_8BPP_GREY,
342d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_QCOM_RAW_10BPP_GREY,
343d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_QCOM_RAW_12BPP_GREY,
344d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_QCOM_RAW_14BPP_GREY,
345d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_MIPI_RAW_8BPP_GREY,
346d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_MIPI_RAW_10BPP_GREY,
347d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_MIPI_RAW_12BPP_GREY,
348d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_MIPI_RAW_14BPP_GREY,
349d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_8BPP_GREY,
350d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_10BPP_GREY,
351d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_12BPP_GREY,
352d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_IDEAL_RAW_QCOM_14BPP_GREY,
353d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_8BPP_GREY,
354d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_10BPP_GREY,
355d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_12BPP_GREY,
356d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FORMAT_BAYER_IDEAL_RAW_MIPI_14BPP_GREY,
357d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch
35866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FORMAT_MAX
35966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_format_t;
36066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
36166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
36266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_DEFAULT,       /* default stream type */
36366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_PREVIEW,       /* preview */
36466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_POSTVIEW,      /* postview */
36566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_SNAPSHOT,      /* snapshot */
36666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_VIDEO,         /* video */
36766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_CALLBACK,      /* app requested callback */
36866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_IMPL_DEFINED, /* opaque format: could be display, video enc, ZSL YUV */
36966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_METADATA,      /* meta data */
37066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_RAW,           /* raw dump from camif */
37166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_OFFLINE_PROC,  /* offline process */
37266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_PARM,         /* mct internal stream */
37366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_ANALYSIS,     /* analysis stream */
37466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_TYPE_MAX,
37566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_stream_type_t;
37666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
37766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
37866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_NONE = 1,
37966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_2 = 2,
38066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_4 = 4,
38166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_WORD = CAM_PAD_TO_4,
38266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_8 = 8,
38366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_16 = 16,
38466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_32 = 32,
38566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_64 = 64,
38666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_128 = 128,
38766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_256 = 256,
38866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_512 = 512,
38966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_1K = 1024,
39066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_2K = 2048,
39166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_4K = 4096,
39266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PAD_TO_8K = 8192
39366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_pad_format_t;
39466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
39566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
39666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* followings are per camera */
39766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_BUF_TYPE_CAPABILITY,  /* mapping camera capability buffer */
39866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_BUF_TYPE_PARM_BUF,    /* mapping parameters buffer */
39966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* this buffer is needed for the payload to be sent with bundling related cameras cmd */
40066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_BUF_TYPE_SYNC_RELATED_SENSORS_BUF, /* mapping sync buffer.*/
40166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
40266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* followings are per stream */
40366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_BUF_TYPE_STREAM_BUF,        /* mapping stream buffers */
40466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_BUF_TYPE_STREAM_INFO,       /* mapping stream information buffer */
40566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_BUF_TYPE_OFFLINE_INPUT_BUF, /* mapping offline process input buffer */
40666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_BUF_TYPE_OFFLINE_META_BUF,  /* mapping offline meta buffer */
40766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_BUF_TYPE_MISC_BUF,          /* mapping offline miscellaneous buffer */
40866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_BUF_TYPE_STREAM_USER_BUF,   /* mapping user ptr stream buffers */
40966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_BUF_TYPE_MAX
41066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_mapping_buf_type;
41166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
41266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
41366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_BUF_TYPE_MPLANE,  /* Multiplanar Buffer type */
41466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_BUF_TYPE_USERPTR, /* User specific structure pointer*/
41566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAM_BUF_TYPE_MAX
41666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_stream_buf_type;
41766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
41866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
41966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_mapping_buf_type type;
42066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t stream_id;   /* stream id: valid if STREAM_BUF */
42166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t frame_idx;   /* frame index: valid if type is STREAM_BUF */
42266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t plane_idx;    /* planner index. valid if type is STREAM_BUF.
42366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                           * -1 means all planners shanre the same fd;
42466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                           * otherwise, each planner has its own fd */
42566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t cookie;      /* could be job_id(uint32_t) to identify mapping job */
42666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t fd;           /* origin fd */
42766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    size_t size;          /* size of the buffer */
42866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_buf_map_type;
42966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
43066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
43166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t length;
43266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_buf_map_type buf_maps[CAM_MAX_NUM_BUFS_PER_STREAM];
43366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_buf_map_type_list;
43466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
43566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
43666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_mapping_buf_type type;
43766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t stream_id;   /* stream id: valid if STREAM_BUF */
43866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t frame_idx;   /* frame index: valid if STREAM_BUF or HIST_BUF */
43966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t plane_idx;    /* planner index. valid if type is STREAM_BUF.
44066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                           * -1 means all planners shanre the same fd;
44166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                           * otherwise, each planner has its own fd */
44266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t cookie;      /* could be job_id(uint32_t) to identify unmapping job */
44366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_buf_unmap_type;
44466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
44566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
44666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t length;
44766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_buf_unmap_type buf_unmaps[CAM_MAX_NUM_BUFS_PER_STREAM];
44866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_buf_unmap_type_list;
44966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
45066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
45166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_TYPE_FD_MAPPING,
45266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_TYPE_FD_UNMAPPING,
45366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_TYPE_FD_BUNDLED_MAPPING,
45466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_TYPE_FD_BUNDLED_UNMAPPING,
45566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MAPPING_TYPE_MAX
45666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_mapping_type;
45766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
45866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
45966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_mapping_type msg_type;
46066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    union {
46166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_buf_map_type buf_map;
46266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_buf_unmap_type buf_unmap;
46366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_buf_map_type_list buf_map_list;
46466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_buf_unmap_type_list buf_unmap_list;
46566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } payload;
46666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_sock_packet_t;
46766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
46866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
46966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MODE_2D = (1<<0),
47066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MODE_3D = (1<<1)
47166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_mode_t;
47266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
47366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
47466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t len;
47566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t y_offset;
47666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t cbcr_offset;
47766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_sp_len_offset_t;
47866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
47966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct{
48066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t len;
48166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t offset;
48266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t offset_x;
48366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t offset_y;
48466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t stride;
48566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t stride_in_bytes;
48666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t scanline;
48766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t width;    /* width without padding */
48866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t height;   /* height without padding */
48966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t meta_stride;   /*Meta stride*/
49066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t meta_scanline; /*Meta Scanline*/
49166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t meta_len;   /*Meta plane length including 4k padding*/
49266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_mp_len_offset_t;
49366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
49466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
49566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t offset_x;
49666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t offset_y;
49766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_offset_info_t;
49866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
49966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
50066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t width_padding;
50166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t height_padding;
50266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t plane_padding;
50366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t min_stride;
50466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t min_scanline;
50566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_offset_info_t offset_info;
50666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_padding_info_t;
50766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
50866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
50966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t num_planes;    /*Number of planes in planar buffer*/
51066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    union {
51166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_sp_len_offset_t sp;
51266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_mp_len_offset_t mp[VIDEO_MAX_PLANES];
51366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    };
51466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t frame_len;
51566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_frame_len_offset_t;
51666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
51766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
51866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t frame_buf_cnt;  /*Total plane frames present in 1 batch*/
51966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t size;          /*Size of 1 batch buffer. Kernel structure size*/
52066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    long frameInterval;     /*frame interval between each frame*/
52166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_stream_user_buf_info_t;
52266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
52366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
52466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t width;
52566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t height;
52666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_dimension_t;
52766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
52866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
52966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_frame_len_offset_t plane_info;
53066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_stream_buf_plane_info_t;
53166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
53266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
53366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float min_fps;
53466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float max_fps;
53566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float video_min_fps;
53666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float video_max_fps;
53766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_fps_range_t;
53866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
53966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
54066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t min_sensitivity;
54166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t max_sensitivity;
54266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_sensitivity_range_t;
54366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
54466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
54566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HFR_MODE_OFF,
54666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HFR_MODE_60FPS,
54766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HFR_MODE_90FPS,
54866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HFR_MODE_120FPS,
54966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HFR_MODE_150FPS,
55066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HFR_MODE_180FPS,
55166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HFR_MODE_210FPS,
55266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HFR_MODE_240FPS,
55366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HFR_MODE_480FPS,
55466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HFR_MODE_MAX
55566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_hfr_mode_t;
55666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
55766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
55866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_hfr_mode_t mode;
55966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_dimension_t dim;
56066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t frame_skip;
56166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t livesnapshot_sizes_tbl_cnt;                     /* livesnapshot sizes table size */
56266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_dimension_t livesnapshot_sizes_tbl[MAX_SIZES_CNT];  /* livesnapshot sizes table */
56366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_hfr_info_t;
56466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
56566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
56666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_AUTO,
56766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_CUSTOM,
56866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_INCANDESCENT,
56966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_FLUORESCENT,
57066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_WARM_FLUORESCENT,
57166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_DAYLIGHT,
57266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_CLOUDY_DAYLIGHT,
57366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_TWILIGHT,
57466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_SHADE,
57566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_MANUAL,
57666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_OFF,
57766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WB_MODE_MAX
57866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_wb_mode_type;
57966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
58066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
58166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ANTIBANDING_MODE_OFF,
58266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ANTIBANDING_MODE_60HZ,
58366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ANTIBANDING_MODE_50HZ,
58466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ANTIBANDING_MODE_AUTO,
58566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ANTIBANDING_MODE_AUTO_50HZ,
58666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ANTIBANDING_MODE_AUTO_60HZ,
58766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ANTIBANDING_MODE_MAX,
58866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_antibanding_mode_type;
58966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
59066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/* Enum Type for different ISO Mode supported */
59166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
59266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ISO_MODE_AUTO,
59366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ISO_MODE_DEBLUR,
59466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ISO_MODE_100,
59566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ISO_MODE_200,
59666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ISO_MODE_400,
59766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ISO_MODE_800,
59866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ISO_MODE_1600,
59966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ISO_MODE_3200,
60066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ISO_MODE_MAX
60166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_iso_mode_type;
60266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
60366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
60466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_MODE_FRAME_AVERAGE,
60566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_MODE_CENTER_WEIGHTED,
60666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_MODE_SPOT_METERING,
60766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_MODE_SMART_METERING,
60866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_MODE_USER_METERING,
60966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_MODE_SPOT_METERING_ADV,
61066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_MODE_CENTER_WEIGHTED_ADV,
61166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_MODE_MAX
61266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_auto_exposure_mode_type;
61366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
614d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch/* enum to select AEC convergence type */
615d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetschtypedef enum {
616d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    /* Normal AEC connvergence */
617d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_AEC_NORMAL_CONVERGENCE = 0,
618d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    /* Aggressive AEC connvergence */
619d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_AEC_AGGRESSIVE_CONVERGENCE,
620d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    /* Fast AEC convergence */
621d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_AEC_FAST_CONVERGENCE,
622d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_AEC_CONVERGENCE_MAX
623d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch} cam_aec_convergence_type;
624d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch
62566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
62666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AE_MODE_OFF,
62766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AE_MODE_ON,
62866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AE_MODE_MAX
62966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_ae_mode_type;
63066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
63166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
63266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_ALGO_AUTO,
63366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_ALGO_SPOT,
63466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_ALGO_CENTER_WEIGHTED,
63566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_ALGO_AVERAGE,
63666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_ALGO_MAX
63766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_focus_algorithm_type;
63866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
63966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/* Auto focus mode */
64066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
64166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_MODE_OFF,
64266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_MODE_AUTO,
64366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_MODE_INFINITY,
64466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_MODE_MACRO,
64566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_MODE_FIXED,
64666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_MODE_EDOF,
64766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_MODE_CONTINOUS_VIDEO,
64866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_MODE_CONTINOUS_PICTURE,
64966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_MODE_MANUAL,
65066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_MODE_MAX
65166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_focus_mode_type;
65266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
65366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
65466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_FOCUS_MODE_INDEX,
65566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_FOCUS_MODE_DAC_CODE,
65666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_FOCUS_MODE_RATIO,
65766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_FOCUS_MODE_DIOPTER,
65866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_FOCUS_MODE_MAX
65966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_manual_focus_mode_type;
66066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
66166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
66266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_manual_focus_mode_type flag;
66366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    union{
66466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        int32_t af_manual_lens_position_index;
66566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        int32_t af_manual_lens_position_dac;
66666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        int32_t af_manual_lens_position_ratio;
66766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        float af_manual_diopter;
66866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    };
66966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_manual_focus_parm_t;
67066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
67166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
67266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_WB_MODE_CCT,
67366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_WB_MODE_GAIN,
67466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_WB_MODE_MAX
67566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_manual_wb_mode_type;
67666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
67766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
67866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float r_gain;
67966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float g_gain;
68066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float b_gain;
68166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_awb_gain_t;
68266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
68366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
68466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_manual_wb_mode_type type;
68566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    union{
68666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        int32_t cct;
68766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_awb_gain_t gains;
68866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    };
68966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_manual_wb_parm_t;
69066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
69166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
69266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_OFF,
69366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_AUTO,
69466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_LANDSCAPE,
69566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_SNOW,
69666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_BEACH,
69766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_SUNSET,
69866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_NIGHT,
69966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_PORTRAIT,
70066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_BACKLIGHT,
70166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_SPORTS,
70266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_ANTISHAKE,
70366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_FLOWERS,
70466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_CANDLELIGHT,
70566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_FIREWORKS,
70666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_PARTY,
70766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_NIGHT_PORTRAIT,
70866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_THEATRE,
70966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_ACTION,
71066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_AR,
71166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_FACE_PRIORITY,
71266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_BARCODE,
71366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_HDR,
71466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_AQUA,
71566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SCENE_MODE_MAX
71666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_scene_mode_type;
71766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
71866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
71966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_OFF,
72066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_MONO,
72166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_NEGATIVE,
72266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_SOLARIZE,
72366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_SEPIA,
72466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_POSTERIZE,
72566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_WHITEBOARD,
72666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_BLACKBOARD,
72766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_AQUA,
72866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_EMBOSS,
72966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_SKETCH,
73066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_NEON,
73166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_BEAUTY,
73266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EFFECT_MODE_MAX
73366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_effect_mode_type;
73466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
73566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
73666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_MODE_OFF,
73766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_MODE_AUTO,
73866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_MODE_ON,
73966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_MODE_TORCH,
74066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_MODE_SINGLE,
74166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_MODE_MAX
74266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_flash_mode_t;
74366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
74466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin// Flash States
74566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
74666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_STATE_UNAVAILABLE,
74766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_STATE_CHARGING,
74866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_STATE_READY,
74966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_STATE_FIRED,
75066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_STATE_PARTIAL,
75166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_STATE_MAX
75266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_flash_state_t;
75366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
75466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
75566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_0,
75666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_1,
75766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_2,
75866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_3,
75966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_4,
76066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_5,
76166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_6,
76266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_7,
76366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_8,
76466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_9,
76566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_10,
76666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_FIRING_LEVEL_MAX
76766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_flash_firing_level_t;
76866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
76966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
77066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
77166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_TRIGGER_IDLE,
77266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_TRIGGER_START
77366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_aec_trigger_type_t;
77466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
77566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
77666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_TRIGGER_IDLE,
77766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_TRIGGER_START,
77866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_TRIGGER_CANCEL
77966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_af_trigger_type_t;
78066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
78166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
78266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AE_STATE_INACTIVE,
78366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AE_STATE_SEARCHING,
78466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AE_STATE_CONVERGED,
78566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AE_STATE_LOCKED,
78666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AE_STATE_FLASH_REQUIRED,
78766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AE_STATE_PRECAPTURE
78866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_ae_state_t;
78966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
79066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
79166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_NOISE_REDUCTION_MODE_OFF,
79266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_NOISE_REDUCTION_MODE_FAST,
79366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_NOISE_REDUCTION_MODE_HIGH_QUALITY,
79466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_NOISE_REDUCTION_MODE_MINIMAL,
79566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG
79666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_noise_reduction_mode_t;
79766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
79866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
79966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EDGE_MODE_OFF,
80066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EDGE_MODE_FAST,
80166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EDGE_MODE_HIGH_QUALITY,
80266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EDGE_MODE_ZERO_SHUTTER_LAG,
80366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_edge_mode_t;
80466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
80566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
80666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   uint8_t edge_mode;
80766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   int32_t sharpness;
80866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_edge_application_t;
80966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
81066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
81166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_BLACK_LEVEL_LOCK_OFF,
81266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_BLACK_LEVEL_LOCK_ON,
81366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_black_level_lock_t;
81466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
81566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
81666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HOTPIXEL_MODE_OFF,
81766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HOTPIXEL_MODE_FAST,
81866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HOTPIXEL_MODE_HIGH_QUALITY,
81966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_hotpixel_mode_t;
82066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
82166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
82266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_LENS_SHADING_MAP_MODE_OFF,
82366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_LENS_SHADING_MAP_MODE_ON,
82466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_lens_shading_map_mode_t;
82566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
82666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
82766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_LENS_SHADING_MODE_OFF,
82866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_LENS_SHADING_MODE_FAST,
82966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_LENS_SHADING_MODE_HIGH_QUALITY,
83066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_lens_shading_mode_t;
83166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
83266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
83366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_DETECT_MODE_OFF,
83466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_DETECT_MODE_SIMPLE,
83566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_DETECT_MODE_FULL,
83666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_detect_mode_t;
83766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
83866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
83966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_TONEMAP_MODE_CONTRAST_CURVE,
84066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_TONEMAP_MODE_FAST,
84166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_TONEMAP_MODE_HIGH_QUALITY,
84266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_tonemap_mode_t;
84366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
84466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
84566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CDS_MODE_OFF,
84666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CDS_MODE_ON,
84766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CDS_MODE_AUTO,
84866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CDS_MODE_LOCK,
84966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CDS_MODE_MAX
85066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_cds_mode_type_t;
85166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
85266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
85366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SENSOR_HDR_OFF,
85466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SENSOR_HDR_IN_SENSOR = 1,
85566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SENSOR_HDR_ZIGZAG,
85666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SENSOR_HDR_MAX,
85766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_sensor_hdr_type_t;
85866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
85966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct  {
86066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t left;
86166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t top;
86266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t width;
86366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t height;
86466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_rect_t;
86566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
86666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct  {
86766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rect_t rect;
86866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t weight; /* weight of the area, valid for focusing/metering areas */
86966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_area_t;
87066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
87166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
87266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAMING_MODE_CONTINUOUS, /* continous streaming */
87366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAMING_MODE_BURST,      /* burst streaming */
87466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAMING_MODE_BATCH,      /* stream frames in batches */
87566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_STREAMING_MODE_MAX
87666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_streaming_mode_t;
87766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
87866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
87966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    IS_TYPE_NONE,
88066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    IS_TYPE_DIS,
88166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    IS_TYPE_GA_DIS,
88266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    IS_TYPE_EIS_1_0,
88366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    IS_TYPE_EIS_2_0,
88466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    IS_TYPE_MAX
88566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_is_type_t;
88666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
88766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
88866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    DIS_DISABLE,
88966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    DIS_ENABLE
89066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_dis_mode_t;
89166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
89266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
89366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  NON_SECURE,
89466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  SECURE
89566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_stream_secure_t;
89666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
89766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_REPROCESS_MASK_TYPE_WNR (1<<0)
89866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
89966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/* event from server */
90066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
90166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EVENT_TYPE_MAP_UNMAP_DONE  = (1<<0),
90266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EVENT_TYPE_AUTO_FOCUS_DONE = (1<<1),
90366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EVENT_TYPE_ZOOM_DONE       = (1<<2),
90466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EVENT_TYPE_DAEMON_DIED     = (1<<3),
90566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EVENT_TYPE_INT_TAKE_JPEG   = (1<<4),
90666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EVENT_TYPE_INT_TAKE_RAW    = (1<<5),
90766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EVENT_TYPE_DAEMON_PULL_REQ = (1<<6),
90866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EVENT_TYPE_CAC_DONE        = (1<<7),
90966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EVENT_TYPE_MAX
91066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_event_type_t;
91166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
91266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
91366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EXP_BRACKETING_OFF,
91466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EXP_BRACKETING_ON
91566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_bracket_mode;
91666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
91766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
91866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_LOW_LIGHT_OFF = 0,
91966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_LOW_LIGHT_ON,
92066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_low_light_mode_t;
92166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
92266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
92366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_bracket_mode mode;
92466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char values[MAX_EXP_BRACKETING_LENGTH];  /* user defined values */
92566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_exp_bracketing_t;
92666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
92766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
92866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint32_t num_frames;
92966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_exp_bracketing_t exp_val;
93066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_hdr_bracketing_info_t;
93166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
93266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin typedef struct {
93366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_bracket_mode mode;
93466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t values;  /* user defined values */
93566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_capture_bracketing_t;
93666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
93766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
93866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SETTINGS_TYPE_OFF,
93966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SETTINGS_TYPE_ON,
94066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SETTINGS_TYPE_AUTO
94166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_manual_setting_mode;
94266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
94366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
94466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_manual_setting_mode exp_mode;
94566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int64_t exp_time;
94666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_manual_setting_mode iso_mode;
94766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t iso_value;
94866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_capture_manual_3A_t;
94966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
95066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
95166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CAPTURE_NORMAL,
95266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CAPTURE_FLASH,
95366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CAPTURE_BRACKETING,
95466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CAPTURE_LOW_LIGHT,
95566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CAPTURE_RESET,
95666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CAPTURE_MANUAL_3A,
95766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CAPTURE_MAX
95866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_capture_type;
95966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
96066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
96166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t num_frames;     /*Num of frames requested on this quality*/
96266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_capture_type type;  /*type of the capture request*/
96366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
96466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*union to strore values of capture type*/
96566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    union {
96666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_flash_mode_t flash_mode;
96766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_capture_bracketing_t hdr_mode;
96866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_low_light_mode_t low_light_mode;
96966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_capture_manual_3A_t manual_3A_mode;
97066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    };
97166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_capture_settings_t;
97266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
97366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
97466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t num_batch;  /*Number of frames batch requested*/
97566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_capture_settings_t configs[MAX_CAPTURE_BATCH_NUM];
97666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_capture_frame_config_t;
97766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
97866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
97966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t stepsize;
98066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t direction;
98166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t num_steps;
98266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t ttype;
98366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} tune_actuator_t;
98466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
98566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
98666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t module;
98766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t type;
98866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t value;
98966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} tune_cmd_t;
99066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
99166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
99266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_ROI_OFF,
99366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_ROI_ON
99466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_aec_roi_ctrl_t;
99566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
99666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
99766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_ROI_BY_INDEX,
99866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AEC_ROI_BY_COORDINATE,
99966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_aec_roi_type_t;
100066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
100166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
100266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t x;
100366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t y;
100466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_coordinate_type_t;
100566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
100666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
100766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t numerator;
100866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t denominator;
100966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_rational_type_t;
101066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
101166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
101266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_aec_roi_ctrl_t aec_roi_enable;
101366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_aec_roi_type_t aec_roi_type;
101466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    union {
101566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_coordinate_type_t coordinate[MAX_ROI];
101666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        uint32_t aec_roi_idx[MAX_ROI];
101766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } cam_aec_roi_position;
101866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_set_aec_roi_t;
101966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
102066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
102166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t frm_id;
102266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t num_roi;
102366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rect_t roi[MAX_ROI];
102466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t weight[MAX_ROI];
102566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_multiwindow;
102666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_roi_info_t;
102766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
102866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
102966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WAVELET_DENOISE_YCBCR_PLANE,
103066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WAVELET_DENOISE_CBCR_ONLY,
103166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WAVELET_DENOISE_STREAMLINE_YCBCR,
103266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_WAVELET_DENOISE_STREAMLINED_CBCR
103366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_denoise_process_type_t;
103466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
103566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
103666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t denoise_enable;
103766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_denoise_process_type_t process_plates;
103866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_denoise_param_t;
103966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
10401687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan#define CAM_FACE_PROCESS_MASK_DETECTION     (1U<<0)
10411687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan#define CAM_FACE_PROCESS_MASK_RECOGNITION   (1U<<1)
10421687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan#define CAM_FACE_PROCESS_MASK_FOCUS         (1U<<2)
10431687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan#define CAM_FACE_PROCESS_MASK_BLINK         (1U<<3)
10441687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan#define CAM_FACE_PROCESS_MASK_SMILE         (1U<<4)
10451687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan#define CAM_FACE_PROCESS_MASK_GAZE          (1U<<5)
104666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
104766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
104866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t fd_mode;          /* mask of face process */
104966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t num_fd;
105066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_fd_set_parm_t;
105166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
105266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
105366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    QCAMERA_FD_PREVIEW,
105466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    QCAMERA_FD_SNAPSHOT
105566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}qcamera_face_detect_type_t;
105666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
105766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
105866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EYE_L_PUPIL,
105966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EYE_L_IN,
106066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EYE_L_OUT,
106166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EYE_L_UP,
106266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EYE_L_DOWN,
106366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EYE_R_PUPIL,
106466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EYE_R_IN,
106566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EYE_R_OUT,
106666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EYE_R_UP,
106766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EYE_R_DOWN,
106866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EYE_MAX
106966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_ct_point_eye_t;
107066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
107166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
107266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_FOREHEAD,
107366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_FOREHEAD_MAX
107466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_ct_point_forh_t;
107566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
107666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
107766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_NOSE,
107866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_NOSE_TIP,
107966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_NOSE_L,
108066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_NOSE_R,
108166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_NOSE_L_0,
108266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_NOSE_R_0,
108366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_NOSE_L_1,
108466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_NOSE_R_1,
108566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_NOSE_MAX
108666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_ct_point_nose_t;
108766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
108866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
108966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_MOUTH_L,
109066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_MOUTH_R,
109166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_MOUTH_UP,
109266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_MOUTH_DOWN,
109366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_MOUTH_MAX
109466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_ct_point_mouth_t;
109566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
109666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
109766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_LIP_UP,
109866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_LIP_DOWN,
109966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_LIP_MAX
110066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_ct_point_lip_t;
110166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
110266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
110366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_BROW_L_UP,
110466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_BROW_L_DOWN,
110566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_BROW_L_IN,
110666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_BROW_L_OUT,
110766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_BROW_R_UP,
110866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_BROW_R_DOWN,
110966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_BROW_R_IN,
111066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_BROW_R_OUT,
111166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_BROW_MAX
111266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_ct_point_brow_t;
111366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
111466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
111566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_CHIN,
111666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_CHIN_L,
111766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_CHIN_R,
111866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_CHIN_MAX
111966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_ct_point_chin_t;
112066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
112166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
112266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EAR_L_DOWN,
112366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EAR_R_DOWN,
112466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EAR_L_UP,
112566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EAR_R_UP,
112666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FACE_CT_POINT_EAR_MAX
112766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_ct_point_ear_t;
112866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
112966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
113066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t is_eye_valid;
113166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_coordinate_type_t contour_eye_pt[CAM_FACE_CT_POINT_EYE_MAX];
113266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t is_forehead_valid;
113366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_coordinate_type_t contour_forh_pt[CAM_FACE_CT_POINT_FOREHEAD_MAX];
113466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t is_nose_valid;
113566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_coordinate_type_t contour_nose_pt[CAM_FACE_CT_POINT_NOSE_MAX];
113666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t is_mouth_valid;
113766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_coordinate_type_t contour_mouth_pt[CAM_FACE_CT_POINT_MOUTH_MAX];
113866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t is_lip_valid;
113966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_coordinate_type_t contour_lip_pt[CAM_FACE_CT_POINT_LIP_MAX];
114066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t is_brow_valid;
114166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_coordinate_type_t contour_brow_pt[CAM_FACE_CT_POINT_BROW_MAX];
114266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t is_chin_valid;
114366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_coordinate_type_t contour_chin_pt[CAM_FACE_CT_POINT_CHIN_MAX];
114466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t is_ear_valid;
114566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_coordinate_type_t contour_ear_pt[CAM_FACE_CT_POINT_EAR_MAX];
114666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_contour_info_t;
114766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
114866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
114966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_contour_info_t face_contour[MAX_ROI];
115066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_contour_data_t;
115166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
115266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
115366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_coordinate_type_t left_eye_center;  /* coordinate of center of left eye */
115466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_coordinate_type_t right_eye_center; /* coordinate of center of right eye */
115566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_coordinate_type_t mouth_center;     /* coordinate of center of mouth */
115666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_landmarks_info_t;
115766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
115866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
115966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_landmarks_info_t face_landmarks[MAX_ROI];
116066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_landmarks_data_t;
116166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
116266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
116366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t smile_degree;      /* smile degree (0, -100) */
116466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t smile_confidence;  /* smile confidence (0, 100) */
116566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_smile_info_t;
116666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
116766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
116866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_smile_info_t smile[MAX_ROI];
116966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_smile_data_t;
117066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
117166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
117266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int8_t gaze_angle;         /* -90 -45 0 45 90 for head left to rigth tilt */
117366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t updown_dir;        /* up down direction (-180, 179) */
117466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t leftright_dir;     /* left right direction (-180, 179) */
117566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t roll_dir;          /* roll direction (-180, 179) */
117666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int8_t left_right_gaze;    /* left right gaze degree (-50, 50) */
117766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int8_t top_bottom_gaze;    /* up down gaze degree (-50, 50) */
117866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_gaze_info_t;
117966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
118066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
118166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_gaze_info_t gaze[MAX_ROI];
118266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_gaze_data_t;
118366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
118466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
118566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t blink_detected;    /* if blink is detected */
118666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t left_blink;        /* left eye blink degeree (0, -100) */
118766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t right_blink;       /* right eye blink degree (0, - 100) */
118866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_blink_info_t;
118966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
119066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
119166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_blink_info_t blink[MAX_ROI];
119266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_blink_data_t;
119366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
119466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
119566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t face_recognised;   /* if face is recognised */
119666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t unique_id;   /* if face is recognised */
119766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_recog_info_t;
119866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
119966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
120066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_recog_info_t face_rec[MAX_ROI];
120166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_recog_data_t;
120266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
120366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
120466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t face_id;            /* unique id for face tracking within view unless view changes */
120566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int8_t score;              /* score of confidence (0, -100) */
120666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rect_t face_boundary;  /* boundary of face detected */
120766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_detection_info_t;
120866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
120966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
121066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t frame_id;                         /* frame index of which faces are detected */
121166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t num_faces_detected;                /* number of faces detected */
121266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_detection_info_t faces[MAX_ROI];  /* detailed information of faces detected */
121366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    qcamera_face_detect_type_t fd_type;        /* face detect for preview or snapshot frame*/
121466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_dimension_t fd_frame_dim;              /* frame dims on which fd is applied */
121566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t update_flag;                       /* flag to inform whether HAL needs to send cb
121666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                                * to app or not */
121766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_face_detection_data_t;
121866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
121966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin// definition of composite face detection data
122066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
122166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_detection_data_t detection_data;
122266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
122366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int8_t recog_valid;
122466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_recog_data_t recog_data;
122566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
122666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int8_t blink_valid;
122766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_blink_data_t blink_data;
122866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
122966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int8_t gaze_valid;
123066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_gaze_data_t gaze_data;
123166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
123266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int8_t smile_valid;
123366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_smile_data_t smile_data;
123466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
123566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int8_t landmark_valid;
123666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_landmarks_data_t landmark_data;
123766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
123866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int8_t contour_valid;
123966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_contour_data_t contour_data;
124066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_faces_data_t;
124166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
124266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_HISTOGRAM_STATS_SIZE 256
124366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
124466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t max_hist_value;
124566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t hist_buf[CAM_HISTOGRAM_STATS_SIZE]; /* buf holding histogram stats data */
124666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_histogram_data_t;
124766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
124866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
124966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_histogram_data_t r_stats;
125066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_histogram_data_t b_stats;
125166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_histogram_data_t gr_stats;
125266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_histogram_data_t gb_stats;
125366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_bayer_hist_stats_t;
125466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
125566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
125666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HISTOGRAM_TYPE_BAYER,
125766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HISTOGRAM_TYPE_YUV
125866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_histogram_type_t;
125966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
126066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
126166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_histogram_type_t type;
126266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    union {
126366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_bayer_hist_stats_t bayer_stats;
126466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_histogram_data_t yuv_stats;
126566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    };
126666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_hist_stats_t;
126766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
126866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjinenum cam_focus_distance_index{
126966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  CAM_FOCUS_DISTANCE_NEAR_INDEX,  /* 0 */
127066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  CAM_FOCUS_DISTANCE_OPTIMAL_INDEX,
127166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  CAM_FOCUS_DISTANCE_FAR_INDEX,
127266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  CAM_FOCUS_DISTANCE_MAX_INDEX
127366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin};
127466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
127566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
127666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  float focus_distance[CAM_FOCUS_DISTANCE_MAX_INDEX];
127766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_focus_distances_info_t;
127866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
127966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
128066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t scale;
128166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float diopter;
128266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_focus_pos_info_t ;
128366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
128466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
128566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float focalLengthRatio;
128666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_focal_length_ratio_t;
128766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
12881687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajantypedef struct {
12891687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    uint8_t needFlush;
12901687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    uint32_t focused_frame_idx;
12911687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan} cam_af_flush_info_t;
12921687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan
129366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/* Different autofocus cycle when calling do_autoFocus
129466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * CAM_AF_COMPLETE_EXISTING_SWEEP: Complete existing sweep
129566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * if one is ongoing, and lock.
129666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * CAM_AF_DO_ONE_FULL_SWEEP: Do one full sweep, regardless
129766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * of the current state, and lock.
129866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * CAM_AF_START_CONTINUOUS_SWEEP: Start continous sweep.
129966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * After do_autoFocus, HAL receives an event: CAM_AF_FOCUSED,
130066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * or CAM_AF_NOT_FOCUSED.
130166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * cancel_autoFocus stops any lens movement.
130266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * Each do_autoFocus call only produces 1 FOCUSED/NOT_FOCUSED
130366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin * event, not both.
130466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin */
130566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
130666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_COMPLETE_EXISTING_SWEEP,
130766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_DO_ONE_FULL_SWEEP,
130866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_START_CONTINUOUS_SWEEP
130966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_autofocus_cycle_t;
131066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
131166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
131266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_SCANNING,
131366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_FOCUSED,
131466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_NOT_FOCUSED,
131566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CAF_SCANNING,
131666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CAF_FOCUSED,
131766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CAF_NOT_FOCUSED,
131866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_INACTIVE
131966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_autofocus_state_t;
132066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
132166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//Don't change the order of the AF states below. It should match
132266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//with the corresponding enum in frameworks (camera3.h and
132366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin//CameraMetadata.java)
132466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
132566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_STATE_INACTIVE,
132666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_STATE_PASSIVE_SCAN,
132766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_STATE_PASSIVE_FOCUSED,
132866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_STATE_ACTIVE_SCAN,
132966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_STATE_FOCUSED_LOCKED,
133066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_STATE_NOT_FOCUSED_LOCKED,
133166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AF_STATE_PASSIVE_UNFOCUSED
133266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_af_state_t;
133366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
133466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
133566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_af_state_t focus_state;           /* state of focus */
133666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_focus_distances_info_t focus_dist;       /* focus distance */
133766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_focus_mode_type focus_mode;        /* focus mode from backend */
133866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t focus_pos;
13391687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    cam_af_flush_info_t flush_info;
134066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_auto_focus_data_t;
134166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
134266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
134366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t stream_id;
134466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rect_t crop;
134566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rect_t roi_map;
134666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_stream_crop_info_t;
134766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
134866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
134966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t num_of_streams;
135066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_stream_crop_info_t crop_info[MAX_NUM_STREAMS];
135166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_crop_data_t;
135266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
135366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
135466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t stream_id;
135566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t cds_enable;
135666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_stream_cds_info_t;
135766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
135866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
135966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t session_cds_enable;
136066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t num_of_streams;
136166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_stream_cds_info_t cds_info[MAX_NUM_STREAMS];
136266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_cds_data_t;
136366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
136466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
136566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    DO_NOT_NEED_FUTURE_FRAME,
136666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    NEED_FUTURE_FRAME,
136766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_prep_snapshot_state_t;
136866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
136966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CC_GAINS_COUNT  4
137066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
137166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
137266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float gains[CC_GAINS_COUNT];
137366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_color_correct_gains_t;
137466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
137566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
137666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    // If LED is ON and Burst Num > 1, this is first LED ON frame
137766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t min_frame_idx;
137866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    // If LED is ON and Burst Num > 1, this is first LED Off frame after ON
137966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t max_frame_idx;
138066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    // Used only when LED Is ON and burst num > 1
138166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t num_led_on_frames;
138266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    // Skip count after LED is turned OFF
138366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t frame_skip_count;
138466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    // Batch id for each picture request
138566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t config_batch_idx;
138666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_frame_idx_range_t;
138766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
138866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
138966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  S_NORMAL = 0,
139066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  S_SCENERY,
139166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  S_PORTRAIT,
139266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  S_PORTRAIT_BACKLIGHT,
139366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  S_SCENERY_BACKLIGHT,
139466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  S_BACKLIGHT,
1395d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_HDR,
1396d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_MAX_DEFAULT,
1397d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_CUSTOM0 = S_MAX_DEFAULT,
1398d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_CUSTOM1,
1399d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_CUSTOM2,
1400d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_CUSTOM3,
1401d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_CUSTOM4,
1402d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_CUSTOM5,
1403d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_CUSTOM6,
1404d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_CUSTOM7,
1405d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_CUSTOM8,
1406d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  S_CUSTOM9,
140766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  S_MAX,
140866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_auto_scene_t;
140966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
141066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
1411d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  uint32_t is_hdr_scene;
1412d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  float    hdr_confidence;
1413d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch} cam_asd_hdr_scene_data_t;
1414d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch
1415d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetschtypedef struct {
1416d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  uint32_t          detected;
1417d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  float             confidence;
1418d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  uint32_t          auto_compensation;
1419d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch} cam_asd_scene_info_t;
1420d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch
1421d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetschtypedef struct {
1422d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  cam_auto_scene_t      detected_scene;
1423d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  uint8_t               max_n_scenes;
1424d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch  cam_asd_scene_info_t  scene_info[S_MAX];
1425d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch} cam_asd_decision_t;
1426d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch
1427d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch
1428d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetschtypedef struct {
142966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   uint32_t meta_frame_id;
143066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_meta_valid_t;
143166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
143266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
143366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_SENSOR_RAW,
1434d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_SENSOR_YUV,
1435d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_SENSOR_MONO
143666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_sensor_t;
143766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
143866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
143966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_flash_mode_t flash_mode;
144066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float            aperture_value;
144166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_flash_state_t        flash_state;
144266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float            focal_length;
144366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float            f_number;
144466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t          sensing_method;
144566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float            crop_factor;
144666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_sensor_t sens_type;
144766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_sensor_params_t;
144866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
144966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
145066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_METERING_MODE_UNKNOWN = 0,
145166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_METERING_MODE_AVERAGE = 1,
145266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_METERING_MODE_CENTER_WEIGHTED_AVERAGE = 2,
145366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_METERING_MODE_SPOT = 3,
145466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_METERING_MODE_MULTI_SPOT = 4,
145566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_METERING_MODE_PATTERN = 5,
145666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_METERING_MODE_PARTIAL = 6,
145766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_METERING_MODE_OTHER = 255,
145866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_metering_mode_t;
145966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
146066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
146166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float exp_time;
146266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t iso_value;
146366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t flash_needed;
146466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t settled;
146566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_wb_mode_type wb_mode;
146666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t metering_mode;
146766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t exposure_program;
146866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t exposure_mode;
146966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t scenetype;
147066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float brightness;
147166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float est_snap_exp_time;
147266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t est_snap_iso_value;
147366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t est_snap_luma;
147466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t est_snap_target;
147566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_3a_params_t;
147666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
147766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
147866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint64_t sw_version_number;
147966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t aec_debug_data_size;
148066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char aec_private_debug_data[AEC_DEBUG_DATA_SIZE];
148166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_ae_exif_debug_t;
148266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
148366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
14841687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    int8_t awb_ccm_enable;
14851687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    int8_t hard_awb_ccm_flag;
14861687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    int8_t ccm_update_flag;
14871687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    float  ccm[AWB_NUM_CCM_ROWS][AWB_NUM_CCM_COLS];
14881687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    float  ccm_offset[AWB_NUM_CCM_ROWS];
14891687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan} cam_awb_ccm_update_t;
14901687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan
14911687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajantypedef struct {
149266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t cct_value;
149366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_awb_gain_t rgb_gains;
14941687b440bcda598006d1950f74915f0cea3b66a3Mekala Natarajan    cam_awb_ccm_update_t ccm_update;
149566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_awb_params_t;
149666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
149766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
149866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t awb_debug_data_size;
149966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char awb_private_debug_data[AWB_DEBUG_DATA_SIZE];
150066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_awb_exif_debug_t;
150166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
150266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
150366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t af_debug_data_size;
150466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t haf_debug_data_size;
150566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t tof_debug_data_size;
150666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t dciaf_debug_data_size;
150766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t pdaf_debug_data_size;
150866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char af_private_debug_data[AF_DEBUG_DATA_SIZE];
150966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t af_stats_buffer_size;
151066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char af_stats_private_debug_data[AF_STATS_DEBUG_DATA_SIZE];
151166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_af_exif_debug_t;
151266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
151366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
151466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t asd_debug_data_size;
151566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char asd_private_debug_data[ASD_DEBUG_DATA_SIZE];
151666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_asd_exif_debug_t;
151766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
151866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
151966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t bg_stats_buffer_size;
152066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t bhist_stats_buffer_size;
152166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t bg_config_buffer_size;
152266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char stats_buffer_private_debug_data[STATS_BUFFER_DEBUG_DATA_SIZE];
152366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_stats_buffer_exif_debug_t;
152466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
152566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/* 3A version*/
152666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
152766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint16_t major_version;
152866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint16_t minor_version;
152966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint16_t patch_version;
153066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint16_t new_feature_des;
153166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_q3a_version_t;
153266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
153366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
153466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t tuning_data_version;
153566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    size_t tuning_sensor_data_size;
153666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    size_t tuning_vfe_data_size;
153766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    size_t tuning_cpp_data_size;
153866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    size_t tuning_cac_data_size;
153966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    size_t tuning_cac_data_size2;
154066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    size_t tuning_mod3_data_size;
154166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t  data[TUNING_DATA_MAX];
154266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin}tuning_params_t;
154366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
154466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
154566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t event_type;
154666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_dimension_t dim;
154766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    size_t size;
154866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char path[QCAMERA_MAX_FILEPATH_LENGTH];
154966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_format_t picture_format;
155066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_int_evt_params_t;
155166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
155266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
155366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t private_isp_data[MAX_ISP_DATA_SIZE];
155466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_chromatix_lite_isp_t;
155566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
155666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
155766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t private_pp_data[MAX_PP_DATA_SIZE];
155866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_chromatix_lite_pp_t;
155966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
156066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
156166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t private_stats_data[MAX_AE_STATS_DATA_SIZE];
156266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_chromatix_lite_ae_stats_t;
156366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
156466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
156566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t private_stats_data[MAX_AWB_STATS_DATA_SIZE];
156666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_chromatix_lite_awb_stats_t;
156766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
156866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
156966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t private_stats_data[MAX_AF_STATS_DATA_SIZE];
157066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_chromatix_lite_af_stats_t;
157166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
157266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
157366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t private_stats_data[MAX_ASD_STATS_DATA_SIZE];
157466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_chromatix_lite_asd_stats_t;
157566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
157666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
157766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   uint32_t min_buffers;
157866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   uint32_t max_buffers;
157966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_buffer_info_t;
158066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
158166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
158266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_dimension_t stream_sizes[MAX_NUM_STREAMS];
158366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t num_streams;
158466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_stream_type_t type[MAX_NUM_STREAMS];
158566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t postprocess_mask[MAX_NUM_STREAMS];
158666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_buffer_info_t buffer_info;
158766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_is_type_t is_type;
158866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_hfr_mode_t hfr_mode;
158966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_format_t format[MAX_NUM_STREAMS];
159066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t buf_alignment;
159166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t min_stride;
159266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t min_scanline;
159366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t batch_size;
159466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_stream_size_info_t;
159566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
159666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
159766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
159866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_OVERWRITE_MINI_CHROMATIX_OFFLINE,
159966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_OVERWRITE_ISP_HW_DATA_OFFLINE,
160066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_OVERWRITE_MINI_CHROMATIX_ONLINE,
160166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_OVERWRITE_ISP_HW_DATA_ONLINE,
160266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_OVERWRITE_MAX,
160366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_intf_overwrite_type_t;
160466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
160566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
160666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t lds_enabled;
160766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  float rnr_sampling_factor;
160866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_img_hysterisis_info_t;
160966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
161066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
161166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  /* dynamic feature enablement */
161266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint64_t dyn_feature_mask;
161366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  /* input frame count for stacking */
161466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint32_t input_count;
161566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  /* reserved for future use */
161666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint8_t  reserved[32];
161766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_dyn_img_data_t;
161866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
161966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
162066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_intf_overwrite_type_t overwrite_type;
162166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char isp_hw_data_list[4096];     /*add upper bound memory, customer to fill*/
162266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  char chromatix_data_overwrite[4096]; /*add bound memory, customer fill*/
162366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_hw_data_overwrite_t;
162466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
162566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
162666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t num_streams;
162766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t streamID[MAX_NUM_STREAMS];
162866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_stream_ID_t;
162966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
163066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*CAC Message posted during pipeline*/
163166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
163266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t frame_id;
163366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t buf_idx;
163466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_cac_info_t;
163566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
163666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct
163766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin{
163866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint32_t id;            /* Frame ID */
163966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint64_t timestamp;    /* Time stamp */
164066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint32_t distance_in_mm; /* Distance of object in ROI's in milimeters */
164166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint32_t confidence;     /* Confidence on distance from 0(No confidence)to 1024(max) */
164266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint32_t status;        /* Status of DCRF library execution call */
164366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_rect_t focused_roi; /* ROI's for which distance is estimated */
164466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint32_t focused_x;     /* Focus location X inside ROI with distance estimation */
164566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  uint32_t focused_y;     /* Focus location Y inside ROI with distance estimation */
164666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_dcrf_result_t;
164766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
164866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
164966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t frame_id;
165066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t num_streams;
165166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t stream_id[MAX_NUM_STREAMS];
165266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_buf_divert_info_t;
165366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
165466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef  struct {
165566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_stats_valid;               /* if histgram data is valid */
165666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_hist_stats_t stats_data;          /* histogram data */
165766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
165866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_faces_valid;               /* if face detection data is valid */
165966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_face_detection_data_t faces_data; /* face detection result */
166066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
166166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_focus_valid;               /* if focus data is valid */
166266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_auto_focus_data_t focus_data;     /* focus data */
166366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
166466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_crop_valid;                /* if crop data is valid */
166566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_crop_data_t crop_data;            /* crop data */
166666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
166766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_prep_snapshot_done_valid;  /* if prep snapshot done is valid */
166866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_prep_snapshot_state_t prep_snapshot_done_state;  /* prepare snapshot done state */
166966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
167066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_cac_valid;                 /* if cac info is valid */
167166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_cac_info_t cac_info;              /* cac info */
167266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
167366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Hysterisis data from Img modules */
167466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_hyst_info_valid;           /* if hyst info is valid */
167566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_img_hysterisis_info_t img_hyst_info; /* hyst info */
167666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
167766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* if good frame idx range is valid */
167866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_good_frame_idx_range_valid;
167966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* good frame idx range, make sure:
168066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * 1. good_frame_idx_range.min_frame_idx > current_frame_idx
168166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * 2. good_frame_idx_range.min_frame_idx - current_frame_idx < 100 */
168266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_frame_idx_range_t good_frame_idx_range;
168366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
1684d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    cam_asd_decision_t cam_asd_info;
168566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
168666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    char private_metadata[MAX_METADATA_PRIVATE_PAYLOAD_SIZE_IN_BYTES];
168766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
168866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* AE parameters */
168966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_3a_params_valid;
169066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_3a_params_t cam_3a_params;
169166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
169266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* AE exif debug parameters */
169366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_ae_exif_debug_valid;
169466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_ae_exif_debug_t ae_exif_debug_params;
169566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
169666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* AWB exif debug parameters */
169766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_awb_exif_debug_valid;
169866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_awb_exif_debug_t awb_exif_debug_params;
169966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
170066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* AF exif debug parameters */
170166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_af_exif_debug_valid;
170266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_af_exif_debug_t af_exif_debug_params;
170366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
170466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* ASD exif debug parameters */
170566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_asd_exif_debug_valid;
170666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_asd_exif_debug_t asd_exif_debug_params;
170766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
170866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Stats buffer exif debug parameters */
170966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_stats_buffer_exif_debug_valid;
171066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_stats_buffer_exif_debug_t stats_buffer_exif_debug_params;
171166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
171266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* AWB parameters */
171366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_awb_params_valid;
171466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_awb_params_t awb_params;
171566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
171666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* sensor parameters */
171766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_sensor_params_valid;
171866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_sensor_params_t sensor_params;
171966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
172066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Meta valid params */
172166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_meta_valid;
172266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_meta_valid_t meta_valid_params;
172366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
172466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*Tuning Data*/
172566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_tuning_params_valid;
172666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    tuning_params_t tuning_params;
172766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
172866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_chromatix_lite_isp_valid;
172966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_chromatix_lite_isp_t chromatix_lite_isp_data;
173066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
173166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_chromatix_lite_pp_valid;
173266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_chromatix_lite_pp_t chromatix_lite_pp_data;
173366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
173466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_chromatix_lite_ae_stats_valid;
173566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_chromatix_lite_ae_stats_t chromatix_lite_ae_stats_data;
173666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
173766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_chromatix_lite_awb_stats_valid;
173866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_chromatix_lite_awb_stats_t chromatix_lite_awb_stats_data;
173966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
174066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_chromatix_lite_af_stats_valid;
174166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_chromatix_lite_af_stats_t chromatix_lite_af_stats_data;
174266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
174366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_dcrf_result_valid;
174466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_dcrf_result_t dcrf_result;
174566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
174666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Dynamic feature enablement from postprocessing modules */
174766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t is_dyn_img_data_valid;
174866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_dyn_img_data_t dyn_img_data;
174966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
175066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_metadata_info_t;
175166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
175266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
175366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_HAL_VERSION = 0x1,
175466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
175566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Overall mode of 3A control routines. We need to have this parameter
175666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * because not all android.control.* have an OFF option, for example,
175766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * AE_FPS_Range, aePrecaptureTrigger */
175866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_MODE,
175966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Whether AE is currently updating the sensor exposure and sensitivity
176066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * fields */
176166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AEC_MODE,
176266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_WHITE_BALANCE,
176366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_FOCUS_MODE,
176466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
176566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* common between HAL1 and HAL3 */
176666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_ANTIBANDING,
176766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_EXPOSURE_COMPENSATION,
176866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_EV_STEP,
176966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_AEC_LOCK,
177066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_FPS_RANGE, /* 10 */
177166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_AWB_LOCK,
177266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_EFFECT,
177366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_BESTSHOT_MODE,
177466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_DIS_ENABLE,
177566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_LED_MODE,
177666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_HISTOGRAM,
177766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FACE_DETECTION,
177866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Whether optical image stabilization is enabled. */
177966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LENS_OPT_STAB_MODE,
178066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* specific to HAl1 */
178166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AUTOFOCUS_DATA,
178266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_QUERY_FLASH4SNAP, /* 20 */
178366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_EXPOSURE,
178466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_SHARPNESS,
178566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_CONTRAST,
178666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_SATURATION,
178766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_BRIGHTNESS,
178866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_ISO,
178966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_ZOOM,
179066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_ROLLOFF,
179166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_MODE,             /* camera mode */
179266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_AEC_ALGO_TYPE, /* 30 */ /* auto exposure algorithm */
179366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_FOCUS_ALGO_TYPE,  /* focus algorithm */
179466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_AEC_ROI,
179566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_AF_ROI,
179666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_SCE_FACTOR,
179766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_FD,
179866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_MCE,
179966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_HFR,
180066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_REDEYE_REDUCTION,
180166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_WAVELET_DENOISE,
180266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_TEMPORAL_DENOISE, /* 40 */
180366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_HISTOGRAM,
180466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_ASD_ENABLE,
180566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_RECORDING_HINT,
180666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_HDR,
180766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_MAX_DIMENSION,
180866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_RAW_DIMENSION,
180966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_FRAMESKIP,
181066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_ZSL_MODE,  /* indicating if it's running in ZSL mode */
181166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_BURST_NUM,
181266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_RETRO_BURST_NUM, /* 50 */
181366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_BURST_LED_ON_PERIOD,
181466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_HDR_NEED_1X, /* if HDR needs 1x output */
181566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_LOCK_CAF,
181666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_VIDEO_HDR,
181766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_SENSOR_HDR,
181866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_ROTATION,
181966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_SCALE,
182066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_VT, /* indicating if it's a Video Call Apllication */
182166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_CROP_DATA,
182266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_PREP_SNAPSHOT_DONE, /* 60 */
182366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_GOOD_FRAME_IDX_RANGE,
182466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_ASD_HDR_SCENE_DATA,
1825d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_INTF_META_ASD_SCENE_INFO,
182666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_CURRENT_SCENE,
182766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AEC_INFO,
182866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SENSOR_INFO,
182966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_CHROMATIX_LITE_ISP,
183066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_CHROMATIX_LITE_PP,
1831d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_INTF_META_CHROMATIX_LITE_AE,
1832d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_INTF_META_CHROMATIX_LITE_AWB, /* 70 */
183366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_CHROMATIX_LITE_AF,
183466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_CHROMATIX_LITE_ASD,
183566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_EXIF_DEBUG_AE,
183666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_EXIF_DEBUG_AWB,
183766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_EXIF_DEBUG_AF,
183866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_EXIF_DEBUG_ASD,
183966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_EXIF_DEBUG_STATS,
184066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_GET_CHROMATIX,
1841d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_INTF_PARM_SET_RELOAD_CHROMATIX,
1842d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_INTF_PARM_SET_AUTOFOCUSTUNING, /* 80 */
184366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_GET_AFTUNE,
184466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_SET_RELOAD_AFTUNE,
184566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_SET_VFE_COMMAND,
184666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_SET_PP_COMMAND,
184766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_TINTLESS,
184866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_LONGSHOT_ENABLE,
184966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_RDI_MODE,
185066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_CDS_MODE,
1851d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_INTF_PARM_TONE_MAP_MODE,
1852d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_INTF_PARM_CAPTURE_FRAME_CONFIG, /* 90 */
185366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_DUAL_LED_CALIBRATION,
1854d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_INTF_PARM_ADV_CAPTURE_MODE,
185566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
185666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* stream based parameters */
185766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_DO_REPROCESS,
185866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_SET_BUNDLE,
185966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_STREAM_FLIP,
186066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_GET_OUTPUT_CROP,
186166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
186266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_EZTUNE_CMD,
186366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_INT_EVT,
186466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
186566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* specific to HAL3 */
186666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Whether the metadata maps to a valid frame number */
186766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FRAME_NUMBER_VALID,
186866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Whether the urgent metadata maps to a valid frame number */
186966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_URGENT_FRAME_NUMBER_VALID,
187066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Whether the stream buffer corresponding this frame is dropped or not */
187166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FRAME_DROPPED, /* 100 */
187266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* COLOR CORRECTION.*/
187366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_COLOR_CORRECT_MODE,
187466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* A transform matrix to chromatically adapt pixels in the CIE XYZ (1931)
187566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * color space from the scene illuminant to the sRGB-standard D65-illuminant. */
187666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_COLOR_CORRECT_TRANSFORM,
187766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*Color channel gains in the Bayer raw domain in the order [RGeGoB]*/
187866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_COLOR_CORRECT_GAINS,
187966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*The best fit color transform matrix calculated by the stats*/
188066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_PRED_COLOR_CORRECT_TRANSFORM,
188166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*The best fit color channels gains calculated by the stats*/
188266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_PRED_COLOR_CORRECT_GAINS,
188366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* CONTROL */
188466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* A frame counter set by the framework. Must be maintained unchanged in
188566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * output frame. */
188666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FRAME_NUMBER,
188766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* A frame counter set by the framework. Must be maintained unchanged in
188866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * output frame. */
188966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_URGENT_FRAME_NUMBER,
189066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*Number of streams and size of streams in current configuration*/
189166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_STREAM_INFO,
189266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* List of areas to use for metering */
189366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AEC_ROI,
189466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Whether the HAL must trigger precapture metering.*/
189566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AEC_PRECAPTURE_TRIGGER, /* 110 */
189666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* The ID sent with the latest CAMERA2_TRIGGER_PRECAPTURE_METERING call */
189766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Current state of AE algorithm */
189866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AEC_STATE,
189966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* List of areas to use for focus estimation */
190066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AF_ROI,
190166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Whether the HAL must trigger autofocus. */
190266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AF_TRIGGER,
190366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Current state of AF algorithm */
190466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AF_STATE,
190566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* List of areas to use for illuminant estimation */
190666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AWB_REGIONS,
190766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Current state of AWB algorithm */
190866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AWB_STATE,
190966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*Whether black level compensation is frozen or free to vary*/
191066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_BLACK_LEVEL_LOCK,
191166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Information to 3A routines about the purpose of this capture, to help
191266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * decide optimal 3A strategy */
191366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_CAPTURE_INTENT,
191466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* DEMOSAIC */
191566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Controls the quality of the demosaicing processing */
191666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_DEMOSAIC,
191766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* EDGE */
191866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Operation mode for edge enhancement */
191966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_EDGE_MODE, /* 120 */
192066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Control the amount of edge enhancement applied to the images.*/
192166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* 1-10; 10 is maximum sharpening */
192266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SHARPNESS_STRENGTH,
192366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* FLASH */
192466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Power for flash firing/torch, 10 is max power; 0 is no flash. Linear */
192566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FLASH_POWER,
192666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Firing time of flash relative to start of exposure, in nanoseconds*/
192766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FLASH_FIRING_TIME,
192866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Current state of the flash unit */
192966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FLASH_STATE,
193066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* GEOMETRIC */
193166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Operating mode of geometric correction */
193266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_GEOMETRIC_MODE,
193366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Control the amount of shading correction applied to the images */
193466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_GEOMETRIC_STRENGTH,
193566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* HOT PIXEL */
193666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Set operational mode for hot pixel correction */
193766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_HOTPIXEL_MODE,
193866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* LENS */
193966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Size of the lens aperture */
194066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LENS_APERTURE,
194166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* State of lens neutral density filter(s) */
194266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LENS_FILTERDENSITY,
194366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Lens optical zoom setting */
194466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LENS_FOCAL_LENGTH, /* 130 */
194566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Distance to plane of sharpest focus, measured from frontmost surface
194666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * of the lens */
194766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LENS_FOCUS_DISTANCE,
194866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* The range of scene distances that are in sharp focus (depth of field) */
194966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LENS_FOCUS_RANGE,
195066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*Whether the hal needs to output the lens shading map*/
195166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LENS_SHADING_MAP_MODE,
195266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Current lens status */
195366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LENS_STATE,
195466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* NOISE REDUCTION */
195566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Mode of operation for the noise reduction algorithm */
195666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_NOISE_REDUCTION_MODE,
195766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   /* Control the amount of noise reduction applied to the images.
195866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    * 1-10; 10 is max noise reduction */
195966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_NOISE_REDUCTION_STRENGTH,
196066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* SCALER */
196166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Top-left corner and width of the output region to select from the active
196266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * pixel array */
196366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SCALER_CROP_REGION,
196466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* The estimated scene illumination lighting frequency */
196566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SCENE_FLICKER,
196666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* SENSOR */
196766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Duration each pixel is exposed to light, in nanoseconds */
196866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SENSOR_EXPOSURE_TIME,
196966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Duration from start of frame exposure to start of next frame exposure,
197066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * in nanoseconds */
197166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SENSOR_FRAME_DURATION, /* 140 */
197266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Gain applied to image data. Must be implemented through analog gain only
197366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * if set to values below 'maximum analog sensitivity'. */
197466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SENSOR_SENSITIVITY,
197566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Time at start of exposure of first row */
197666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SENSOR_TIMESTAMP,
197766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Duration b/w start of first row exposure and the start of last
197866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       row exposure in nanoseconds */
197966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SENSOR_ROLLING_SHUTTER_SKEW,
198066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* SHADING */
198166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Quality of lens shading correction applied to the image data */
198266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SHADING_MODE,
198366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Control the amount of shading correction applied to the images.
198466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * unitless: 1-10; 10 is full shading compensation */
198566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SHADING_STRENGTH,
198666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* STATISTICS */
198766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* State of the face detector unit */
198866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_STATS_FACEDETECT_MODE,
198966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Operating mode for histogram generation */
199066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_STATS_HISTOGRAM_MODE,
199166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Operating mode for sharpness map generation */
199266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_STATS_SHARPNESS_MAP_MODE,
199366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* A 3-channel sharpness map, based on the raw sensor data,
199466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * If only a monochrome sharpness map is supported, all channels
199566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * should have the same data
199666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     */
199766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_STATS_SHARPNESS_MAP,
199866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
199966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* TONEMAP */
200066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Tone map mode */
200166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_TONEMAP_MODE, /* 150 */
200266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Table mapping RGB input values to output values */
200366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_TONEMAP_CURVES,
200466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
200566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FLASH_MODE,
200666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* 2D array of gain factors for each color channel that was used to
200766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * compensate for lens shading for this frame */
200866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LENS_SHADING_MAP,
200966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_PRIVATE_DATA,
201066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_STATS_DEBUG_MASK,
201166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_STATS_AF_PAAF,
201266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Indicates streams ID of all the requested buffers */
201366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_STREAM_ID,
201466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_FOCUS_BRACKETING,
201566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_FLASH_BRACKETING,
201666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_GET_IMG_PROP, /* 160 */
201766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_JPEG_GPS_COORDINATES,
201866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_JPEG_GPS_PROC_METHODS,
201966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_JPEG_GPS_TIMESTAMP,
202066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_JPEG_ORIENTATION,
202166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_JPEG_QUALITY,
202266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_JPEG_THUMB_QUALITY,
202366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_JPEG_THUMB_SIZE,
202466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
202566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_TEST_PATTERN_DATA,
202666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* DNG file support */
202766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_PROFILE_TONE_CURVE,
202866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_NEUTRAL_COL_POINT, /* 170 */
202966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
203066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* CAC */
203166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_CAC_INFO,
203266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_CAC,
203366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_IMG_HYST_INFO,
203466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
203566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* trigger for all modules to read the debug/log level properties */
203666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_UPDATE_DEBUG_LEVEL,
203766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
203866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* OTP : WB gr/gb */
203966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_OTP_WB_GRGB,
204066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* LED override for EZTUNE */
204166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LED_MODE_OVERRIDE,
204266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* auto lens position info */
204366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FOCUS_POSITION,
204466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Manual exposure time */
204566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_EXPOSURE_TIME,
204666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* AWB meta data info */
204766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AWB_INFO,
204866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Manual lens position info */
204966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_MANUAL_FOCUS_POS, /* 180 */
205066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Manual White balance gains */
205166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_WB_MANUAL,
205266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Offline Data Overwrite */
205366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_HW_DATA_OVERWRITE,
205466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* IMG LIB reprocess debug section */
205566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_IMGLIB, /* cam_intf_meta_imglib_t */
205666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* OEM specific parameters */
205766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_CUSTOM,
205866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* parameters added for related cameras */
205966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* fetch calibration info for related cam subsystem */
206066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_RELATED_SENSORS_CALIBRATION,
206166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* focal length ratio info */
206266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_AF_FOCAL_LENGTH_RATIO,
206366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* crop for binning & FOV adjust */
206466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SNAP_CROP_INFO_SENSOR,
206566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* crop for trimming edge pixels */
206666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SNAP_CROP_INFO_CAMIF,
206766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* crop for FOV adjust and zoom */
206866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SNAP_CROP_INFO_ISP,
206966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* crop for image-stabilization and zoom */
207066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_SNAP_CROP_INFO_CPP, /* 190 */
207166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* parameter for enabling DCRF */
207266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_DCRF,
207366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* metadata tag for DCRF info */
207466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_DCRF,
207566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* FLIP mode parameter*/
207666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_FLIP,
207766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*Frame divert info from ISP*/
207866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_BUF_DIVERT_INFO,
207966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Use AV timer */
208066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_USE_AV_TIMER,
208166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR,
208266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Special event to request stream frames*/
208366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_REQUEST_FRAMES,
208466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Special event to request operational mode*/
208566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_REQUEST_OPS_MODE,
208666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*Black level parameters*/
208766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LDAF_EXIF,
208866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_BLACK_LEVEL_SOURCE_PATTERN,
208966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_BLACK_LEVEL_APPLIED_PATTERN, /* 200 */
209066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_CDS_DATA,
209166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*3A low light level information*/
209266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_LOW_LIGHT,
209366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* dynamic feature detection */
209466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_IMG_DYN_FEAT, /* 200 */
209566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*Parameter entry to communicate manual
209666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    capture type*/
209766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_MANUAL_CAPTURE_TYPE,
209866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /*AF state change detected by AF module*/
209966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_AF_STATE_TRANSITION,
210066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* face recognition */
210166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FACE_RECOG,
210266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* face blink detection */
210366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FACE_BLINK,
210466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* face gaze detection */
210566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FACE_GAZE,
210666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* face smile detection */
210766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FACE_SMILE,
210866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* face landmark detection */
210966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FACE_LANDMARK, /* 210 */
211066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* face contour detection */
211166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_FACE_CONTOUR,
211266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Whether EIS is enabled */
211366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_VIDEO_STAB_MODE,
211466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Touch exposure compensation (EV) status */
211566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_META_TOUCH_AE_RESULT,
211666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Param for updating initial exposure index value*/
211766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_INITIAL_EXPOSURE_INDEX,
2118b9ca3356110780d1f0a29cc09e8e7558837afe45Ranjith Kagathi Ananda    /* Gain applied post raw captrue.
2119b9ca3356110780d1f0a29cc09e8e7558837afe45Ranjith Kagathi Ananda       ISP digital gain */
2120b9ca3356110780d1f0a29cc09e8e7558837afe45Ranjith Kagathi Ananda    CAM_INTF_META_ISP_SENSITIVITY,
2121d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    /* Param for enabling instant aec*/
2122d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_INTF_PARM_INSTANT_AEC,
212366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_PARM_MAX
212466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_intf_parm_type_t;
212566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
212666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
212766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t forced;
212866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    union {
212966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      uint32_t force_linecount_value;
213066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      float    force_gain_value;
213166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      float    force_snap_exp_value;
213266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      float    force_exp_value;
213366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      uint32_t force_snap_linecount_value;
213466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin      float    force_snap_gain_value;
213566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    } u;
213666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_ez_force_params_t;
213766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
213866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
213966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float cam_black_level[4];
214066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_black_level_metadata_t;
214166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
214266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
214366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_STATUS,
214466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_AEC_ENABLE,
214566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_AWB_ENABLE,
214666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_AF_ENABLE,
214766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_AEC_FORCE_LINECOUNT,
214866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_AEC_FORCE_GAIN,
214966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_AEC_FORCE_EXP,
215066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_AEC_FORCE_SNAP_LC,
215166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_AEC_FORCE_SNAP_GAIN,
215266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_AEC_FORCE_SNAP_EXP,
215366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_AWB_MODE,
215466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_EZTUNE_CMD_AWB_FORCE_DUAL_LED_IDX,
215566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_eztune_cmd_type_t;
215666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
215766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
215866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  cam_eztune_cmd_type_t   cmd;
215966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  union {
216066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t running;
216166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t aec_enable;
216266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t awb_enable;
216366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t af_enable;
216466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_ez_force_params_t ez_force_param;
216566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t awb_mode;
216666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t ez_force_dual_led_idx;
216766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  } u;
216866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_eztune_cmd_data_t;
216966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
217066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
217166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/*****************************************************************************
217266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin *                 Code for HAL3 data types                                  *
217366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin ****************************************************************************/
217466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
217566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTF_METADATA_MAX
217666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_intf_metadata_type_t;
217766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
217866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
217966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTENT_CUSTOM,
218066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTENT_PREVIEW,
218166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTENT_STILL_CAPTURE,
218266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTENT_VIDEO_RECORD,
218366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTENT_VIDEO_SNAPSHOT,
218466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTENT_ZERO_SHUTTER_LAG,
218566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_INTENT_MAX,
218666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_intent_t;
218766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
218866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
218966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Full application control of pipeline. All 3A routines are disabled,
219066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * no other settings in android.control.* have any effect */
219166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CONTROL_OFF,
219266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Use settings for each individual 3A routine. Manual control of capture
219366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * parameters is disabled. All controls in android.control.* besides sceneMode
219466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * take effect */
219566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CONTROL_AUTO,
219666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Use specific scene mode. Enabling this disables control.aeMode,
219766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * control.awbMode and control.afMode controls; the HAL must ignore those
219866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * settings while USE_SCENE_MODE is active (except for FACE_PRIORITY scene mode).
219966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * Other control entries are still active. This setting can only be used if
220066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * availableSceneModes != UNSUPPORTED. TODO: Should we remove this and handle this
220166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * in HAL ?*/
220266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CONTROL_USE_SCENE_MODE,
220366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CONTROL_MAX
220466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_control_mode_t;
220566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
220666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
220766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Use the android.colorCorrection.transform matrix to do color conversion */
220866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_COLOR_CORRECTION_TRANSFORM_MATRIX,
220966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Must not slow down frame rate relative to raw bayer output */
221066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_COLOR_CORRECTION_FAST,
221166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Frame rate may be reduced by high quality */
221266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_COLOR_CORRECTION_HIGH_QUALITY,
221366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_color_correct_mode_t;
221466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
221566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
221666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_COLOR_CORRECTION_ABERRATION_OFF,
221766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_COLOR_CORRECTION_ABERRATION_FAST,
221866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_COLOR_CORRECTION_ABERRATION_HIGH_QUALITY,
221966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_COLOR_CORRECTION_ABERRATION_MAX
222066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_aberration_mode_t;
222166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
222266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CC_MATRIX_ROWS 3
222366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CC_MATRIX_COLS 3
222466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
222566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
222666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* 3x3 float matrix in row-major order. each element is in range of (0, 1) */
222766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rational_type_t transform_matrix[CC_MATRIX_ROWS][CC_MATRIX_COLS];
222866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_color_correct_matrix_t;
222966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
223066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_FOCAL_LENGTHS_MAX     1
223166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_APERTURES_MAX         1
223266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_FILTER_DENSITIES_MAX  1
223366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_MAX_MAP_HEIGHT        6
223466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_MAX_MAP_WIDTH         6
223566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_MAX_SHADING_MAP_WIDTH 17
223666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_MAX_SHADING_MAP_HEIGHT 13
223766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_MAX_TONEMAP_CURVE_SIZE    512
223866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_MAX_FLASH_BRACKETING    5
223966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
224066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
224166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* A 1D array of pairs of floats.
224266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * Mapping a 0-1 input range to a 0-1 output range.
224366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * The input range must be monotonically increasing with N,
224466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * and values between entries should be linearly interpolated.
224566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * For example, if the array is: [0.0, 0.0, 0.3, 0.5, 1.0, 1.0],
224666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * then the input->output mapping for a few sample points would be:
224766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * 0 -> 0, 0.15 -> 0.25, 0.3 -> 0.5, 0.5 -> 0.64 */
224866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float tonemap_points[CAM_MAX_TONEMAP_CURVE_SIZE][2];
224966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_tonemap_curve_t;
225066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
225166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
225266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   size_t tonemap_points_cnt;
225366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   cam_tonemap_curve_t curves[3];
225466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_rgb_tonemap_curves;
225566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
225666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
225766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   size_t tonemap_points_cnt;
225866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   cam_tonemap_curve_t curve;
225966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_profile_tone_curve;
226066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
226166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define NEUTRAL_COL_POINTS 3
226266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
226366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
226466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rational_type_t neutral_col_point[NEUTRAL_COL_POINTS];
226566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_neutral_col_point_t;
226666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
226766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
226866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    OFF,
226966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    FAST,
227066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    QUALITY,
227166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_quality_preference_t;
227266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
227366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
227466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_CTRL_OFF,
227566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_CTRL_SINGLE,
227666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_CTRL_TORCH
227766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_flash_ctrl_t;
227866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
227966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
228066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t frame_dropped; /*  This flag indicates whether any stream buffer is dropped or not */
228166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_stream_ID_t cam_stream_ID; /* if dropped, Stream ID of dropped streams */
228266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_frame_dropped_t;
228366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
228466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
228566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t ae_mode;
228666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t awb_mode;
228766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t af_mode;
228866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_scene_mode_overrides_t;
228966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
229066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
229166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t left;
229266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t top;
229366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t width;
229466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t height;
229566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_crop_region_t;
229666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
229766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
229866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Estimated sharpness for each region of the input image.
229966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * Normalized to be between 0 and maxSharpnessMapValue.
230066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * Higher values mean sharper (better focused) */
230166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t sharpness[CAM_MAX_MAP_WIDTH][CAM_MAX_MAP_HEIGHT];
230266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_sharpness_map_t;
230366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
230466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
230566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   float lens_shading[4*CAM_MAX_SHADING_MAP_HEIGHT*CAM_MAX_SHADING_MAP_WIDTH];
230666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_lens_shading_map_t;
230766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
230866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
230966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t min_value;
231066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t max_value;
231166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t def_value;
231266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t step;
231366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_control_range_t;
231466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
231566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_NONE            0U
231666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_FACE_DETECTION (1U<<0)
231766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_DENOISE2D      (1U<<1)
231866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_CROP           (1U<<2)
231966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_ROTATION       (1U<<3)
232066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_FLIP           (1U<<4)
232166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_HDR            (1U<<5)
232266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_REGISTER_FACE  (1U<<6)
232366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_SHARPNESS      (1U<<7)
232466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_VIDEO_HDR      (1U<<8)
232566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_CAC            (1U<<9)
232666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_SCALE          (1U<<10)
232766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_EFFECT         (1U<<11)
232866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_UBIFOCUS       (1U<<12)
232966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_CHROMA_FLASH   (1U<<13)
233066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_OPTIZOOM       (1U<<14)
233166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_SENSOR_HDR     (1U<<15)
233266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_REFOCUS        (1U<<16)
233366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_CPP_TNR        (1U<<17)
233466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_RAW_PROCESSING (1U<<18)
233566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_TRUEPORTRAIT   (1U<<19)
233666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_LLVD           (1U<<20)
233766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_DIS20          (1U<<21)
233866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_STILLMORE      (1U<<22)
233966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_DCRF           (1U<<23)
234066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_CDS            (1U<<24)
234166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_EZTUNE         (1U<<25)
234266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_DSDN           (1U<<26) //Special CDS in CPP block
234366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_SW2D           (1U<<27)
234466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_OEM_FEATURE_1               (1U<<28)
234566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_OEM_FEATURE_2               (1U<<29)
234666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QTI_FEATURE_SW_TNR          (1U<<30)
234766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_METADATA_PROCESSING (1U<<31)
234866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_MAX            32
234966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_PP_SUPERSET    (CAM_QCOM_FEATURE_DENOISE2D|CAM_QCOM_FEATURE_CROP|\
235066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                         CAM_QCOM_FEATURE_ROTATION|CAM_QCOM_FEATURE_SHARPNESS|\
235166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                         CAM_QCOM_FEATURE_SCALE|CAM_QCOM_FEATURE_CAC|\
235266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                         CAM_QCOM_FEATURE_EZTUNE|CAM_QCOM_FEATURE_CPP_TNR|\
235366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin                                         CAM_QCOM_FEATURE_LLVD)
235466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
235566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_PP_PASS_1      CAM_QCOM_FEATURE_PP_SUPERSET
235666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_QCOM_FEATURE_PP_PASS_2      CAM_QCOM_FEATURE_SCALE | CAM_QCOM_FEATURE_CROP;
235766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
235866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin// Counter clock wise
235966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
236066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    ROTATE_0 = 1<<0,
236166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    ROTATE_90 = 1<<1,
236266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    ROTATE_180 = 1<<2,
236366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    ROTATE_270 = 1<<3,
236466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_rotation_t;
236566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
236666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
236766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   cam_rotation_t rotation;         /* jpeg rotation */
236866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   cam_rotation_t device_rotation;  /* device rotation */
236966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin   uint32_t streamId;
237066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_rotation_info_t;
237166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
237266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
237366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    FLIP_NONE = 0, /* 00b */
237466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    FLIP_H = 1,    /* 01b */
237566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    FLIP_V = 2,    /* 10b */
237666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    FLIP_V_H = 3,  /* 11b */
237766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_flip_t;
237866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
237966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
238066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t bundle_id;                            /* bundle id */
238166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t num_of_streams;                        /* number of streams in the bundle */
238266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t stream_ids[MAX_STREAM_NUM_IN_BUNDLE]; /* array of stream ids to be bundled */
238366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_bundle_config_t;
238466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
238566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
238666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_ONLINE_REPROCESS_TYPE,    /* online reprocess, frames from running streams */
238766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_OFFLINE_REPROCESS_TYPE,   /* offline reprocess, frames from external source */
238866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_reprocess_type_enum_t;
238966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
239066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
239166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t burst_count;
239266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t min_burst_count;
239366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t max_burst_count;
239466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_still_more_t;
239566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
239666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
239766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t burst_count;
239866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t output_count;
239966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t flash_bracketing[CAM_MAX_FLASH_BRACKETING];
240066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t metadata_index;
240166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_chroma_flash_t;
240266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
240366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
240466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HDR_MODE_SINGLEFRAME,    /* Single frame HDR mode which does only tone mapping */
240566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_HDR_MODE_MULTIFRAME,     /* Multi frame HDR mode which needs two frames with 0.5x and 2x exposure respectively */
240666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_hdr_mode_enum_t;
240766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
240866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
240966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t hdr_enable;
241066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t hdr_need_1x; /* when CAM_QCOM_FEATURE_HDR enabled, indicate if 1x is needed for output */
241166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_hdr_mode_enum_t hdr_mode;
241266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_hdr_param_t;
241366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
241466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
241566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t output_width;
241666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t output_height;
241766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_scale_param_t;
241866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
241966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
242066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t enable;
242166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t burst_count;
242266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t focus_steps[MAX_AF_BRACKETING_VALUES];
242366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t output_count;
242466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t meta_max_size;
242566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_af_bracketing_t;
242666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
242766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
242866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t enable;
242966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t burst_count;
243066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_flash_bracketing_t;
243166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
243266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
243366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t enable;
243466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t burst_count;
243566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t zoom_threshold;
243666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_opti_zoom_t;
243766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
243866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
243966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    size_t meta_max_size;
244066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_true_portrait_t;
244166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
244266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
244366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_OFF,
244466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FLASH_ON
244566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_flash_value_t;
244666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
244766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
244866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_sensor_t sens_type;
244966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_format_t native_format;
245066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_sensor_type_t;
245166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
245266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
245366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t result;
245466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t header_size;
245566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t width;
245666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t height;
245766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t data[0];
245866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_misc_buf_t;
245966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
246066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
246166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t misc_buffer_index;
246266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_misc_buf_param_t;
246366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
246466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
246566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* reprocess feature mask */
246666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t feature_mask;
246766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
246866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* individual setting for features to be reprocessed */
246966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_denoise_param_t denoise2d;
247066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rect_t input_crop;
247166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rotation_t rotation;
247266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t flip;
247366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t sharpness;
247466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t effect;
247566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_hdr_param_t hdr_param;
247666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_scale_param_t scale_param;
247766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
247866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t zoom_level;
247966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_flash_value_t flash_value;
248066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_misc_buf_param_t misc_buf_param;
248166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t burst_cnt;
248266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t cur_reproc_count;
248366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t total_reproc_count;
248466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_pp_feature_config_t;
248566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
248666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
248766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t input_stream_id;
248866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* input source stream type */
248966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_stream_type_t input_stream_type;
249066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_pp_online_src_config_t;
249166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
249266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
249366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* image format */
249466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_format_t input_fmt;
249566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
249666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* image dimension */
249766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_dimension_t input_dim;
249866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
249966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* buffer plane information, will be calc based on stream_type, fmt,
250066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       dim, and padding_info(from stream config). Info including:
250166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin       offset_x, offset_y, stride, scanline, plane offset */
250266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_stream_buf_plane_info_t input_buf_planes;
250366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
250466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* number of input reprocess buffers */
250566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t num_of_bufs;
250666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
250766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* input source type */
250866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_stream_type_t input_type;
250966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
251066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_pp_offline_src_config_t;
251166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
251266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/* reprocess stream input configuration */
251366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
251466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* input source config */
251566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_reprocess_type_enum_t pp_type;
251666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    union {
251766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_pp_online_src_config_t online;
251866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin        cam_pp_offline_src_config_t offline;
251966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    };
252066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
252166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* pp feature config */
252266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_pp_feature_config_t pp_feature_config;
252366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_stream_reproc_config_t;
252466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
252566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
252666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t crop_enabled;
252766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rect_t input_crop;
252866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_crop_param_t;
252966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
253066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
253166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t trigger;
253266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t trigger_id;
253366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_trigger_t;
253466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
253566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
253666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_denoise_param_t denoise2d;
253766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_crop_param_t crop;
253866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t flip;     /* 0 means no flip */
253966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t uv_upsample; /* 0 means no chroma upsampling */
254066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t sharpness; /* 0 means no sharpness */
254166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t effect;
254266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rotation_t rotation;
254366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_rotation_t device_rotation;
254466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_per_frame_pp_config_t;
254566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
254666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
254766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_OPT_STAB_OFF,
254866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_OPT_STAB_ON,
254966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_OPT_STAB_MAX
255066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_optical_stab_modes_t;
255166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
255266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
255366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FILTER_ARRANGEMENT_RGGB,
255466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FILTER_ARRANGEMENT_GRBG,
255566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FILTER_ARRANGEMENT_GBRG,
255666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FILTER_ARRANGEMENT_BGGR,
255766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
255866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Sensor is not Bayer; output has 3 16-bit values for each pixel,
255966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * instead of just 1 16-bit value per pixel.*/
256066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FILTER_ARRANGEMENT_RGB,
256166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    /* Sensor is YUV; SW do not have access to actual RAW,
256266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin     * output is interleaved UYVY */
256366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FILTER_ARRANGEMENT_UYVY,
256466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FILTER_ARRANGEMENT_YUYV,
2565d59d4ae1e81b3b4f85c59b75636580830b3f0833Steve Pfetsch    CAM_FILTER_ARRANGEMENT_Y
256666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_color_filter_arrangement_t;
256766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
256866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
256966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  CAM_AF_LENS_STATE_STATIONARY,
257066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin  CAM_AF_LENS_STATE_MOVING,
257166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_af_lens_state_t;
257266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
257366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
257466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_STATE_INACTIVE,
257566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_STATE_SEARCHING,
257666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_STATE_CONVERGED,
257766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_STATE_LOCKED
257866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_awb_state_t;
257966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
258066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
258166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_UNCALIBRATED,
258266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_APPROXIMATE,
258366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_FOCUS_CALIBRATED
258466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_focus_calibration_t;
258566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
258666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
258766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_TEST_PATTERN_OFF,
258866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_TEST_PATTERN_SOLID_COLOR,
258966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_TEST_PATTERN_COLOR_BARS,
259066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_TEST_PATTERN_COLOR_BARS_FADE_TO_GRAY,
259166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_TEST_PATTERN_PN9,
259266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_TEST_PATTERN_CUSTOM1 = 256
259366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_test_pattern_mode_t;
259466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
259566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
259666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_test_pattern_mode_t mode;
259766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t r;
259866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t gr;
259966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t gb;
260066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    int32_t b;
260166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_test_pattern_data_t;
260266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
260366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
260466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_D50,
260566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_D65,
260666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_D75,
260766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_A,
260866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_CUSTOM_A,
260966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_WARM_FLO,
261066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_COLD_FLO,
261166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_CUSTOM_FLO,
261266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_NOON,
261366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_CUSTOM_DAYLIGHT,
261466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_AWB_INVALID_ALL_LIGHT,
261566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_illuminat_t;
261666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
261766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
261866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    LEGACY_RAW,
261966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    MIPI_RAW,
262066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_opaque_raw_format_t;
262166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
262266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
262366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PERF_NORMAL = 0,
262466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PERF_HIGH,
262566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_PERF_HIGH_PERFORMANCE,
262666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_perf_mode_t;
262766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
262866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
262966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float real_gain;
263066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float lux_idx;
263166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    float exp_time;
263266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_intf_aec_t;
263366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
263466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#define CAM_INTF_AEC_DATA_MAX   (10)
263566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
263666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
263766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint32_t frame_count;
263866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_intf_aec_t aec_data[CAM_INTF_AEC_DATA_MAX];
263966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_intf_meta_imglib_input_aec_t;
264066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
264166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
264266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    cam_intf_meta_imglib_input_aec_t meta_imglib_input_aec;
264366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_intf_meta_imglib_t;
264466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
264566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef struct {
264666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint8_t previewOnly;
264766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    uint64_t value;
264866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_intf_parm_manual_3a_t;
264966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
265066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
265166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_CAPTURE_TYPE_OFF, /*Manual capture mode disabled*/
265266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_CAPTURE_TYPE_1,   /*Normal ZSL capture with limited 3A settings*/
265366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_CAPTURE_TYPE_2,   /*Low light capture mode */
265466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_CAPTURE_TYPE_3,   /*Offline RAW processing */
265566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_MANUAL_CAPTURE_TYPE_4    /*Offline RAW processing with multiple RAW*/
265666f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_manual_capture_type;
265766f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin
265866f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin/***********************************
265966f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin* ENUM definition for custom parameter type
266066f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin************************************/
266166f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjintypedef enum {
266266f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CUSTOM_PARM_EXAMPLE,
266366f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin    CAM_CUSTOM_PARM_MAX,
266466f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin} cam_custom_parm_type;
266566f9976540f830b0090ff2ca557b0364a53f2008Patrick Tjin#endif /* __QCAMERA_TYPES_H__ */
2666