You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1236 lines
42 KiB
1236 lines
42 KiB
/*
|
|
* Copyright (c) Hisilicon Technologies Co., Ltd. 2019-2020. All rights reserved.
|
|
* Description: Define functions api used to adapter function of camera driver
|
|
* Create: 2020-02-17
|
|
* Author: Camera Group
|
|
*/
|
|
#ifndef H_CAMERA_H
|
|
#define H_CAMERA_H
|
|
#include <stdint.h>
|
|
#include "limits.h"
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#endif
|
|
|
|
/* ***********************define public*********************** */
|
|
#define cam_str(s) #s
|
|
#define uapi_camera_ver(a, b, c) "libvendor_camera V" cam_str(a) "." cam_str(b) "." cam_str(c)
|
|
#define UAPI_CAM_INVALID_ID (0xFFFFFFFF)
|
|
#define uapi_camera_fourcc(a, b, c, d) \
|
|
((uint32_t)(a) | ((uint32_t)(b) << 8) | ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24))
|
|
#define UAPI_CAMERA_PIX_FMT_H264 uapi_camera_fourcc('H', '2', '6', '4') /* H264 with start codes */
|
|
#define UAPI_CAMERA_PIX_FMT_NV21 uapi_camera_fourcc('N', 'V', '2', '1') /* 12 Y/CrCb 4:2:0 */
|
|
#define UAPI_CAMERA_PIX_FMT_RGB24 uapi_camera_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */
|
|
#define UAPI_CAMERA_PIX_FMT_JPEG uapi_camera_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG */
|
|
#define UAPI_CAMERA_PIX_FMT_H265 uapi_camera_fourcc('H', '2', '6', '5')
|
|
#define UAPI_CAMERA_PIX_FMT_GREY uapi_camera_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
|
|
#define UAPI_CAMERA_PIX_FMT_MJPEG uapi_camera_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG */
|
|
#define UAPI_CAMERA_PIX_FMT_NV12 uapi_camera_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
|
#define UAPI_CAMERA_PIX_FMT_YUV420 uapi_camera_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */
|
|
#define UAPI_CAMERA_PIX_FMT_YUYV uapi_camera_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */
|
|
#define UAPI_CAMERA_PIX_FMT_BGR32 uapi_camera_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */
|
|
#define UAPI_CAMERA_PIX_FMT_RGB32 uapi_camera_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */
|
|
#define UAPI_CAMERA_PIX_FMT_YVU420 uapi_camera_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */
|
|
|
|
/* ***********************define error*********************** */
|
|
#define UAPI_CAM_ERROR -1
|
|
#define UAPI_CAM_NO_ERROR 0
|
|
#define UAPI_CAM_INVALID_PARA_ERR (int32_t)(0x80A10001)
|
|
#define UAPI_CAM_NULL_PTR_ERR (int32_t)(0x80A10002)
|
|
#define UAPI_CAM_DEV_OPEN_ERR (int32_t)(0x80A10003)
|
|
#define UAPI_CAM_DEV_CLOSE_ERR (int32_t)(0x80A10004)
|
|
#define UAPI_CAM_BUFF_SHORT_ERR (int32_t)(0x80A10005)
|
|
#define UAPI_CAM_NO_INIT_ERR (int32_t)(0x80A10006)
|
|
#define UAPI_CAM_UNSUPPORT_ERR (int32_t)(0x80A10007)
|
|
#define UAPI_CAM_CREATE_ERR (int32_t)(0x80A10008)
|
|
#define UAPI_CAM_DESTROY_ERR (int32_t)(0x80A10009)
|
|
#define UAPI_CAM_IOCTL_ERR (int32_t)(0x80A10010)
|
|
#define UAPI_CAM_INVALID_OPT_ERR (int32_t)(0x80A10011)
|
|
#define UAPI_CAM_TIMEOUT_ERR (int32_t)(0x80A10012)
|
|
#define UAPI_CAM_MEM_ERR (int32_t)(0x80A10013)
|
|
#define UAPI_CAM_NO_EXIST (int32_t)(0x80A10014)
|
|
#define UAPI_CAM_DQDATA_ERR (int32_t)(0x80A10015)
|
|
|
|
/* ***********************define limitations*********************** */
|
|
#define UAPI_CAMERA_DESC_MAX_LEN 32
|
|
|
|
#define UAPI_CAMERA_DEVICE_MAX_NUM 8
|
|
#define UAPI_CAMERA_STREAM_MAX_NUM 10
|
|
#define UAPI_CAMERA_STREAM_BUFF_MAX_NUM 8
|
|
|
|
#define UAPI_CAMERA_DEV_PATH_MAX_LEN 64
|
|
|
|
#define UAPI_CAMERA_CTRL_MAX_DIMS 4
|
|
#define UAPI_CAMERA_CTRL_NAME_MAX_LEN 32
|
|
|
|
#define UAPI_CAMERA_META_QUERY_BUFFER_MAX_LEN 32
|
|
#define UAPI_CAMERA_META_TEMPERATURE_MAX_LEN 16
|
|
#define UAPI_CAMERA_META_JPEG_THUMB_MAX_NUM 20
|
|
#define UAPI_CAMERA_META_SENSOR_AVTIVE_MAX_NUM 20
|
|
#define UAPI_CAMERA_META_RATE_MAX_NUM 10
|
|
#define UAPI_CAMERA_META_AI_RESULT_MAX_LEN 1024
|
|
#define UAPI_CAMERA_META_EXCPT_VERS_MAX_LEN 32
|
|
#define UAPI_CAMERA_META_CONFIG_BUFFER_MAX_LEN 64
|
|
#define UAPI_CAMERA_CUSTOM_CONFIG_BUFFER_MAX_LEN 4096
|
|
#define UAPI_CAMERA_UPDATE_PATH_MAX 256
|
|
|
|
/* ***********************Define AE meta options*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_AE_MODE_OFF,
|
|
UAPI_CAMERA_CONTROL_AE_MODE_ON,
|
|
UAPI_CAMERA_CONTROL_AE_MODE_ON_AUTO_FLASH,
|
|
UAPI_CAMERA_CONTROL_AE_ON_ALWAYS_FLASH,
|
|
UAPI_CAMERA_CONTROL_AE_ON_AUTO_FLASH_REDEYE,
|
|
UAPI_CAMERA_CONTROL_AE_ON_EXTERNAL_FLASH,
|
|
} uapi_camera_control_ae_mode;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_AE_LOCK_OFF,
|
|
UAPI_CAMERA_CONTROL_AE_LOCK_ON,
|
|
} uapi_camera_control_ae_lock_mode;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE,
|
|
UAPI_CAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_START,
|
|
UAPI_CAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL,
|
|
} uapi_camera_control_ae_precap_trigger_mode;
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_AE_ANTIBANDING_MODE_OFF,
|
|
UAPI_CAMERA_CONTROL_AE_ANTIBANDING_MODE_50HZ,
|
|
UAPI_CAMERA_CONTROL_AE_ANTIBANDING_MODE_60HZ,
|
|
UAPI_CAMERA_CONTROL_AE_ANTIBANDING_MODE_AUTO
|
|
} uapi_camera_control_ae_antibanding_mode;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_AE_STATE_INACTIVE,
|
|
UAPI_CAMERA_AE_STATE_SEARCHING,
|
|
UAPI_CAMERA_AE_STATE_CONVERGED,
|
|
UAPI_CAMERA_AE_STATE_LOCKED,
|
|
UAPI_CAMERA_AE_STATE_FLASH_REQUIRED,
|
|
UAPI_CAMERA_AE_STATE_PRECAPTURE,
|
|
} uapi_camera_meta_ae_state;
|
|
|
|
/* ***********************Define AF meta options*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_AF_MODE_OFF,
|
|
UAPI_CAMERA_CONTROL_AF_MODE_AUTO,
|
|
UAPI_CAMERA_CONTROL_AF_MODE_MACRO,
|
|
UAPI_CAMERA_CONTROL_AF_MODE_CONTINUOUS_VIDEO,
|
|
UAPI_CAMERA_CONTROL_AF_MODE_CONTINUOUS_PICTURE,
|
|
UAPI_CAMERA_CONTROL_AF_MODE_EDOF,
|
|
} uapi_camera_control_af_mode;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_AF_TRIGGER_IDLE,
|
|
UAPI_CAMERA_CONTROL_AF_TRIGGER_START,
|
|
UAPI_CAMERA_CONTROL_AF_TRIGGER_CANCEL,
|
|
} uapi_camera_control_af_trigger_mode;
|
|
typedef enum {
|
|
UAPI_CAMERA_AF_STATE_INACTIVE,
|
|
UAPI_CAMERA_AF_STATE_PASSIVE_SCAN,
|
|
UAPI_CAMERA_AF_STATE_PASSIVE_FOCUSED,
|
|
UAPI_CAMERA_AF_STATE_ACTIVE_SCAN,
|
|
UAPI_CAMERA_AF_STATE_FOCUSED_LOCKED,
|
|
UAPI_CAMERA_AF_STATE_NOT_FOCUSED_LOCKED,
|
|
UAPI_CAMERA_AF_STATE_PASSIVE_UNFOCUSED,
|
|
} uapi_camera_meta_af_state;
|
|
|
|
/* ***********************Define AWB meta options*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_AWB_MODE_OFF,
|
|
UAPI_CAMERA_CONTROL_AWB_MODE_AUTO,
|
|
UAPI_CAMERA_CONTROL_AWB_MODE_INCANDESCENT,
|
|
UAPI_CAMERA_CONTROL_AWB_MODE_FLUORESCENT,
|
|
UAPI_CAMERA_CONTROL_AWB_MODE_WARM_FLUORESCENT,
|
|
UAPI_CAMERA_CONTROL_AWB_MODE_DAYLIGHT,
|
|
UAPI_CAMERA_CONTROL_AWB_MODE_CLOUDY_DAYLIGHT,
|
|
UAPI_CAMERA_CONTROL_AWB_MODE_TWILIGHT,
|
|
UAPI_CAMERA_CONTROL_AWB_MODE_SHADE
|
|
} uapi_camera_control_awb_mode;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_AWB_LOCK_OFF,
|
|
UAPI_CAMERA_CONTROL_AWB_LOCK_ON,
|
|
} uapi_camera_control_awb_lock_mode;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_AWB_STATE_INACTIVE,
|
|
UAPI_CAMERA_AWB_STATE_SEARCHING,
|
|
UAPI_CAMERA_AWB_STATE_CONVERGED,
|
|
UAPI_CAMERA_AWB_STATE_LOCKED,
|
|
} uapi_camera_meta_awb_state;
|
|
|
|
/* ***********************Define 3A global ctrl meta options*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_MODE_OFF,
|
|
UAPI_CAMERA_CONTROL_MODE_AUTO,
|
|
UAPI_CAMERA_CONTROL_MODE_USE_SCENE_MODE,
|
|
UAPI_CAMERA_CONTROL_MODE_OFF_KEEP_STATE,
|
|
} uapi_camera_control_3a_global_mode;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_DISABLED,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_FACE_PRIORITY,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_ACTION,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_PORTRAIT,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_LANDSCAPE,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_NIGHT,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_NIGHT_PORTRAIT,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_THEATRE,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_BEACH,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_SNOW,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_SUNSET,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_STEADYPHOTO,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_FIREWORKS,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_SPORTS,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_PARTY,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_CANDLELIGHT,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_BARCODE,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_HIGH_SPEED_VIDEO,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_HDR,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_FACE_PRIORITY_LOW_LIGHT,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_DEVICE_CUSTOM_START,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE_DEVICE_CUSTOM_END,
|
|
} uapi_camera_control_scene_mode;
|
|
|
|
/* ***********************Define flash meta options*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_FLASH_MODE_OFF,
|
|
UAPI_CAMERA_CONTROL_FLASH_MODE_SINGLE,
|
|
UAPI_CAMERA_CONTROL_FLASH_MODE_TORCH
|
|
} uapi_camera_control_flash_mode;
|
|
|
|
/* ***********************Define lens facing options*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_LENS_FACING_FRONT,
|
|
UAPI_CAMERA_LENS_FACING_BACK,
|
|
UAPI_CAMERA_LENS_FACING_EXTERNAL,
|
|
} uapi_camera_lens_facing_direction;
|
|
/* ***********************Define jpeg options*********************** */
|
|
typedef struct {
|
|
uint16_t width;
|
|
uint16_t height;
|
|
} uapi_camera_resolution_param;
|
|
|
|
typedef struct {
|
|
uapi_camera_resolution_param resolution[UAPI_CAMERA_META_JPEG_THUMB_MAX_NUM];
|
|
int32_t array_num;
|
|
} uapi_camera_jpeg_available_thumb_sizes;
|
|
|
|
/* ***********************Define zoom meta options*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_SCALER_CROPPING_TYPE_CENTER_ONLY,
|
|
UAPI_CAMERA_CONTROL_SCALER_CROPPING_TYPE_FREEFORM,
|
|
} uapi_camera_control_scaler_cropping_type;
|
|
|
|
/* ***********************Define color aberration meta options*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_COLOR_CORRECTION_ABERRATION_MODE_OFF,
|
|
UAPI_CAMERA_CONTROL_COLOR_CORRECTION_ABERRATION_MODE_FAST,
|
|
UAPI_CAMERA_CONTROL_COLOR_CORRECTION_ABERRATION_MODE_HIGH_QUALITY,
|
|
} uapi_camera_control_color_aberration_mode;
|
|
|
|
/* ***********************Define noise reduction meta options*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_NOISE_REDUCTION_MODE_OFF,
|
|
UAPI_CAMERA_CONTROL_NOISE_REDUCTION_MODE_FAST,
|
|
UAPI_CAMERA_CONTROL_NOISE_REDUCTION_MODE_HIGH_QUALITY,
|
|
UAPI_CAMERA_CONTROL_NOISE_REDUCTION_MODE_MINIMAL,
|
|
UAPI_CAMERA_CONTROL_NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG,
|
|
} uapi_camera_control_noise_reduction_mode;
|
|
|
|
/* ***********************Define DIS,OIS meta options*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_CONTROL_VIDEO_STABILIZATION_MODE_OFF,
|
|
UAPI_CAMERA_CONTROL_VIDEO_STABILIZATION_MODE_ON
|
|
}uapi_camera_control_video_stablization_mode;
|
|
|
|
/* ***********************Define other meta options*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_AE_CUR_MODE,
|
|
UAPI_CAMERA_AF_CUR_MODE,
|
|
UAPI_CAMERA_AWB_CUR_MODE,
|
|
UAPI_CAMERA_3A_CUR_MODE_MAX,
|
|
} uapi_camera_3a_mode_record;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_SWITCH_MODE_OFF = 0,
|
|
UAPI_CAMERA_SWITCH_MODE_ON = 1,
|
|
UAPI_CAMERA_SWITCH_MODE_MAX
|
|
} uapi_camera_switch_mode;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_ZOOM_NONE = 0,
|
|
UAPI_CAMERA_ZOOM_RATIO1, // 1.25
|
|
UAPI_CAMERA_ZOOM_RATIO2, // 1.50
|
|
UAPI_CAMERA_ZOOM_RATIO3, // 1.75
|
|
UAPI_CAMERA_ZOOM_RATIO4, // 2.0
|
|
UAPI_CAMERA_ZOOM_MAX
|
|
} uapi_camera_zoom_ratio;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_MODE_NO_SUPPORT = 0,
|
|
UAPI_CAMERA_MODE_SUPPORT = 1
|
|
} uapi_camera_support_mode;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_H264_SVC_MODE_OFF = 0,
|
|
UAPI_CAMERA_H264_SVC_MODE1,
|
|
UAPI_CAMERA_H264_SVC_MODE2,
|
|
UAPI_CAMERA_H264_SVC_MODE_RESERVED
|
|
} uapi_camera_custom_h264_svc_modes;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_H265_SVC_MODE_OFF = 0,
|
|
UAPI_CAMERA_H265_SVC_MODE1,
|
|
UAPI_CAMERA_H265_SVC_MODE_RESERVED
|
|
} uapi_camera_custom_h265_svc_modes;
|
|
|
|
typedef enum {
|
|
FALSE = 0,
|
|
TRUE = 1,
|
|
} uapi_camera_bool;
|
|
|
|
typedef struct {
|
|
int32_t left;
|
|
int32_t top;
|
|
int32_t width;
|
|
int32_t height;
|
|
} uapi_camera_rect;
|
|
|
|
typedef struct {
|
|
uint32_t id;
|
|
uint32_t type;
|
|
char name[UAPI_CAMERA_CTRL_NAME_MAX_LEN];
|
|
int64_t minimum;
|
|
int64_t maximum;
|
|
uint64_t step;
|
|
int32_t default_value;
|
|
uint64_t array_buffer[UAPI_CAMERA_META_QUERY_BUFFER_MAX_LEN];
|
|
uint32_t array_num;
|
|
} uapi_camera_cap_query;
|
|
|
|
typedef struct {
|
|
uint16_t max_qp;
|
|
uint16_t min_qp;
|
|
} uapi_camera_quality_param;
|
|
|
|
/* parameter for Long-term reference frame */
|
|
typedef struct {
|
|
uapi_camera_bool mark_ltr; // FALSE:don't mark ltr, TRUE: mark ltr
|
|
uapi_camera_bool use_ltr; // FALSE: don't use ltr,TRUE: use ltr
|
|
int32_t index_ltr; // index of ltr frame
|
|
} uapi_camera_ltr_param;
|
|
|
|
typedef struct {
|
|
uapi_camera_resolution_param src_reso;
|
|
uint32_t src_frame_rate;
|
|
uapi_camera_resolution_param dest_reso;
|
|
uint32_t dest_frame_rate;
|
|
uint32_t flag_reserved;
|
|
} uapi_camera_sensor_mode;
|
|
|
|
typedef struct {
|
|
uint8_t config_buffer[UAPI_CAMERA_META_CONFIG_BUFFER_MAX_LEN];
|
|
uint32_t valid_len;
|
|
} uapi_camera_meta_config;
|
|
|
|
typedef struct {
|
|
uint8_t config_buffer[UAPI_CAMERA_CUSTOM_CONFIG_BUFFER_MAX_LEN];
|
|
uint32_t valid_len;
|
|
} uapi_camera_custom_config;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_UPDATE_STOP,
|
|
UAPI_CAMERA_UPDATE_START,
|
|
UAPI_CAMERA_UPDATE_OPER_MAX
|
|
} uapi_camera_update_isp_oper_mode;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_UPDATE_NOT_SUPPORT,
|
|
UAPI_CAMERA_UPDATE_OFF_LINE_SUPPORT, /* stop output stream when updating */
|
|
UAPI_CAMERA_UPDATE_ON_LINE_SUPPORT, /* continue to output stream must be stopped when updating */
|
|
UAPI_CAMERA_UPDATE_MODE_MAX,
|
|
} uapi_camera_isp_update_mode;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_UPDATE_CONFIG_BY_PATH,
|
|
UAPI_CAMERA_UPDATE_CONFIG_BY_MEM,
|
|
UAPI_CAMERA_UPDATE_CONFIG_TYPE_MAX
|
|
} uapi_camera_isp_update_config_type;
|
|
|
|
typedef struct {
|
|
uapi_camera_update_isp_oper_mode oper_mode;
|
|
uint8_t fw_path[256];
|
|
uint8_t reserve[60];
|
|
} uapi_camera_update_isp_info;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_AI_START,
|
|
UAPI_CAMERA_AI_STOP,
|
|
UAPI_CAMERA_AI_CONFIG,
|
|
UAPI_CAMERA_AI_CMD_MAX
|
|
} uapi_camera_ai_cmd_type;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_AI_CHILD_MODE,
|
|
UAPI_CAMERA_AI_AUTO_ZOOM,
|
|
UAPI_CAMERA_AI_FITNESS,
|
|
UAPI_CAMERA_AI_GESTURE_CONTROL,
|
|
UAPI_CAMERA_AI_FACE,
|
|
UAPI_CAMERA_AI_FACE_FEATURE,
|
|
UAPI_CAMERA_AI_TYPE_MAX,
|
|
} uapi_camera_ai_type;
|
|
|
|
typedef struct {
|
|
uint32_t len;
|
|
union {
|
|
void *buffer; // this memeory is always managed by provider, make sure to free it after set/callback
|
|
uint64_t align;
|
|
} u;
|
|
} uapi_camera_ai_info;
|
|
|
|
// server send to tv
|
|
typedef struct {
|
|
uapi_camera_ai_cmd_type cmd_type;
|
|
uapi_camera_ai_type ai_type;
|
|
uapi_camera_ai_info err_msg;
|
|
} uapi_camera_ai_cmd_response;
|
|
|
|
// tv send to server
|
|
typedef struct {
|
|
uapi_camera_ai_type ai_type;
|
|
uapi_camera_ai_cmd_type cmd_type;
|
|
uapi_camera_ai_info config;
|
|
} uapi_camera_ai_cmd;
|
|
|
|
typedef struct {
|
|
uint8_t ai_type; // uapi_camera_ai_type
|
|
uint64_t timestamp;
|
|
uint32_t result_len;
|
|
uint8_t result[UAPI_CAMERA_META_AI_RESULT_MAX_LEN];
|
|
} uapi_camera_stream_ai_result;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_FRAME_I = 0,
|
|
UAPI_CAMERA_FRAME_P,
|
|
UAPI_CAMERA_FRAME_B,
|
|
UAPI_CAMERA_FRAME_TYPE_MAX
|
|
} uapi_camera_stream_frame_type;
|
|
|
|
typedef struct {
|
|
char temperature[UAPI_CAMERA_META_TEMPERATURE_MAX_LEN]; /* 39.2C */
|
|
uint8_t is_mark_ltr;
|
|
uint8_t is_use_ltr;
|
|
uapi_camera_stream_frame_type frame_type;
|
|
uint8_t index_ltr;
|
|
uapi_camera_meta_ae_state ae_state;
|
|
uapi_camera_meta_af_state af_state;
|
|
uapi_camera_meta_awb_state awb_state;
|
|
uint8_t ai_result_num; /* output */
|
|
uapi_camera_stream_ai_result ai_result[UAPI_CAMERA_AI_TYPE_MAX];
|
|
} uapi_camera_stream_meta_des;
|
|
|
|
/* ***********************Define common data structures.*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_PREBUILT = 0,
|
|
UAPI_CAMERA_COMMON = UAPI_CAMERA_PREBUILT,
|
|
UAPI_CAMERA_INTERNAL_ISP,
|
|
UAPI_CAMERA_EXTERNAL_ISP,
|
|
UAPI_CAMERA_EXTERNAL_ISP_WS,
|
|
UAPI_CAMERA_COMMON_TB,
|
|
UAPI_CAMERA_COMMON_TB_BACK,
|
|
UAPI_CAMERA_COMMON_TB_V3,
|
|
UAPI_CAMERA_COMMON_TB_V3_REAR,
|
|
UAPI_CAMERA_COMMON_XR,
|
|
|
|
UAPI_CAMERA_IDEA_START = 0x10,
|
|
UAPI_CAMERA_CUSTOM_START = 0x100,
|
|
UAPI_CAMERA_RESERVED_START = 0x200,
|
|
UAPI_CAMERA_TYPE_MAX
|
|
} uapi_camera_device_type;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_TRANS_PATH_USB_UVC = 0,
|
|
UAPI_CAMERA_TRANS_PATH_USB_NET,
|
|
UAPI_CAMERA_TRANS_PATH_HDMI,
|
|
UAPI_CAMERA_TRANS_PATH_MAX
|
|
} uapi_camera_stream_transpath;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_ENCODE_CONTROL_CBR, /* constant bitrate */
|
|
UAPI_CAMERA_ENCODE_CONTROL_ABR, /* average bitrate */
|
|
UAPI_CAMERA_ENCODE_CONTROL_VBR, /* variable bitrate */
|
|
UAPI_CAMERA_ENCODE_CONTROL_MAX
|
|
} uapi_camera_stream_control_type;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_ENCODE_PROFILE_BASE,
|
|
UAPI_CAMERA_ENCODE_PROFILE_MAIN,
|
|
UAPI_CAMERA_ENCODE_PROFILE_HIGH,
|
|
UAPI_CAMERA_ENCODE_PROFILE_TYPE_MAX
|
|
} uapi_camera_stream_profile_type;
|
|
|
|
typedef struct {
|
|
uint32_t camera_id;
|
|
uapi_camera_device_type type;
|
|
char dev_path[UAPI_CAMERA_DEV_PATH_MAX_LEN];
|
|
uapi_camera_bool multi_stream_supported;
|
|
uapi_camera_bool usbuvc_stream_supported;
|
|
uapi_camera_bool usbnet_stream_supported;
|
|
uapi_camera_bool hdmi_stream_supported;
|
|
} uapi_camera_device_basic_cap;
|
|
|
|
typedef struct {
|
|
char description[UAPI_CAMERA_DESC_MAX_LEN]; /* like YUYV 4:2:2 (YUYV) */
|
|
uint32_t pixelformat;
|
|
uint16_t width;
|
|
uint16_t height;
|
|
uint8_t frame_rate_num;
|
|
uint8_t frame_rate[UAPI_CAMERA_META_RATE_MAX_NUM];
|
|
} uapi_camera_stream_format_info;
|
|
|
|
typedef struct {
|
|
uapi_camera_stream_meta_des *meta_buffer;
|
|
uint8_t *stream_buffer;
|
|
uint32_t stream_buffer_len;
|
|
uint32_t stream_valid_len;
|
|
uint64_t timestamp;
|
|
void *priv_data; /* hal use only */
|
|
uint64_t stream_buffer_phyaddr;
|
|
uint8_t mem_flag; /* 0:default, mem provided by hal; 1: mem provided by driver */
|
|
} uapi_camera_stream_buffer;
|
|
|
|
typedef struct {
|
|
uint8_t need_sync; // whether this stream needs to be synced on servers side
|
|
int32_t sync_range_min; // -100 of (-100,100)
|
|
int32_t sync_range_max; // 100 of (-100,100)
|
|
} uapi_camera_stream_sync_param;
|
|
|
|
typedef struct {
|
|
uapi_camera_stream_transpath stream_transpath;
|
|
uapi_camera_stream_sync_param sync;
|
|
uapi_camera_stream_format_info format;
|
|
uapi_camera_custom_h264_svc_modes h264_svc_modes;
|
|
uapi_camera_custom_h265_svc_modes h265_svc_modes;
|
|
uint32_t max_stream_len;
|
|
uint32_t control_type; // uapi_camera_stream_control_type
|
|
uint32_t profile; // uapi_camera_stream_profile_type
|
|
uint32_t bit_rate; // KB
|
|
uint32_t gop; // the interval gap time of I frame
|
|
uint8_t peak; // the peak rate for one frame
|
|
uapi_camera_bool enable_cabac; // enable s encode
|
|
uapi_camera_bool disable_frame; // control stream is output to hal default:FALSE is enable output
|
|
uapi_camera_bool still_capture;
|
|
uapi_camera_bool enable_mirror; // to make stream output as mirror image horizonally
|
|
uapi_camera_bool enable_flip; // to make stream output as mirror image vertically
|
|
uint32_t user_index; // passthrough the user's index of stream
|
|
uint8_t reserved;
|
|
} uapi_camera_stream_init_attr;
|
|
|
|
/* ***********************Define device info*********************** */
|
|
typedef enum {
|
|
// AE
|
|
UAPI_CAMERA_QUERY_AE_AVAILABLE_MODES = 0,
|
|
UAPI_CAMERA_QUERY_AE_COMPENSATION_RANGE,
|
|
UAPI_CAMERA_QUERY_AE_AVAILABLE_ANTIBANDING_MODES,
|
|
UAPI_CAMERA_QUERY_AE_LOCK_AVAILABLE,
|
|
UAPI_CAMERA_CONTROL_AE_MODE,
|
|
UAPI_CAMERA_CONTROL_AE_COMPENSATION,
|
|
UAPI_CAMERA_CONTROL_AE_ANTIBANDING_MODE,
|
|
UAPI_CAMERA_CONTROL_AE_LOCK,
|
|
UAPI_CAMERA_CONTROL_AE_PRECAPTURE_TRIGGER,
|
|
|
|
// AF
|
|
UAPI_CAMERA_QUERY_AF_AVAILABLE_MODES,
|
|
UAPI_CAMERA_CONTROL_AF_MODE,
|
|
UAPI_CAMERA_CONTROL_AF_TRIGGER,
|
|
|
|
// AWB
|
|
UAPI_CAMERA_QUERY_AWB_AVAILABLE_MODES,
|
|
UAPI_CAMERA_QUERY_AWB_LOCK_AVAILABLE,
|
|
UAPI_CAMERA_CONTROL_AWB_MODE,
|
|
UAPI_CAMERA_CONTROL_AWB_LOCK,
|
|
|
|
// 3A GLOABL CTRL
|
|
UAPI_CAMERA_QUERY_3A_GLOBAL_AVAILABLE_MODES,
|
|
UAPI_CAMERA_QUERY_AVAILABLE_SCENE_MODES,
|
|
UAPI_CAMERA_QUERY_3A_CRTLABLE_MAX_NUM_REGIONS,
|
|
UAPI_CAMERA_CONTROL_3A_GLOBAL_MODE,
|
|
UAPI_CAMERA_CONTROL_SCENE_MODE,
|
|
|
|
// flash
|
|
UAPI_CAMERA_QUERY_FLASH_AVALIABLE,
|
|
UAPI_CAMERA_CONTROL_FLASH_MODE,
|
|
|
|
// LENS
|
|
UAPI_CAMERA_QUERY_LENS_MIN_FOCUS_DISTANCE,
|
|
UAPI_CAMERA_QUERY_LENS_FACING,
|
|
UAPI_CAMERA_CONTROL_LENS_FOCUS_DISTANCE,
|
|
|
|
// sensor
|
|
UAPI_CAMERA_QUERY_SENSOR_EXPOSURE_TIME_RANGE,
|
|
UAPI_CAMERA_QUERY_SENSOR_SENSITIVITY_RANGE,
|
|
UAPI_CAMERA_QUERY_SENSOR_ORIENTATION,
|
|
UAPI_CAMERA_CONTROL_SENSOR_EXPOSURE_TIME,
|
|
UAPI_CAMERA_CONTROL_SENSOR_SENSITIVITY,
|
|
|
|
// other aosp requested infos for device
|
|
// JPEG
|
|
UAPI_CAMERA_QUERY_JPEG_MAX_SIZE = 0x100,
|
|
UAPI_CAMERA_QUERY_JPEG_AVAILABLE_THUMBNAIL_SIZES,
|
|
UAPI_CAMERA_CONTROL_JPEG_QUALITY,
|
|
UAPI_CAMERA_CONTROL_JPEG_ORIENTATION,
|
|
UAPI_CAMERA_CONTROL_JPEG_THUMBNAIL_SIZE,
|
|
UAPI_CAMERA_CONTROL_JPEG_THUMBNAIL_QUALITY,
|
|
|
|
// zoom
|
|
UAPI_CAMERA_QUERY_SCALER_CROPPING_TYPE,
|
|
UAPI_CAMERA_QUERY_SCALER_SENSOR_ACTIVE_ARRAY_SIZE,
|
|
UAPI_CAMERA_QUERY_SCALER_MAX_ZOOM_SIZE,
|
|
UAPI_CAMERA_CONTROL_SCALER_CROP_REGION,
|
|
UAPI_CAMERA_CONTROL_SCALER_CROP_RATIO,
|
|
|
|
// corlor correction
|
|
UAPI_CAMERA_QUERY_COLOR_CORRECTION_ABERRATION_AVAILABLE_MODES,
|
|
UAPI_CAMERA_CONTROL_COLOR_CORRECTION_ABERRATION_MODE,
|
|
|
|
// noise
|
|
UAPI_CAMERA_QUERY_NOISE_REDUCTION_AVAILABLE_MODES,
|
|
UAPI_CAMERA_CONTROL_NOISE_REDUCTION_MODE,
|
|
|
|
// DIS,OIS
|
|
UAPI_CAMERA_QUERY_VIDEO_STABILIZATION_AVAILABLE_MODES,
|
|
UAPI_CAMERA_CONTROL_VIDEO_STABILIZATION_MODE,
|
|
|
|
// extention infos for device
|
|
UAPI_CAMERA_QUERY_PRIVATE_ZOOM_RANGE = 0x200,
|
|
UAPI_CAMERA_QUERY_AI_AUTO_ZOOM_SUPPORTED,
|
|
UAPI_CAMERA_QUERY_AI_FITNESS_MODE_SUPPORTED,
|
|
UAPI_CAMERA_QUERY_AI_CHILD_MODE_SUPPORTED,
|
|
UAPI_CAMERA_QUERY_AI_GESTURE_SUPPORTED,
|
|
UAPI_CAMERA_QUERY_TEMPERATURE_QUERY_SUPPORT,
|
|
UAPI_CAMERA_CONTROL_TEMPERATURE_MODE,
|
|
UAPI_CAMERA_QUERY_TEMPERATURE,
|
|
UAPI_CAMERA_CONTROL_OTP,
|
|
UAPI_CAMERA_QUERY_SET_SN_SUPPORT,
|
|
UAPI_CAMERA_CONTROL_SN_ISP,
|
|
UAPI_CAMERA_CONTROL_SN_BOX,
|
|
UAPI_CAMERA_QUERY_ISP_VERSION,
|
|
UAPI_CAMERA_QUERY_INNER_VERSION,
|
|
UAPI_CAMERA_QUERY_SENSOR_INFO,
|
|
UAPI_CAMERA_QUERY_ISP_INFO,
|
|
UAPI_CAMERA_QUERY_PRIVATE_FLASH_STATUS,
|
|
UAPI_CAMERA_SENSOR_SWITCH_MODE,
|
|
UAPI_CAMERA_OSD_SWITCH_MODE,
|
|
UAPI_CAMERA_CUSTOM_QUERY_ODM_CAP,
|
|
UAPI_CAMERA_CUSTOM_ODM_META_CONTROL,
|
|
UAPI_CAMERA_QUERY_ISP_UPDATE_MODE, /* only support get */
|
|
UAPI_CAMERA_IMAGE_PAUSE_SWITCH_MODE,
|
|
UAPI_CAMERA_CONTROL_HUE,
|
|
UAPI_CAMERA_QUERY_H264_SVC_MODES,
|
|
UAPI_CAMERA_QUERY_H265_SVC_MODES,
|
|
UAPI_CAMERA_FORMATS_FILTER_DISABLE,
|
|
UAPI_CAMERA_QUERY_SUPPORT_DYNAMIC_FORMATS,
|
|
|
|
UAPI_CAMERA_DEVICE_INFO_TYPE_MAX
|
|
} uapi_camera_device_info_type;
|
|
|
|
typedef struct {
|
|
uapi_camera_device_info_type op_type;
|
|
union {
|
|
// standand infos for device
|
|
// ae
|
|
uapi_camera_cap_query ae_available_modes;
|
|
uapi_camera_control_ae_mode ae_mode;
|
|
uapi_camera_cap_query ae_compensation_range;
|
|
uint32_t ae_compensation;
|
|
uapi_camera_support_mode ae_lock_support;
|
|
uapi_camera_control_ae_lock_mode ae_lock;
|
|
uapi_camera_control_ae_precap_trigger_mode ae_trigger; // uapi_camera_control_ae_precap_trigger_mode
|
|
uapi_camera_cap_query ae_antibanding_modes;
|
|
uapi_camera_control_ae_antibanding_mode ae_antibanding;
|
|
// af
|
|
uapi_camera_cap_query af_available_modes;
|
|
uapi_camera_control_af_mode af_mode;
|
|
uapi_camera_control_af_trigger_mode af_trigger;
|
|
// awb
|
|
uapi_camera_cap_query awb_available_modes;
|
|
uapi_camera_control_awb_mode awb_mode;
|
|
uapi_camera_support_mode awb_lock_support;
|
|
uapi_camera_control_awb_lock_mode awb_lock; // uapi_camera_control_awb_lock_mode
|
|
// hue
|
|
uapi_camera_cap_query hue_range;
|
|
// 3a global ctrl
|
|
uapi_camera_cap_query ctrl_3a_available_gmodes;
|
|
uapi_camera_control_3a_global_mode gmode_3a;
|
|
uapi_camera_cap_query scene_available_modes;
|
|
uapi_camera_control_scene_mode scene_mode;
|
|
uapi_camera_cap_query max_num_regions_3a;
|
|
// flash
|
|
uapi_camera_support_mode flash_support; // camera flash support
|
|
uapi_camera_control_flash_mode flash_mode;
|
|
// lens
|
|
float lens_min_focus;
|
|
float lens_focus;
|
|
uapi_camera_lens_facing_direction lens_facing;
|
|
// sensor
|
|
uapi_camera_cap_query sensor_exposure_time_range;
|
|
uint32_t sensor_exposure_time;
|
|
uapi_camera_cap_query sensor_iso_range;
|
|
uint64_t sensor_iso;
|
|
int32_t sensor_orientation; // 0,90,180,270
|
|
// other aosp requested infos for device
|
|
// jpeg
|
|
uint32_t jpeg_max_size;
|
|
uint32_t jpeg_quality;
|
|
int32_t jpeg_orientation; // 0,90,180,270
|
|
uapi_camera_jpeg_available_thumb_sizes query_jpeg_thumb_array;
|
|
uapi_camera_jpeg_available_thumb_sizes jpeg_thumb_size;
|
|
uint32_t jpeg_thumb_quality; // 0~100
|
|
// zoom
|
|
uapi_camera_control_scaler_cropping_type scaler_cropping_type; // uapi_camera_control_scaler_cropping_type
|
|
uapi_camera_rect sensor_active_rect;
|
|
uint32_t scaler_max_zoom_size;
|
|
uapi_camera_rect scaler_crop_region;
|
|
uint32_t scaler_ratio;
|
|
// corlor correction
|
|
uapi_camera_cap_query color_aberration_modes;
|
|
uapi_camera_control_color_aberration_mode color_aber_mode;
|
|
// noise
|
|
uapi_camera_cap_query noise_reduction_modes;
|
|
uapi_camera_control_noise_reduction_mode noise_redct_mode;
|
|
// DIS,OIS
|
|
uapi_camera_cap_query video_stablization_modes;
|
|
uapi_camera_control_video_stablization_mode video_stable_mode;
|
|
|
|
// other extention
|
|
uapi_camera_cap_query zoom_range; // min 1.0~2.0 step =0.25, refer to uapi_camera_zoom_ratio
|
|
uapi_camera_support_mode auto_zoom_support;
|
|
uapi_camera_support_mode ai_fintness_support; // get
|
|
uapi_camera_support_mode child_support; // get
|
|
uapi_camera_support_mode gesture_support; // get
|
|
uapi_camera_support_mode temper_support; // get temperature support
|
|
uapi_camera_switch_mode temper_mode; // ON/OFF
|
|
uapi_camera_meta_config temper; // get
|
|
uint32_t otp_value;
|
|
uapi_camera_support_mode sn_config_support; // get sn set support
|
|
uapi_camera_meta_config sn_isp_cfg;
|
|
uapi_camera_meta_config sn_box_cfg;
|
|
uapi_camera_meta_config isp_version;
|
|
uapi_camera_meta_config inner_version;
|
|
uapi_camera_meta_config sensor_info;
|
|
uapi_camera_meta_config isp_info;
|
|
uint32_t priv_flash_state;
|
|
uapi_camera_sensor_mode sensor_mode;
|
|
uapi_camera_switch_mode osd_mode;
|
|
uapi_camera_custom_config odm_cap;
|
|
uapi_camera_custom_config odm_meta_control;
|
|
uapi_camera_isp_update_mode isp_update_mode;
|
|
uapi_camera_switch_mode image_pause_mode;
|
|
uapi_camera_cap_query h264_svc_available_modes;
|
|
uapi_camera_cap_query h265_svc_available_modes;
|
|
uapi_camera_bool formats_filter_disable;
|
|
uapi_camera_cap_query available_support_dynamic_formats;
|
|
} u;
|
|
} uapi_camera_device_info;
|
|
|
|
/* ***********************Define stream info*********************** */
|
|
typedef enum {
|
|
// standand infos for stream
|
|
UAPI_CAMERA_STREAM_INFO_FORMAT_INFO = 0,
|
|
UAPI_CAMERA_STREAM_INFO_BITRATE,
|
|
UAPI_CAMERA_STREAM_INFO_CROPRECT,
|
|
|
|
// AI specific
|
|
UAPI_CAMERA_STREAM_INFO_EXT_CHILD_MODE = 0x100,
|
|
UAPI_CAMERA_STREAM_INFO_EXT_CHILD_MODE_CONFIG, // byte[50]
|
|
UAPI_CAMERA_STREAM_INFO_EXT_AUTO_ZOOM,
|
|
UAPI_CAMERA_STREAM_INFO_EXT_AUTO_ZOOM_CONFIG,
|
|
UAPI_CAMERA_STREAM_INFO_EXT_AI_FITNESS_MODE,
|
|
UAPI_CAMERA_STREAM_INFO_EXT_AI_FITNESS_MODE_CONFIG, // byte[256]
|
|
UAPI_CAMERA_STREAM_INFO_EXT_GESTURE_MODE,
|
|
UAPI_CAMERA_STREAM_INFO_EXT_GESTURE_DETECTION_CONFIG, // byte[256]
|
|
UAPI_CAMERA_STREAM_INFO_EXT_AI_FACE_MODE,
|
|
UAPI_CAMERA_STREAM_INFO_EXT_AI_FACE_MODE_CONFIG, // byte[256]
|
|
UAPI_CAMERA_STREAM_INFO_EXT_AI_FACE_FEATURE_MODE,
|
|
UAPI_CAMERA_STREAM_INFO_EXT_AI_FACE_FEATURE_MODE_CONFIG,
|
|
|
|
// extention infos for stream
|
|
UAPI_CAMERA_STREAM_INFO_EXT_QUERY_BUFLENGTH = 0x200,
|
|
UAPI_CAMERA_STREAM_INFO_EXT_QUALITYPARAM,
|
|
UAPI_CAMERA_STREAM_INFO_EXT_ENABLEREF, /* the state of enable ref */
|
|
UAPI_CAMERA_STREAM_INFO_EXT_ENABLELTR, /* the state of enable LTR */
|
|
UAPI_CAMERA_STREAM_INFO_EXT_LTRPARAM, /* the param of enable LTR */
|
|
UAPI_CAMERA_STREAM_INFO_EXT_IDR, // only set
|
|
UAPI_CAMERA_STREAM_INFO_EXT_DROPFRAME,
|
|
UAPI_CAMERA_STREAM_INFO_EXT_ZOOM,
|
|
UAPI_CAMERA_STREAM_INFO_EXT_SYNC, // set on/off, & the range of sync
|
|
UAPI_CAMERA_STREAM_INFO_DYNAMIC_FORMAT,
|
|
UAPI_CAMERA_STREAM_INFO_H264_SVC_MODE,
|
|
UAPI_CAMERA_STREAM_INFO_H265_SVC_MODE,
|
|
UAPI_CAMERA_STREAM_INFO_MAX_STREAM_LEN,
|
|
UAPI_CAMERA_STREAM_INFO_UPDATE_USER_INDEX,
|
|
|
|
UAPI_CAMERA_STREAM_INFO_TYPE_MAX
|
|
} uapi_camera_stream_info_type;
|
|
|
|
typedef struct {
|
|
uapi_camera_stream_info_type type;
|
|
union {
|
|
// standand infos for stream
|
|
uapi_camera_stream_format_info format_info;
|
|
uint32_t bit_rate;
|
|
uapi_camera_rect crop_param;
|
|
// ai specific
|
|
uapi_camera_switch_mode child_mode; // set
|
|
uapi_camera_ai_info child_cfg; // set
|
|
uapi_camera_switch_mode auto_zoom_mode;
|
|
uapi_camera_ai_info auto_zoom_cfg; // set
|
|
uapi_camera_switch_mode ai_fitness_mode; // set
|
|
uapi_camera_ai_info ai_fintness_cfg; // set
|
|
uapi_camera_switch_mode gesture_mode; // set
|
|
uapi_camera_ai_info gesture_cfg; // set
|
|
uapi_camera_switch_mode ai_face_mode; // set
|
|
uapi_camera_ai_info ai_face_cfg; // set
|
|
uapi_camera_switch_mode ai_face_feature_mode; // set
|
|
uapi_camera_ai_info ai_face_feature_cfg; // set
|
|
|
|
// extention infos for stream
|
|
uint32_t stream_buff_length;
|
|
uapi_camera_quality_param quality_param; // get & set
|
|
uapi_camera_bool enable_ref; // get & set
|
|
uapi_camera_bool enable_ltr; // get & set
|
|
uapi_camera_ltr_param ltr_param; // get & set
|
|
uint32_t drop_frame_type; // get & set
|
|
uapi_camera_zoom_ratio zoom_ratio; // get & set
|
|
uapi_camera_stream_sync_param sync;
|
|
uint32_t dynamic_format;
|
|
uapi_camera_custom_h264_svc_modes h264_svc_mode;
|
|
uapi_camera_custom_h265_svc_modes h265_svc_mode;
|
|
uint32_t max_stream_len;
|
|
uint32_t user_index; // the user's index of stream
|
|
} u;
|
|
} uapi_camera_stream_info;
|
|
|
|
/* ***********************Define extention info*********************** */
|
|
typedef enum {
|
|
UAPI_CAMERA_SENSOR_INIT_EXCEPTION = 1, // CameraRuntimeException
|
|
UAPI_CAMERA_MEMORY_ALLOC_EXCEPTION = 2, // CameraRuntimeException
|
|
UAPI_CAMERA_AI_MODULE_LOAD_EXCEPTION = 3, // CameraAiException
|
|
UAPI_CAMERA_AI_MODULE_CLOSE_EXCEPTION = 4, // CameraAiException
|
|
UAPI_CAMERA_AI_MODULE_RUNTIME_EXCEPTION = 5, // CameraAiException
|
|
UAPI_CAMERA_UPGRADE_FILE_TRANS_EXCEPTION = 6, // CameraUpgradeException
|
|
UAPI_CAMERA_UPGRADE_FILE_CHECK_EXCEPTION = 7, // CameraUpgradeException
|
|
UAPI_CAMERA_UPGRADE_FILE_INSTALL_EXCEPTION = 8, // CameraUpgradeException
|
|
UAPI_CAMERA_UPGRADE_RESULT_STATISTICS = 9,
|
|
UAPI_CAMERA_MOTOR_UP_DOWN_STATISTICS = 10,
|
|
} uapi_camera_exception_type;
|
|
|
|
typedef struct {
|
|
int32_t err_type;
|
|
int32_t status_code;
|
|
char version[UAPI_CAMERA_META_EXCPT_VERS_MAX_LEN];
|
|
} uapi_camera_runtime_exception;
|
|
|
|
typedef struct {
|
|
int32_t err_type;
|
|
int32_t status_code;
|
|
char version[UAPI_CAMERA_META_EXCPT_VERS_MAX_LEN];
|
|
int32_t ai_id;
|
|
} uapi_camera_ai_exception;
|
|
|
|
typedef struct {
|
|
int32_t err_type;
|
|
int32_t status_code;
|
|
char current_version[UAPI_CAMERA_META_EXCPT_VERS_MAX_LEN];
|
|
char target_version[UAPI_CAMERA_META_EXCPT_VERS_MAX_LEN];
|
|
} uapi_camera_upgrade_exception;
|
|
|
|
typedef struct {
|
|
int32_t result;
|
|
char version[UAPI_CAMERA_META_EXCPT_VERS_MAX_LEN];
|
|
} uapi_camera_upgrade_statistics;
|
|
|
|
typedef struct {
|
|
int32_t up_times;
|
|
int32_t down_times;
|
|
} uapi_camera_motor_statistics;
|
|
|
|
typedef struct {
|
|
uapi_camera_exception_type ex_type;
|
|
union {
|
|
uapi_camera_runtime_exception sensor_init_err;
|
|
uapi_camera_runtime_exception mem_alloc_err;
|
|
uapi_camera_ai_exception ai_load_err;
|
|
uapi_camera_ai_exception ai_close_err;
|
|
uapi_camera_ai_exception ai_run_err;
|
|
uapi_camera_upgrade_exception upgrade_trans_err;
|
|
uapi_camera_upgrade_exception upgrade_verify_err;
|
|
uapi_camera_upgrade_exception upgrade_install_err;
|
|
uapi_camera_upgrade_statistics upgrade_statistics;
|
|
uapi_camera_motor_statistics motor_statistics;
|
|
} u;
|
|
} uapi_camera_exception;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_MODULE_AI_CHILD = 0,
|
|
UAPI_CAMERA_MODULE_AI_AUTO_ZOOM,
|
|
UAPI_CAMERA_MODULE_AI_FITNESS,
|
|
UAPI_CAMERA_MODULE_AI_GESTURE,
|
|
UAPI_CAMERA_MODULE_AI_FACE,
|
|
UAPI_CAMERA_MODULE_AI_FACE_FEATURE,
|
|
|
|
UAPI_CAMERA_MODULE_UPDATE = 0x100,
|
|
UAPI_CAMERA_MODULE_OSD,
|
|
UAPI_CAMERA_MODULE_TYPE_MAX,
|
|
} uapi_camera_module_type;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_MODULE_INSTALL_SUCCESS,
|
|
UAPI_CAMERA_MODULE_INSTALL_FAILED,
|
|
UAPI_CAMERA_MODULE_INSTALL_ING,
|
|
UAPI_CAMERA_MODULE_INSTALL_STATE_MAX,
|
|
} uapi_camera_module_install_state;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_MODULE_INSTALL_BY_PATH,
|
|
UAPI_CAMERA_MODULE_INSTALL_BY_MEM,
|
|
UAPI_CAMERA_MODULE_INSTALL_MODE_MAX,
|
|
} uapi_camera_module_install_mode;
|
|
|
|
typedef struct {
|
|
uapi_camera_module_type type;
|
|
uapi_camera_module_install_state state;
|
|
uint32_t progress; /* 0-100 */
|
|
} uapi_camera_module_install_result;
|
|
|
|
typedef struct {
|
|
uint32_t len;
|
|
void *buffer; // this memeory is always managed by provider, make sure to free it after set/callback
|
|
} uapi_camera_module_install_mem;
|
|
|
|
typedef struct {
|
|
uapi_camera_module_type module_type;
|
|
uapi_camera_module_install_mode install_mode;
|
|
uapi_camera_rect rect;
|
|
union {
|
|
char module_file_path[PATH_MAX];
|
|
uapi_camera_module_install_mem module_mem;
|
|
} u;
|
|
} uapi_camera_module_package;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_REPORT_EXCEPTION = 0,
|
|
UAPI_CAMERA_REPORT_AICMD_RESPONSE,
|
|
UAPI_CAMERA_REPORT_MODULE_RESULT,
|
|
UAPI_CAMERA_REPORT_ISP_UPDATE_RESULT,
|
|
UAPI_CAMERA_REPORT_TYPE_MAX,
|
|
} uapi_camera_report_type;
|
|
|
|
typedef struct {
|
|
uapi_camera_report_type report_type;
|
|
union {
|
|
uapi_camera_exception exception;
|
|
uapi_camera_ai_cmd_response ai_cmd_err;
|
|
uapi_camera_module_install_result module_result;
|
|
} u;
|
|
} uapi_camera_report_package;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_HOTPLUG_IN = 0,
|
|
UAPI_CAMERA_HOTPLUG_OUT,
|
|
} uapi_camera_hotplug_type;
|
|
|
|
typedef struct {
|
|
char dev_path[UAPI_CAMERA_DEV_PATH_MAX_LEN];
|
|
uapi_camera_hotplug_type event_type;
|
|
uapi_camera_bool force_cb; /* true: force to callback event , not check */
|
|
} uapi_camera_hotplug_event_msg;
|
|
|
|
typedef enum {
|
|
UAPI_CAMERA_STATE_MONITOR_REQ_DUMP = 0,
|
|
UAPI_CAMERA_STATE_MONITOR_MSG_MAX_LIMIT,
|
|
UAPI_CAMERA_STATE_MONITOR_TYPE_MAX,
|
|
} uapi_camera_state_monitor_type;
|
|
|
|
typedef struct {
|
|
uapi_camera_state_monitor_type monitor_type;
|
|
union {
|
|
int32_t camera_id;
|
|
int32_t msg_max_limit; // MB, <0: no limit
|
|
} u;
|
|
} uapi_camera_state_monitor;
|
|
|
|
/* ***********************Define api*********************** */
|
|
/*
|
|
function: callback data to caller
|
|
params:
|
|
stream_id:
|
|
created by uapi_camera_stream_create
|
|
buffer:
|
|
the buffer including valid data, configured by uapi_camera_stream_request.
|
|
*/
|
|
typedef void (*uapi_camera_stream_callback_func)(uint32_t stream_id, const uapi_camera_stream_buffer *buffer);
|
|
|
|
/*
|
|
function: callback data to caller
|
|
params:
|
|
streamId: created by uapi_camera_stream_create
|
|
buffer: the buffer including report data.
|
|
*/
|
|
typedef void (*uapi_camera_report_callback_func)(uint32_t camera_id, const uapi_camera_report_package *buffer);
|
|
|
|
/*
|
|
function: callback data to caller
|
|
params:
|
|
msg: the message including device name and hotplug type
|
|
*/
|
|
typedef void (*uapi_camera_hotplug_callback_func)(const uapi_camera_hotplug_event_msg *msg);
|
|
|
|
/*
|
|
function: callback state monitor request to caller
|
|
params:
|
|
msg: the message including state monitor request
|
|
*/
|
|
typedef void (*uapi_camera_state_monitor_callback_func)(const uapi_camera_state_monitor *msg);
|
|
|
|
|
|
/*
|
|
function: camera driver init
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_init(void);
|
|
|
|
/*
|
|
function: camera driver deinit
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_deinit(void);
|
|
|
|
/*
|
|
function: get all the available camera devices and their basic info.
|
|
params:
|
|
camera_list:
|
|
alloced by caller, to feed back the camera list
|
|
camera_num:
|
|
input: the alloced element number of camera list
|
|
output: the actual available number
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_device_get_list(uapi_camera_device_basic_cap *camera_list, uint32_t list_num, uint32_t *camera_num);
|
|
int32_t uapi_camera_device_get_basic_cap(uint32_t camera_id, uapi_camera_device_basic_cap *cap);
|
|
|
|
/*
|
|
function: open camera.
|
|
params:
|
|
camera_id:
|
|
got from uapi_camera_device_get_List.
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_device_open(uint32_t camera_id);
|
|
|
|
/*
|
|
function: close camera.
|
|
params:
|
|
camera_id:
|
|
got from uapi_camera_device_get_List.
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_device_close(uint32_t camera_id);
|
|
|
|
/*
|
|
function: get all formats
|
|
params:
|
|
camera_id:
|
|
got from uapi_camera_device_get_List.
|
|
format_array:
|
|
to save all formats
|
|
arrayLength:
|
|
input as the length of format_array
|
|
ouput as the actual number of formats saved in arrayLength;
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_device_get_formats_size(uint32_t camera_id, uint32_t *fromat_num);
|
|
int32_t uapi_camera_device_get_formats(uint32_t camera_id, uapi_camera_stream_format_info *format_array,
|
|
const int32_t array_length);
|
|
|
|
/*
|
|
function: get/set other info
|
|
params:
|
|
cameraId:
|
|
got from uapi_camera_device_get_List.
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_device_get_info(uint32_t camera_id, uapi_camera_device_info *info);
|
|
int32_t uapi_camera_device_set_info(uint32_t camera_id, const uapi_camera_device_info *info);
|
|
|
|
/*
|
|
function: create stream channel
|
|
params:
|
|
camera_id:
|
|
got from uapi_camera_device_get_list.
|
|
attr:
|
|
the stream basic attributions
|
|
stream_id: get the stream id alloced by driver
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_stream_create(uint32_t camera_id, const uapi_camera_stream_init_attr *attr, uint32_t *stream_id);
|
|
|
|
/*
|
|
function: destroy stream channel
|
|
params:
|
|
stream_id:
|
|
got from uapi_camera_stream_create.
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_stream_destroy(uint32_t stream_id);
|
|
|
|
/*
|
|
function: register callback for one specific stream.
|
|
If no callback is set by uapi_camera_stream_request,
|
|
then all the frames of current stream will be sent back from this callback
|
|
params:
|
|
stream_id:
|
|
created by uapi_camera_stream_create
|
|
callback:
|
|
see uapi_camera_stream_callback_func
|
|
priv_data:
|
|
keep reserve private data process
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_stream_register_callback(uint32_t stream_id, const uapi_camera_stream_callback_func callback);
|
|
/*
|
|
function: unregister callback for one specific stream.
|
|
If no callback is set by uapi_camera_stream_request,
|
|
then all the frames of current stream will be sent back from this callback
|
|
params:
|
|
stream_id:
|
|
created by uapi_camera_stream_create
|
|
callback:
|
|
set to NULL
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_stream_unregister_callback(uint32_t stream_id, const uapi_camera_stream_callback_func callback);
|
|
|
|
/*
|
|
function: request stream with specific buffer and callback.
|
|
the parameter "callback" can be set as null.
|
|
params:
|
|
stream_id:
|
|
created by uapi_camera_stream_create
|
|
stream_buffer:
|
|
pointer to the array of stream buffer for saving stream data directly.
|
|
buf_num:
|
|
the number of elements in stream_buffer, max number is UAPI_CAMERA_STREAM_BUFF_MAX_NUM.
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_stream_request(uint32_t stream_id, const uapi_camera_stream_buffer *stream_buffer,
|
|
const uint8_t buffer_num);
|
|
|
|
/*
|
|
function: start tream capture
|
|
params:
|
|
stream_id:
|
|
created by uapi_camera_stream_create
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_stream_on(uint32_t stream_id);
|
|
/*
|
|
function: stop stream capture
|
|
params:
|
|
stream_id:
|
|
created by uapi_camera_stream_create
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_stream_off(uint32_t stream_id);
|
|
|
|
/*
|
|
function: other information exchange, including configuration for stream before start capture
|
|
params:
|
|
stream_id:
|
|
created by uapi_camera_stream_create
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_stream_get_info(uint32_t stream_id, uapi_camera_stream_info *info);
|
|
int32_t uapi_camera_stream_set_info(uint32_t stream_id, const uapi_camera_stream_info *info);
|
|
|
|
int32_t uapi_camera_module_install(uint32_t camera_id, const uapi_camera_module_package *module, uapi_camera_bool sync);
|
|
int32_t uapi_camera_module_uninstall(uint32_t camera_id, const uapi_camera_module_package *module);
|
|
|
|
/*
|
|
function: register callback for reporting AI response or exception to HAL
|
|
params:
|
|
camera_id: created by uapi_camera_stream_create
|
|
callback: see uapi_camera_stream_callback_func
|
|
priv_data: keep reserve private data process
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_report_register_callback(uint32_t camera_id, const uapi_camera_report_callback_func callback,
|
|
const void *priv_data);
|
|
int32_t uapi_camera_report_unregister_callback(uint32_t camera_id, const uapi_camera_report_callback_func callback);
|
|
|
|
/*
|
|
function: register callback for hotplug type to HAL
|
|
params:
|
|
callback: see uapi_camera_hotplug_callback_func
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_hotplug_register_callback(const uapi_camera_hotplug_callback_func callback);
|
|
int32_t uapi_camera_hotplug_unregister_callback();
|
|
|
|
/*
|
|
function: register callback for get state monitor request msg to caller, such as hal
|
|
params:
|
|
callback: see uapi_camera_state_monitor_callback_func
|
|
return:
|
|
UAPI_CAM_NO_ERROR:success
|
|
other:error
|
|
*/
|
|
int32_t uapi_camera_state_monitor_register_callback(const uapi_camera_state_monitor_callback_func callback);
|
|
int32_t uapi_camera_state_monitor_unregister_callback();
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|
|
#endif
|