Files

192 lines
6.6 KiB
C
Executable File

#ifndef __MEDIA_COMM_H__
#define __MEDIA_COMM_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"
#define MEDIA_PRINTF 1
#define MEDIA_ERROR 1
#define VI_MAX_BIND_PIPE 2
#define MAGIC_DATA_LEN 16
#define MEDIA_PRT(fmt...) \
do {\
if(MEDIA_PRINTF == 1)\
{\
printf("[%s]-%d: ", __FUNCTION__, __LINE__);\
printf(fmt);\
}\
}while(0)
#define MEDIA_ERR(fmt...) \
do {\
if(MEDIA_ERROR == 1)\
{\
printf("[%s]-%d: ", __FUNCTION__, __LINE__);\
printf(fmt);\
}\
}while(0)
#define SCENE_AUTO_BIN_PATH "/usr/param/pq.bin"
#define FPN_BIN_PATH "/usr/param/fpn.bin"
#define ISP_AINR_MODEL_PATH "/usr/param/neuron_network.xmm"
typedef enum media_comm_sensor_num {
MEDIA_SENSOR0 = 0,
MEDIA_SENSOR1,
} media_comm_sensor_num;
typedef struct media_comm_sys_config {
xmedia_sys_config sys_conf;
xmedia_vb_config vb_conf;
} media_comm_sys_config;
typedef struct media_comm_isp_cfg {
xmedia_s32 vi_dev;
xmedia_s32 isp_pipe;
media_comm_sensor_num sns_num;
xmedia_bool en_quickstart;
} media_comm_isp_cfg;
typedef struct media_comm_vi_pipe_info {
xmedia_vi_pipe_config vi_pipe_cfg;
xmedia_vi_chn_config vi_chn_cfg;
xmedia_bool en_vi_cap_lowdelay;
xmedia_vi_lowdelay_attr vi_cap_lowdelay;
xmedia_bool en_vi_proc_lowdelay;
xmedia_vi_lowdelay_attr vi_proc_lowdelay;
} media_comm_vi_pipe_info;
typedef struct media_comm_vi_pipe_param {
xmedia_s32 vi_pipe_work_num;
xmedia_s32 vi_pipe[VI_MAX_BIND_PIPE];
media_comm_vi_pipe_info vi_pipe_info[VI_MAX_BIND_PIPE];
} media_comm_vi_pipe_param;
typedef struct media_comm_vi_grp_param {
xmedia_s32 vi_grp_work_num;
xmedia_s32 vi_grp[VI_MAX_GRP_NUM];
xmedia_vi_grp_config vi_grp_cfg[VI_MAX_GRP_NUM];
} media_comm_vi_grp_param;
typedef struct media_comm_vi_cfg {
xmedia_s32 vi_dev_work_num;
xmedia_s32 vi_dev[VI_MAX_DEV_NUM];
xmedia_bool en_quickstart[VI_MAX_DEV_NUM];
xmedia_vi_dev_mipi_phy_config mipi_cfg[VI_MAX_DEV_NUM];
xmedia_vi_dev_config vi_dev_cfg[VI_MAX_DEV_NUM];
media_comm_vi_pipe_param vi_pipe_param[VI_MAX_DEV_NUM];
media_comm_vi_grp_param vi_grp_param;
} media_comm_vi_cfg;
typedef struct media_comm_vpss_ochn_info {
xmedia_s32 vpss_ochn_work_num;
xmedia_s32 vpss_ochn[VPSS_MAX_PHY_OCHN_NUM];
xmedia_vpss_ochn_config vpss_ochn_cfg[VPSS_MAX_PHY_OCHN_NUM];
xmedia_vpss_low_delay_attr vpss_lowdelay_cfg[VPSS_MAX_PHY_OCHN_NUM];
xmedia_video_wrap_attr vpss_wrap_cfg[VPSS_MAX_PHY_OCHN_NUM];
} media_comm_vpss_ochn_info;
typedef struct media_comm_vpss_cfg {
xmedia_s32 vpss_pipe_work_num;
xmedia_s32 vpss_pipe[VPSS_MAX_PIPE_NUM];
xmedia_vpss_pipe_config pipe_cfg[VPSS_MAX_PIPE_NUM];
media_comm_vpss_ochn_info vpss_ochn_info[VPSS_MAX_PIPE_NUM];
} media_comm_vpss_cfg;
typedef struct media_comm_venc_cfg {
xmedia_u32 max_pic_width;
xmedia_u32 max_pic_height;
xmedia_u32 profile;
xmedia_payload_type en_type;
xmedia_venc_rc_mode rc_mode;
xmedia_bool rcn_ref_share_buf;
xmedia_u32 src_frame_rate;
xmedia_u32 dst_frame_rate;
xmedia_venc_gop_attr venc_gop_attr;
} media_comm_venc_cfg;
typedef struct media_comm_isp_ainr_cfg {
xmedia_cl_context cl_ctx;
xmedia_u32 cl_device_num;
xmedia_cl_device_id *cl_device;
xmedia_u64 work_space_phyaddr;
xmedia_void *work_space_viraddr;
} media_comm_isp_ainr_cfg;
typedef struct media_comm_isp_sensor_info {
xmedia_video_size sns_max_size;
xmedia_float frame_rate;
} media_comm_isp_sensor_info;
typedef struct vi_info {
xmedia_s32 enable;
xmedia_s32 pipe;
} bin_vi_info;
typedef struct module_info {
bin_vi_info vi;
} bin_module_info;
static const xmedia_u8 magic_isp[MAGIC_DATA_LEN] = "ISP_BIN";
xmedia_s32 media_comm_sys_init(media_comm_sys_config* sys_cfg);
xmedia_s32 media_comm_sys_exit();
xmedia_s32 media_comm_media_init();
xmedia_s32 media_comm_media_exit();
xmedia_s32 media_comm_mem_open(xmedia_void);
xmedia_void media_comm_mem_close(xmedia_void);
xmedia_void media_comm_set_reg(xmedia_u32 addr,xmedia_u32 value);
xmedia_s32 media_comm_get_reg(xmedia_u32 u32Addr);
xmedia_u64 media_comm_get_cur_time();
xmedia_s32 media_comm_vi_bind_vpss(xmedia_s32 vi_pipe, xmedia_s32 vi_chn, xmedia_s32 vpss_pipe, xmedia_s32 vpss_ichn);
xmedia_s32 media_comm_vi_unbind_vpss(xmedia_s32 vi_pipe, xmedia_s32 vi_chn, xmedia_s32 vpss_pipe, xmedia_s32 vpss_ichn);
xmedia_s32 media_comm_sys_vpss_bind_venc(xmedia_s32 vpss_pipe, xmedia_s32 vpss_ochn, xmedia_s32 venc_chn);
xmedia_s32 media_comm_sys_vpss_unbind_venc(xmedia_s32 vpss_pipe, xmedia_s32 vpss_ochn, xmedia_s32 venc_chn);
xmedia_s32 media_comm_isp_get_sensor_info(media_comm_sensor_num sns_num, media_comm_isp_sensor_info *sns_info);
xmedia_s32 media_comm_isp_set_sensor_info(media_comm_sensor_num sns_num, media_comm_isp_sensor_info *sns_info);
xmedia_s32 media_comm_isp_init(media_comm_isp_cfg media_isp_cfg);
xmedia_s32 media_comm_isp_exit(xmedia_s32 pipe, media_comm_sensor_num sns_num);
xmedia_s32 media_comm_isp_start(xmedia_s32 pipe, xmedia_bool en_start);
xmedia_s32 media_comm_isp_stop(xmedia_s32 pipe, xmedia_bool en_start);
xmedia_s32 media_comm_isp_get_mipi_rate(xmedia_s32 isp_pipe);
xmedia_s32 media_comm_vi_start(media_comm_vi_cfg* vi_cfg);
xmedia_s32 media_comm_vi_stop(media_comm_vi_cfg* vi_cfg);
xmedia_s32 media_comm_vpss_start(media_comm_vpss_cfg* vpss_cfg);
xmedia_s32 media_comm_vpss_stop(media_comm_vpss_cfg* vpss_cfg);
xmedia_s32 media_comm_venc_start(xmedia_s32 venc_chn, media_comm_venc_cfg* venc_cfg);
xmedia_s32 media_comm_venc_stop(xmedia_s32 venc_chn);
xmedia_s32 media_comm_venc_get_max_chn_size(xmedia_s32 venc_chn);
xmedia_s32 media_comm_isp_ainr_init(const xmedia_char* ainr_model_name);
xmedia_s32 media_comm_isp_ainr_exit();
xmedia_s32 media_comm_isp_ainr_load_model(xmedia_s32 isp_pipe, xmedia_s32 model_num, xmedia_char** ainr_model_name);
xmedia_s32 media_comm_isp_ainr_unload_model(xmedia_s32 isp_pipe);
xmedia_s32 media_comm_isp_ainr_enable(xmedia_s32 isp_pipe);
xmedia_s32 media_comm_scene_auto_enable(bin_module_info *module);
xmedia_s32 media_comm_fpn_enable(xmedia_s32 isp_pipe, xmedia_s32 width, xmedia_s32 height);
#endif /*__MEDIA_COMM_H__*/