141 lines
4.8 KiB
C
Executable File
141 lines
4.8 KiB
C
Executable File
#ifndef __SAMPLE_COMM_AOV_H__
|
|
#define __SAMPLE_COMM_AOV_H__
|
|
#include <stdio.h>
|
|
|
|
#include "xmedia_type.h"
|
|
#include "xmedia_video_common.h"
|
|
#include "xmedia_sys.h"
|
|
#include "xmedia_vb.h"
|
|
#include "xmedia_vi.h"
|
|
#include "xmedia_isp.h"
|
|
#include "xmedia_ae.h"
|
|
#include "xmedia_awb.h"
|
|
#include "xmedia_venc.h"
|
|
#include "xmedia_vpss.h"
|
|
#include "xmedia_vgs.h"
|
|
#include "xmedia_svp.h"
|
|
#include "xmedia_tde.h"
|
|
#include "xmedia_pm.h"
|
|
#include "xmedia_cl.h"
|
|
#include "xmedia_mmz.h"
|
|
#include "xmedia_ive_common.h"
|
|
#include "xmedia_ive.h"
|
|
#include "xmedia_md.h"
|
|
#include "drv_misc.h"
|
|
|
|
#define NPU_CHN_WIDTH 640
|
|
#define NPU_CHN_HEIGHT 360
|
|
#define NPU_NORMAL_STATE_CONTINUE_COUNT 300
|
|
#define VENC_STR_BUF_DEFAULT_MAX_FRAME_COUNT 600
|
|
#define RTC_SAFE_THRESOHLD_MS 50
|
|
#define AOV_IVE_MD_IMAGE_NUM 2
|
|
#define IVE_DETECT_SUPPORT 1
|
|
//#define APP_STANDBY_SENSOR 1
|
|
//#define AOV_APP_TIMESTAMP 1
|
|
#define SDCARD_USE_SDIO0 1 //demo板使用SDIO0连接SD卡,若硬件修改为SDIO1连接SD卡,需将SDCARD_USE_SDIO0宏修改为0
|
|
|
|
#define AOV_SUPPORT_MAX_SENSOR_NUM 2
|
|
|
|
typedef struct aov_ive_param {
|
|
xmedia_s32 md_chn;
|
|
xmedia_ive_src_image_s astImg[AOV_IVE_MD_IMAGE_NUM];
|
|
xmedia_s32 cur_idx;
|
|
xmedia_ive_dst_mem_info_s stBlob;
|
|
xmedia_md_attr_s stMdAttr;
|
|
xmedia_bool is_first_frm;
|
|
} aov_ive_param;
|
|
|
|
typedef enum sample_aov_work_mode {
|
|
MEDIA_WORK_AOV = 0,
|
|
MEDIA_WORK_NORMAL,
|
|
} sample_aov_work_mode;
|
|
|
|
#ifdef APP_STANDBY_SENSOR
|
|
typedef enum sensor_status_ {
|
|
SENSOR_STATUS_NONE = 0,
|
|
SENSOR_STATUS_START,
|
|
SENSOR_STATUS_STANDBY,
|
|
SENSOR_STATUS_RESUME,
|
|
} sensor_status_t;
|
|
#endif
|
|
|
|
typedef struct sample_aov_venc_chn_frame {
|
|
xmedia_s32 venc_chn_num;
|
|
xmedia_s32 venc_chn[VENC_MAX_CHN_NUM];
|
|
xmedia_u32 frame_num[VENC_MAX_CHN_NUM];
|
|
} sample_aov_venc_chn_frame;
|
|
|
|
typedef struct sample_aov_isp_param {
|
|
xmedia_s32 isp_pipe_num;
|
|
xmedia_s32 isp_pipe[VI_MAX_DEV_NUM];
|
|
} sample_aov_isp_param;
|
|
|
|
typedef struct sample_aov_venc_param {
|
|
xmedia_s32 venc_chn_num;
|
|
xmedia_bool en_aov[VENC_MAX_CHN_NUM];
|
|
xmedia_s32 venc_chn[VENC_MAX_CHN_NUM];
|
|
xmedia_s32 chn_max_size[VENC_MAX_CHN_NUM];
|
|
xmedia_s32 chn_threshold_size[VENC_MAX_CHN_NUM];
|
|
} sample_aov_venc_param;
|
|
|
|
typedef struct sample_aov_vpss_normal_only_param {
|
|
xmedia_s32 vpss_pipe_num;
|
|
xmedia_s32 vpss_pipe[VPSS_MAX_PIPE_NUM];
|
|
xmedia_s32 vpss_ochn_num[VPSS_MAX_PIPE_NUM];
|
|
xmedia_s32 vpss_ochn[VPSS_MAX_PIPE_NUM][VPSS_MAX_OCHN_NUM];
|
|
} sample_aov_vpss_normal_only_param;
|
|
|
|
typedef struct sample_aov_vpss_npu_param {
|
|
xmedia_s32 npu_detect_num;
|
|
xmedia_s32 npu_svp_handle[VPSS_MAX_PIPE_NUM];
|
|
xmedia_bool en_switch_mode[VPSS_MAX_PIPE_NUM];
|
|
xmedia_s32 vpss_pipe[VPSS_MAX_PIPE_NUM];
|
|
xmedia_s32 vpss_ochn[VPSS_MAX_PIPE_NUM];
|
|
} sample_aov_vpss_npu_param;
|
|
|
|
typedef xmedia_void (*sample_aov_normal_npu_notice)(sample_aov_work_mode);
|
|
typedef xmedia_void (*sample_aov_normal_resume)(xmedia_void);
|
|
typedef xmedia_void (*sample_aov_normal_suspend)(xmedia_void);
|
|
|
|
typedef struct sample_aov_init_param {
|
|
xmedia_s32 suspend_time;
|
|
sample_aov_normal_npu_notice npu_notice_callback;
|
|
sample_aov_normal_resume normal_resume_callback;
|
|
sample_aov_normal_suspend normal_suspend_callback;
|
|
sample_aov_isp_param isp_param;//sensor standby or resume used.
|
|
sample_aov_vpss_normal_only_param vpss_param;//aov mode:vpss ochn should disable.
|
|
sample_aov_vpss_npu_param npu_param;//npu detect. svp handle vpss pipe & ochn.
|
|
sample_aov_venc_param venc_param;// venc chn param.
|
|
#ifdef APP_STANDBY_SENSOR
|
|
sensor_status_t sensor_status[AOV_SUPPORT_MAX_SENSOR_NUM];
|
|
#endif
|
|
} sample_aov_init_param;
|
|
|
|
typedef struct sample_aov_detect_ {
|
|
#ifdef IVE_DETECT_SUPPORT
|
|
aov_ive_param ive_param[AOV_SUPPORT_MAX_SENSOR_NUM];
|
|
#endif
|
|
xmedia_svp_aov_detect_output svp_result[AOV_SUPPORT_MAX_SENSOR_NUM];
|
|
xmedia_s32 svp_detect_none_cnt[AOV_SUPPORT_MAX_SENSOR_NUM];
|
|
xmedia_s32 detect_complete_flag[AOV_SUPPORT_MAX_SENSOR_NUM];
|
|
}sample_aov_detect_t;
|
|
|
|
xmedia_void sample_comm_aov_init(sample_aov_init_param *aov_init_param);
|
|
xmedia_void sample_comm_aov_exit(xmedia_void);
|
|
xmedia_void sample_comm_aov_set_work_mode(sample_aov_work_mode work_mode);
|
|
xmedia_void sample_comm_aov_get_work_mode(sample_aov_work_mode *work_mode);
|
|
xmedia_s32 sample_comm_aov_npu_init(xmedia_void);
|
|
xmedia_s32 sample_comm_aov_npu_create(xmedia_s32 *handle, xmedia_svp_task_cfg *task_cfg);
|
|
xmedia_s32 sample_comm_aov_npu_destroy(xmedia_s32 handle);
|
|
xmedia_void sample_comm_aov_npu_exit(xmedia_void);
|
|
xmedia_s32 sample_comm_aov_venc_thread_create(xmedia_void);
|
|
xmedia_s32 sample_comm_aov_venc_thread_destroy(xmedia_void);
|
|
xmedia_s32 sample_comm_aov_work_thread_create(xmedia_void);
|
|
xmedia_s32 sample_comm_aov_work_thread_destroy(xmedia_void);
|
|
|
|
xmedia_s32 sample_comm_aov_misc_init(misc_aov_isp_info *isp_info);
|
|
xmedia_s32 sample_comm_aov_get_misc_fd(xmedia_void);
|
|
|
|
|
|
#endif //__SAMPLE_COMM_AOV_H__
|