723 lines
24 KiB
C
723 lines
24 KiB
C
/*
|
|
Copyright (c), 2001-2022, Shenshu Tech. Co., Ltd.
|
|
*/
|
|
|
|
#ifndef __SAMPLE_COMM_H__
|
|
#define __SAMPLE_COMM_H__
|
|
|
|
#include <pthread.h>
|
|
|
|
#include "ot_common.h"
|
|
#include "ot_math.h"
|
|
#include "ot_buffer.h"
|
|
#include "ot_defines.h"
|
|
#include "securec.h"
|
|
#include "ot_common_sys.h"
|
|
#include "ot_common_vb.h"
|
|
#include "ot_common_vi.h"
|
|
#include "ot_common_vo.h"
|
|
#include "ot_common_venc.h"
|
|
#include "ot_common_vdec.h"
|
|
#include "ot_common_vpss.h"
|
|
#include "ot_common_region.h"
|
|
#include "ot_common_adec.h"
|
|
#include "ot_common_aenc.h"
|
|
#include "ot_common_aio.h"
|
|
#include "ot_common_hdmi.h"
|
|
#include "ot_common_vgs.h"
|
|
#include "ot_common_vda.h"
|
|
|
|
#include "ss_mpi_sys.h"
|
|
#include "ss_mpi_vb.h"
|
|
#include "ss_mpi_vi.h"
|
|
#include "ss_mpi_vo.h"
|
|
#include "ss_mpi_venc.h"
|
|
#include "ss_mpi_vdec.h"
|
|
#include "ss_mpi_vpss.h"
|
|
#include "ss_mpi_region.h"
|
|
#include "ss_mpi_audio.h"
|
|
#include "ss_mpi_hdmi.h"
|
|
#include "ss_mpi_vgs.h"
|
|
#include "ss_mpi_vda.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* end of #ifdef __cplusplus */
|
|
|
|
/* macro define */
|
|
#define FILE_NAME_LEN 128
|
|
#define FILE_PATH_LEN 128
|
|
|
|
#define SAMPLE_PIXEL_FORMAT OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420
|
|
|
|
#define COLOR_RGB_RED 0xFF0000
|
|
#define COLOR_RGB_GREEN 0x00FF00
|
|
#define COLOR_RGB_BLUE 0x0000FF
|
|
#define COLOR_RGB_BLACK 0x000000
|
|
#define COLOR_RGB_YELLOW 0xFFFF00
|
|
#define COLOR_RGB_CYN 0x00ffff
|
|
#define COLOR_RGB_WHITE 0xffffff
|
|
|
|
#define SAMPLE_VO_DEV_DHD0 0 /* VO's device HD0 */
|
|
#define SAMPLE_VO_DEV_DHD1 1 /* VO's device HD1 */
|
|
#define SAMPLE_VO_DEV_DSD0 2 /* VO's device SD0 */
|
|
#define SAMPLE_VO_DEV_UHD SAMPLE_VO_DEV_DHD0 /* VO's ultra HD device:HD0 */
|
|
#define SAMPLE_VO_DEV_HD SAMPLE_VO_DEV_DHD1 /* VO's HD device:HD1 */
|
|
#define SAMPLE_VO_LAYER_VHD0 0
|
|
#define SAMPLE_VO_LAYER_VHD1 1
|
|
#define SAMPLE_VO_LAYER_VHD2 2
|
|
#define SAMPLE_VO_LAYER_PIP SAMPLE_VO_LAYER_VHD2
|
|
|
|
#define SAMPLE_AUDIO_EXTERN_AI_DEV 0
|
|
#define SAMPLE_AUDIO_EXTERN_AO_DEV 0
|
|
#define SAMPLE_AUDIO_INNER_AI_DEV 0
|
|
#define SAMPLE_AUDIO_INNER_AO_DEV 0
|
|
#define SAMPLE_AUDIO_INNER_HDMI_AO_DEV 1
|
|
|
|
#define SAMPLE_AUDIO_POINT_NUM_PER_FRAME 480
|
|
|
|
#define WDR_MAX_PIPE_NUM 4
|
|
|
|
#define CHN_NUM_PRE_DEV 4
|
|
#define SECOND_CHN_OFFSET_2MUX 2
|
|
|
|
#define D1_WIDTH 720
|
|
#define D1_HEIGHT_PAL 576
|
|
#define D1_HEIGHT_NTSC 480
|
|
|
|
#define _960H_WIDTH 960
|
|
#define _960H_HEIGHT_PAL 576
|
|
#define _960H_HEIGHT_NTSC 480
|
|
|
|
#define HD_WIDTH 1280
|
|
#define HD_HEIGHT 720
|
|
|
|
#define FHD_WIDTH 1920
|
|
#define FHD_HEIGHT 1080
|
|
|
|
#define _4K_WIDTH 3840
|
|
#define _4K_HEIGHT 2160
|
|
|
|
#define AD_NVP6158 0
|
|
#define AD_TP2854B 1
|
|
#define AD_TP2856 2
|
|
|
|
#define SAMPLE_AD_TYPE AD_TP2854B
|
|
|
|
#define NVP6158_FILE "/dev/nc_vdec"
|
|
#define TP2854B_FILE "/dev/tp2802dev"
|
|
#define TP2856_FILE "/dev/tp2802dev"
|
|
#define TP2828_FILE "/dev/tp2823dev"
|
|
|
|
#define ES8388_FILE "/dev/es8388"
|
|
#define ES8388_CHIP_ID 0
|
|
|
|
#define VO_LT8618SX 1
|
|
#define LT8618SX_DEV_NAME "/dev/lt8618sx"
|
|
|
|
#define SAMPLE_FRAME_BUF_RATIO_MAX 100
|
|
#define SAMPLE_FRAME_BUF_RATIO_MIN 70
|
|
|
|
#define minor_chn(vi_chn) ((vi_chn) + 1)
|
|
|
|
#define sample_pause() \
|
|
do { \
|
|
printf("---------------press enter key to exit!---------------\n"); \
|
|
getchar(); \
|
|
} while (0)
|
|
|
|
#define sample_print(fmt...) \
|
|
do { \
|
|
printf("[%s]-%d: ", __FUNCTION__, __LINE__); \
|
|
printf(fmt); \
|
|
} while (0)
|
|
|
|
#define check_null_ptr_return(ptr) \
|
|
do { \
|
|
if ((ptr) == TD_NULL) { \
|
|
printf("func:%s,line:%d, NULL pointer\n", __FUNCTION__, __LINE__); \
|
|
return TD_FAILURE; \
|
|
} \
|
|
} while (0)
|
|
|
|
#define check_chn_return(express, chn, name) \
|
|
do { \
|
|
td_s32 ret_ = (express); \
|
|
if (ret_ != TD_SUCCESS) { \
|
|
printf("\033[0;31m%s chn %d failed at %s: LINE: %d with %#x!\033[0;39m\n", \
|
|
(name), (chn), __FUNCTION__, __LINE__, ret_); \
|
|
fflush(stdout); \
|
|
return ret_; \
|
|
} \
|
|
} while (0)
|
|
|
|
#define check_return(express, name) \
|
|
do { \
|
|
td_s32 ret_ = (express); \
|
|
if (ret_ != TD_SUCCESS) { \
|
|
printf("\033[0;31m%s failed at %s: LINE: %d with %#x!\033[0;39m\n", \
|
|
(name), __FUNCTION__, __LINE__, ret_); \
|
|
return ret_; \
|
|
} \
|
|
} while (0)
|
|
|
|
/* enum define */
|
|
typedef enum {
|
|
SAMPLE_VI_MODE_960H_4X4 = 0,
|
|
SAMPLE_VI_MODE_720P_1X4,
|
|
SAMPLE_VI_MODE_720P_2X2,
|
|
SAMPLE_VI_MODE_720P_4X4,
|
|
SAMPLE_VI_MODE_1080P_1X2,
|
|
SAMPLE_VI_MODE_1080P_2X2,
|
|
SAMPLE_VI_MODE_1080P_2X4,
|
|
SAMPLE_VI_MODE_4M_1X8,
|
|
SAMPLE_VI_MODE_5M_1X8,
|
|
SAMPLE_VI_MODE_4K_1X8,
|
|
SAMPLE_VI_MODE_BUTT
|
|
} sample_vi_mode;
|
|
|
|
typedef enum {
|
|
SAMPLE_VIDEO_ENCODING_PAL = 0,
|
|
SAMPLE_VIDEO_ENCODING_NTSC,
|
|
SAMPLE_VIDEO_ENCODING_AUTO,
|
|
SAMPLE_VIDEO_ENCODING_BUTT
|
|
} sample_video_encoding;
|
|
|
|
typedef enum {
|
|
PIC_CIF,
|
|
PIC_360P, /* 640 * 360 */
|
|
PIC_D1_PAL, /* 720 * 576 */
|
|
PIC_D1_NTSC, /* 720 * 480 */
|
|
PIC_960H, /* 960 * 576 */
|
|
PIC_720P, /* 1280 * 720 */
|
|
PIC_1080P, /* 1920 * 1080 */
|
|
PIC_480P,
|
|
PIC_576P,
|
|
PIC_800X600,
|
|
PIC_1024X768,
|
|
PIC_1280X1024,
|
|
PIC_1366X768,
|
|
PIC_1440X900,
|
|
PIC_1280X800,
|
|
PIC_1600X1200,
|
|
PIC_1680X1050,
|
|
PIC_1920X1200,
|
|
PIC_640X480,
|
|
PIC_1920X2160,
|
|
PIC_2560X1440,
|
|
PIC_2560X1600,
|
|
PIC_2592X1520,
|
|
PIC_2592X1944,
|
|
PIC_3840X2160,
|
|
PIC_4096X2160,
|
|
PIC_3000X3000,
|
|
PIC_4000X3000,
|
|
PIC_7680X4320,
|
|
PIC_3840X8640,
|
|
PIC_BUTT
|
|
} ot_pic_size;
|
|
|
|
typedef enum {
|
|
SONY_IMX290_MIPI_2M_30FPS_12BIT,
|
|
SONY_IMX290_MIPI_2M_30FPS_12BIT_WDR2TO1,
|
|
SONY_IMX290_MIPI_1M_30FPS_12BIT_WDR2TO1,
|
|
SONY_IMX290_SLAVE_MIPI_2M_60FPS_10BIT,
|
|
SONY_IMX334_MIPI_8M_30FPS_12BIT,
|
|
SONY_IMX334_MIPI_8M_30FPS_12BIT_WDR2TO1,
|
|
SONY_IMX377_MIPI_8M_30FPS_10BIT,
|
|
NVP6324_MIPI_2M_30FPS_8BIT,
|
|
SAMPLE_SNS_TYPE_BUTT,
|
|
} sample_sns_type;
|
|
|
|
typedef enum {
|
|
VO_MODE_1MUX = 0,
|
|
VO_MODE_2MUX,
|
|
VO_MODE_4MUX,
|
|
VO_MODE_8MUX,
|
|
VO_MODE_9MUX,
|
|
VO_MODE_16MUX,
|
|
VO_MODE_25MUX,
|
|
VO_MODE_36MUX,
|
|
VO_MODE_49MUX,
|
|
VO_MODE_64MUX,
|
|
VO_MODE_2X4,
|
|
VO_MODE_BUTT
|
|
} sample_vo_mode;
|
|
|
|
typedef enum {
|
|
SAMPLE_RC_CBR = 0,
|
|
SAMPLE_RC_VBR,
|
|
SAMPLE_RC_AVBR,
|
|
SAMPLE_RC_CVBR,
|
|
SAMPLE_RC_QVBR,
|
|
SAMPLE_RC_QPMAP,
|
|
SAMPLE_RC_FIXQP
|
|
} sample_rc;
|
|
|
|
/* structure define */
|
|
typedef struct {
|
|
td_bool thread_start;
|
|
ot_venc_chn venc_chn[OT_VENC_MAX_CHN_NUM];
|
|
td_s32 cnt;
|
|
} sample_venc_getstream_para;
|
|
|
|
typedef struct {
|
|
td_bool thread_start;
|
|
ot_venc_chn venc_chn[OT_VENC_MAX_CHN_NUM];
|
|
td_s32 cnt;
|
|
ot_vpss_grp vpss_grp;
|
|
ot_vpss_chn vpss_chn[OT_VENC_MAX_CHN_NUM];
|
|
} sample_venc_rateauto_para;
|
|
|
|
typedef struct {
|
|
td_bool thread_start;
|
|
ot_vpss_grp vpss_grp;
|
|
ot_venc_chn venc_chn[OT_VENC_MAX_CHN_NUM];
|
|
ot_vpss_chn vpss_chn[OT_VPSS_MAX_PHYS_CHN_NUM];
|
|
ot_size size[OT_VENC_MAX_CHN_NUM];
|
|
td_s32 cnt;
|
|
} sample_venc_qpmap_sendframe_para;
|
|
|
|
typedef struct {
|
|
td_bool thread_start;
|
|
ot_vpss_grp vpss_grp;
|
|
ot_venc_chn venc_chn[OT_VENC_MAX_CHN_NUM];
|
|
ot_vpss_chn vpss_chn[OT_VPSS_MAX_PHYS_CHN_NUM];
|
|
ot_size size[OT_VENC_MAX_CHN_NUM];
|
|
ot_venc_jpeg_roi_attr roi_attr[OT_VENC_MAX_CHN_NUM];
|
|
td_s32 cnt;
|
|
} sample_venc_roimap_frame_para;
|
|
|
|
typedef struct {
|
|
ot_vi_pipe vi_pipe;
|
|
td_s32 cnt;
|
|
td_bool dump;
|
|
td_char asz_name[FILE_NAME_LEN];
|
|
pthread_t thread_id;
|
|
} sample_vi_dump_thread_info;
|
|
|
|
typedef struct {
|
|
sample_sns_type sns_type;
|
|
td_s32 sns_id;
|
|
td_s32 bus_id;
|
|
} sample_sensor_info;
|
|
|
|
typedef struct {
|
|
td_bool snap;
|
|
td_bool double_pipe;
|
|
ot_vi_pipe video_pipe;
|
|
ot_vi_pipe snap_pipe;
|
|
} sample_snap_info;
|
|
|
|
typedef struct {
|
|
ot_vi_dev vi_dev;
|
|
} sample_dev_info;
|
|
|
|
typedef struct {
|
|
ot_vi_pipe a_pipe[WDR_MAX_PIPE_NUM];
|
|
td_bool multi_pipe;
|
|
td_bool vc_num_cfged;
|
|
td_u32 vc_num[WDR_MAX_PIPE_NUM];
|
|
} sample_pipe_info;
|
|
|
|
typedef struct {
|
|
ot_vi_chn vi_chn;
|
|
ot_pixel_format pix_format;
|
|
ot_dynamic_range dynamic_range;
|
|
ot_video_format video_format;
|
|
ot_compress_mode compress_mode;
|
|
} sample_chn_info;
|
|
|
|
typedef struct {
|
|
sample_sensor_info sns_info;
|
|
sample_dev_info dev_info;
|
|
sample_pipe_info pipe_info;
|
|
sample_chn_info chn_info;
|
|
sample_snap_info snap_info;
|
|
} sample_vi_info;
|
|
|
|
typedef struct {
|
|
sample_vi_mode vi_mode;
|
|
sample_video_encoding video_encoding;
|
|
} sample_vi_config;
|
|
|
|
typedef struct {
|
|
td_s32 vi_dev_cnt;
|
|
td_s32 vi_dev_interval;
|
|
td_s32 vi_chn_cnt;
|
|
td_s32 vi_chn_interval;
|
|
ot_vi_scan_mode scan_mode;
|
|
td_bool minor_attr_en;
|
|
ot_size minor_dst_size;
|
|
} sample_vi_param;
|
|
|
|
typedef struct {
|
|
td_u32 width;
|
|
td_u32 height;
|
|
td_u32 byte_align;
|
|
ot_pixel_format ot_pixel_format;
|
|
ot_video_format video_format;
|
|
ot_compress_mode compress_mode;
|
|
ot_dynamic_range dynamic_range;
|
|
} sample_vi_frame_config;
|
|
|
|
typedef struct {
|
|
ot_vb_blk vb_blk;
|
|
td_u32 size;
|
|
ot_video_frame_info video_frame_info;
|
|
} sample_vi_frame_info;
|
|
|
|
typedef struct {
|
|
td_u32 threshold;
|
|
td_u32 frame_num;
|
|
ot_pixel_format ot_pixel_format;
|
|
ot_compress_mode compress_mode;
|
|
} sample_vi_fpn_calibrate_info;
|
|
|
|
typedef struct {
|
|
td_u32 strength;
|
|
ot_pixel_format ot_pixel_format;
|
|
ot_compress_mode compress_mode;
|
|
sample_vi_frame_info vi_frame_info;
|
|
} sample_vi_fpn_correction_info;
|
|
|
|
typedef struct {
|
|
ot_vo_intf_sync intf_sync;
|
|
td_u32 width;
|
|
td_u32 height;
|
|
td_u32 frame_rate;
|
|
} sample_vo_sync_info;
|
|
|
|
typedef struct {
|
|
sample_vo_mode mode;
|
|
td_u32 wnd_num;
|
|
td_u32 square;
|
|
td_u32 row;
|
|
td_u32 col;
|
|
} sample_vo_wnd_info;
|
|
|
|
typedef struct {
|
|
ot_vo_wbc_src_type source_type;
|
|
ot_dynamic_range dynamic_range;
|
|
ot_compress_mode compress_mode;
|
|
td_s32 depth;
|
|
|
|
td_s32 vo_wbc;
|
|
ot_vo_wbc_attr wbc_attr;
|
|
ot_vo_wbc_src wbc_source;
|
|
ot_vo_wbc_mode wbc_mode;
|
|
} sample_vo_wbc_cfg;
|
|
|
|
typedef struct {
|
|
/* for layer */
|
|
ot_vo_layer vo_layer;
|
|
ot_vo_intf_sync intf_sync;
|
|
ot_rect display_rect;
|
|
ot_size image_size;
|
|
ot_pixel_format pix_format;
|
|
|
|
td_u32 dis_buf_len;
|
|
ot_dynamic_range dst_dynamic_range;
|
|
|
|
/* for chn */
|
|
sample_vo_mode vo_mode;
|
|
} sample_comm_vo_layer_cfg;
|
|
|
|
typedef struct {
|
|
/* for device */
|
|
ot_vo_dev vo_dev;
|
|
ot_vo_intf_type vo_intf_type;
|
|
ot_vo_intf_sync intf_sync;
|
|
ot_pic_size pic_size;
|
|
td_u32 bg_color;
|
|
|
|
/* for layer */
|
|
ot_pixel_format pix_format;
|
|
ot_rect disp_rect;
|
|
ot_size image_size;
|
|
ot_vo_partition_mode vo_part_mode;
|
|
ot_compress_mode compress_mode;
|
|
|
|
td_u32 dis_buf_len;
|
|
ot_dynamic_range dst_dynamic_range;
|
|
|
|
/* for chnnel */
|
|
sample_vo_mode vo_mode;
|
|
|
|
/* for user sync */
|
|
ot_vo_sync_info sync_info;
|
|
ot_vo_user_sync_info user_sync;
|
|
td_u32 dev_frame_rate;
|
|
} sample_vo_cfg;
|
|
|
|
typedef enum {
|
|
THREAD_CTRL_START,
|
|
THREAD_CTRL_PAUSE,
|
|
THREAD_CTRL_STOP,
|
|
} thread_contrl;
|
|
|
|
typedef struct {
|
|
ot_pic_size pic_size;
|
|
ot_vo_intf_sync intf_sync;
|
|
ot_vo_intf_type intf_type;
|
|
} vdec_display_cfg;
|
|
|
|
typedef struct {
|
|
td_s32 chn_id;
|
|
ot_payload_type type;
|
|
td_char c_file_path[FILE_PATH_LEN];
|
|
td_char c_file_name[FILE_NAME_LEN];
|
|
td_s32 stream_mode;
|
|
td_s32 milli_sec;
|
|
td_s32 min_buf_size;
|
|
td_s32 interval_time;
|
|
thread_contrl e_thread_ctrl;
|
|
td_u64 pts_init;
|
|
td_u64 pts_increase;
|
|
td_bool circle_send;
|
|
} vdec_thread_param;
|
|
|
|
typedef struct {
|
|
td_u32 pic_buf_size;
|
|
td_u32 tmv_buf_size;
|
|
td_bool pic_buf_alloc;
|
|
td_bool tmv_buf_alloc;
|
|
} sample_vdec_buf;
|
|
|
|
typedef struct {
|
|
ot_video_dec_mode dec_mode;
|
|
td_u32 ref_frame_num;
|
|
ot_data_bit_width bit_width;
|
|
} sample_vdec_video_attr;
|
|
|
|
typedef struct {
|
|
ot_pixel_format pixel_format;
|
|
td_u32 alpha;
|
|
} sample_vdec_pic_attr;
|
|
|
|
typedef struct {
|
|
ot_payload_type type;
|
|
ot_vdec_send_mode mode;
|
|
td_u32 width;
|
|
td_u32 height;
|
|
td_u32 frame_buf_cnt;
|
|
td_u32 display_frame_num;
|
|
union {
|
|
sample_vdec_video_attr sample_vdec_video; /* structure with video (h265/h264) */
|
|
sample_vdec_pic_attr sample_vdec_picture; /* structure with picture (jpeg/mjpeg) */
|
|
};
|
|
} sample_vdec_attr;
|
|
|
|
typedef struct {
|
|
ot_video_format video_format;
|
|
ot_pixel_format pixel_format;
|
|
td_u32 width;
|
|
td_u32 height;
|
|
td_u32 align;
|
|
ot_compress_mode compress_mode;
|
|
} sample_vb_base_info;
|
|
|
|
typedef struct {
|
|
td_u32 vb_size;
|
|
td_u32 head_stride;
|
|
td_u32 head_size;
|
|
td_u32 head_y_size;
|
|
td_u32 main_stride;
|
|
td_u32 main_size;
|
|
td_u32 main_y_size;
|
|
td_u32 ext_stride;
|
|
td_u32 ext_y_size;
|
|
} sample_vb_cal_config;
|
|
|
|
typedef struct {
|
|
td_u32 frame_rate;
|
|
td_u32 stats_time;
|
|
td_u32 gop;
|
|
ot_size venc_size;
|
|
ot_pic_size size;
|
|
td_u32 profile;
|
|
td_bool is_rcn_ref_share_buf;
|
|
ot_venc_gop_attr gop_attr;
|
|
ot_payload_type type;
|
|
sample_rc rc_mode;
|
|
} sample_comm_venc_chnl_param;
|
|
|
|
typedef struct {
|
|
ot_vpss_chn *vpss_chn;
|
|
ot_venc_chn *venc_chn;
|
|
td_s32 cnt;
|
|
} sample_venc_roimap_chn_info;
|
|
|
|
typedef struct {
|
|
ot_audio_sample_rate out_sample_rate;
|
|
td_bool resample_en;
|
|
td_void *ai_vqe_attr;
|
|
td_u32 ai_vqe_type;
|
|
} sample_comm_ai_vqe_param;
|
|
|
|
/* function announce */
|
|
td_void sample_sys_signal(void (*func)(int));
|
|
td_void *sample_sys_io_mmap(td_u64 phy_addr, td_u32 size);
|
|
td_s32 sample_sys_munmap(td_void *vir_addr, td_u32 size);
|
|
td_s32 sample_sys_set_reg(td_u64 addr, td_u32 value);
|
|
td_s32 sample_sys_get_reg(td_u64 addr, td_u32 *value);
|
|
|
|
td_s32 sample_comm_sys_get_pic_size(ot_pic_size pic_size, ot_size *size);
|
|
td_s32 sample_comm_sys_mem_config(td_void);
|
|
td_void sample_comm_sys_exit(td_void);
|
|
td_s32 sample_comm_sys_init(const ot_vb_cfg *vb_cfg);
|
|
td_s32 sample_comm_sys_init_with_vb_supplement(const ot_vb_cfg *vb_cfg, td_u32 supplement_config);
|
|
|
|
td_s32 sample_comm_vi_bind_vo(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_vo_layer vo_layer, ot_vo_chn vo_chn);
|
|
td_s32 sample_comm_vi_un_bind_vo(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_vo_layer vo_layer, ot_vo_chn vo_chn);
|
|
td_s32 sample_comm_vi_bind_vpss(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_vpss_grp vpss_grp, ot_vpss_chn vpss_chn);
|
|
td_s32 sample_comm_vi_un_bind_vpss(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_vpss_grp vpss_grp, ot_vpss_chn vpss_chn);
|
|
td_s32 sample_comm_vi_bind_venc(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_venc_chn venc_chn);
|
|
td_s32 sample_comm_vi_un_bind_venc(ot_vi_pipe vi_pipe, ot_vi_chn vi_chn, ot_venc_chn venc_chn);
|
|
td_s32 sample_comm_vpss_bind_vo(ot_vpss_grp vpss_grp, ot_vpss_chn vpss_chn, ot_vo_layer vo_layer, ot_vo_chn vo_chn);
|
|
td_s32 sample_comm_vpss_un_bind_vo(ot_vpss_grp vpss_grp, ot_vpss_chn vpss_chn, ot_vo_layer vo_layer, ot_vo_chn vo_chn);
|
|
td_s32 sample_comm_vpss_bind_venc(ot_vpss_grp vpss_grp, ot_vpss_chn vpss_chn, ot_venc_chn venc_chn);
|
|
td_s32 sample_comm_vpss_un_bind_venc(ot_vpss_grp vpss_grp, ot_vpss_chn vpss_chn, ot_venc_chn venc_chn);
|
|
td_s32 sample_comm_vdec_bind_vpss(ot_vdec_chn vdec_chn, ot_vpss_grp vpss_grp);
|
|
td_s32 sample_comm_vdec_un_bind_vpss(ot_vdec_chn vdec_chn, ot_vpss_grp vpss_grp);
|
|
td_s32 sample_comm_vo_bind_vo(ot_vo_layer src_vo_layer, ot_vo_chn src_vo_chn,
|
|
ot_vo_layer dst_vo_layer, ot_vo_chn dst_vo_chn);
|
|
td_s32 sample_comm_vo_un_bind_vo(ot_vo_layer dst_vo_layer, ot_vo_chn dst_vo_chn);
|
|
|
|
td_s32 sample_common_vi_mode_to_param(sample_vi_mode vi_mode, sample_vi_param *vi_param);
|
|
td_s32 sample_common_vi_get_size_by_mode(sample_vi_mode vi_mode, ot_pic_size *pic_size);
|
|
td_s32 sample_common_vi_mode_to_param(sample_vi_mode vi_mode, sample_vi_param *vi_param);
|
|
td_s32 sample_common_vi_start_dev(ot_vi_dev vi_dev, sample_vi_mode vi_mode);
|
|
td_s32 sample_common_vi_start_chn(td_s32 vi_chn, ot_rect *capture_rect, ot_size *dst_size, sample_vi_param *vi_param);
|
|
td_s32 sample_common_vi_start_mipi(ot_rect *capture_rect, sample_vi_param *vi_param);
|
|
td_s32 sample_common_vi_start_vi(sample_vi_mode vi_mode, sample_video_encoding video_encoding,
|
|
sample_vi_param *vi_param);
|
|
td_s32 sample_common_vi_stop(sample_vi_mode vi_mode, sample_vi_param *vi_param);
|
|
|
|
td_s32 sample_common_vpss_start(ot_vpss_grp grp, const td_bool *chn_enable,
|
|
const ot_vpss_grp_attr *grp_attr, const ot_vpss_chn_attr *chn_attr, td_u32 chn_array_size);
|
|
td_s32 sample_common_vpss_stop(ot_vpss_grp grp, const td_bool *chn_enable, td_u32 chn_array_size);
|
|
|
|
td_s32 sample_comm_vo_get_width_height(ot_vo_intf_sync intf_sync, td_u32 *width, td_u32 *height,
|
|
td_u32 *frame_rate);
|
|
td_s32 sample_comm_vo_mem_config(ot_vo_dev vo_dev, td_char *pc_mmz_name);
|
|
td_s32 sample_comm_vo_start_dev(ot_vo_dev vo_dev, ot_vo_pub_attr *pub_attr);
|
|
td_s32 sample_comm_vo_stop_dev(ot_vo_dev vo_dev);
|
|
td_s32 sample_comm_vo_start_layer(ot_vo_layer vo_layer, const ot_vo_video_layer_attr *layer_attr);
|
|
td_s32 sample_comm_vo_stop_layer(ot_vo_layer vo_layer);
|
|
td_s32 sample_comm_vo_get_wnd_info(sample_vo_mode mode, sample_vo_wnd_info *wnd_info);
|
|
td_s32 sample_comm_vo_get_chn_attr(sample_vo_wnd_info *wnd_info, ot_vo_video_layer_attr *layer_attr,
|
|
td_s32 chn, ot_vo_chn_attr *chn_attr);
|
|
td_s32 sample_comm_vo_start_chn(ot_vo_layer vo_layer, sample_vo_mode mode);
|
|
td_s32 sample_comm_vo_stop_chn(ot_vo_layer vo_layer, sample_vo_mode mode);
|
|
td_s32 sample_comm_vo_start_wbc(sample_vo_wbc_cfg *wbc_config);
|
|
td_s32 sample_comm_vo_stop_wbc(sample_vo_wbc_cfg *wbc_config);
|
|
td_s32 sample_comm_vo_get_def_wbc_config(sample_vo_wbc_cfg *wbc_config);
|
|
td_s32 sample_comm_vo_bind_vi(ot_vo_layer vo_layer, ot_vo_chn vo_chn, ot_vi_chn vi_chn);
|
|
td_s32 sample_comm_vo_un_bind_vi(ot_vo_layer vo_layer, ot_vo_chn vo_chn);
|
|
td_s32 sample_comm_vo_bt1120_start(ot_vo_dev vo_dev, ot_vo_pub_attr *pub_attr);
|
|
td_s32 sample_comm_vo_hdmi_start(ot_vo_intf_sync intf_sync);
|
|
td_s32 sample_comm_vo_hdmi_stop(td_void);
|
|
td_s32 sample_comm_vo_get_def_config(sample_vo_cfg *vo_config);
|
|
td_s32 sample_comm_vo_stop_vo(const sample_vo_cfg *vo_config);
|
|
td_void sample_comm_vo_set_hdmi_rgb_mode(td_bool enable);
|
|
td_s32 sample_comm_vo_start_vo(sample_vo_cfg *vo_config);
|
|
td_s32 sample_comm_vo_stop_pip(const sample_vo_cfg *vo_config);
|
|
td_s32 sample_comm_vo_start_pip(sample_vo_cfg *vo_config);
|
|
td_s32 sample_comm_vo_get_def_layer_config(sample_comm_vo_layer_cfg *vo_layer_config);
|
|
td_s32 sample_comm_vo_start_layer_chn(sample_comm_vo_layer_cfg *vo_layer_config);
|
|
td_s32 sample_comm_vo_stop_layer_chn(sample_comm_vo_layer_cfg *vo_layer_config);
|
|
|
|
td_s32 sample_comm_venc_mem_config(td_void);
|
|
td_s32 sample_comm_venc_create(ot_venc_chn venc_chn, sample_comm_venc_chnl_param *venc_create_param);
|
|
td_s32 sample_comm_venc_start(ot_venc_chn venc_chn, sample_comm_venc_chnl_param *venc_create_param);
|
|
td_s32 sample_comm_venc_stop(ot_venc_chn venc_chn);
|
|
td_s32 sample_comm_venc_snap_start(ot_venc_chn venc_chn, ot_size *size, td_bool support_dcf);
|
|
td_s32 sample_comm_venc_snap_process(ot_venc_chn venc_chn, td_u32 snap_cnt, td_bool save_jpg, td_bool save_thm);
|
|
td_s32 sample_comm_venc_save_jpeg(ot_venc_chn venc_chn, td_u32 snap_cnt);
|
|
td_s32 sample_comm_venc_snap_stop(ot_venc_chn venc_chn);
|
|
td_s32 sample_comm_venc_start_get_stream(ot_venc_chn ve_chn[], td_s32 cnt);
|
|
td_s32 sample_comm_venc_stop_get_stream(td_s32 chn_num);
|
|
td_s32 sample_comm_venc_start_get_stream_svc_t(td_s32 cnt);
|
|
td_s32 sample_comm_venc_get_gop_attr(ot_venc_gop_mode gop_mode, ot_venc_gop_attr *gop_attr);
|
|
td_s32 sample_comm_venc_qpmap_send_frame(ot_vpss_grp vpss_grp, ot_vpss_chn vpss_chn[],
|
|
ot_venc_chn venc_chn[], td_s32 cnt, ot_size size[]);
|
|
td_s32 sample_comm_venc_stop_send_qpmap_frame(td_void);
|
|
td_s32 sample_comm_venc_rateauto_start(ot_venc_chn ve_chn[], td_s32 cnt, ot_vpss_grp vpss_grp, ot_vpss_chn vpss_chn[]);
|
|
td_s32 sample_comm_venc_stop_rateauto(ot_venc_chn ve_chn[], td_s32 cnt);
|
|
|
|
td_s32 sample_comm_venc_send_roimap_frame(ot_vpss_grp vpss_grp, sample_venc_roimap_chn_info roimap_chn_info,
|
|
ot_size size[], ot_venc_jpeg_roi_attr roi_attr[]);
|
|
td_s32 sample_comm_venc_stop_send_roimap_frame(td_void);
|
|
td_s32 sample_comm_venc_save_stream(FILE *fd, ot_venc_stream *stream);
|
|
|
|
td_s32 sample_comm_region_create(td_s32 handle_num, ot_rgn_type type);
|
|
td_s32 sample_comm_region_destroy(td_s32 handle_num, ot_rgn_type type);
|
|
td_s32 sample_comm_region_attach_to_chn(td_s32 handle_num, ot_rgn_type type, ot_mpp_chn *mpp_chn);
|
|
td_s32 sample_comm_region_detach_frm_chn(td_s32 handle_num, ot_rgn_type type, ot_mpp_chn *mpp_chn);
|
|
td_s32 sample_comm_region_set_bit_map(ot_rgn_handle handle, const td_char *bmp_path);
|
|
td_s32 sample_comm_region_get_up_canvas(ot_rgn_handle handle, const td_char *bmp_path);
|
|
td_s32 sample_comm_region_get_min_handle(ot_rgn_type type);
|
|
|
|
td_s32 sample_comm_audio_creat_trd_ai_ao(ot_audio_dev ai_dev, ot_ai_chn ai_chn, ot_audio_dev ao_dev, ot_ao_chn ao_chn);
|
|
td_s32 sample_comm_audio_creat_trd_ai_aenc(ot_audio_dev ai_dev, ot_ai_chn ai_chn, ot_aenc_chn ae_chn);
|
|
td_s32 sample_comm_audio_creat_trd_aenc_adec(ot_aenc_chn ae_chn, ot_adec_chn ad_chn, FILE *aenc_fd);
|
|
td_s32 sample_comm_audio_creat_trd_file_adec(ot_adec_chn ad_chn, FILE *adec_fd);
|
|
td_s32 sample_comm_audio_creat_trd_ao_vol_ctrl(ot_audio_dev ao_dev);
|
|
td_s32 sample_comm_audio_destory_trd_ai(ot_audio_dev ai_dev, ot_ai_chn ai_chn);
|
|
td_s32 sample_comm_audio_destory_trd_aenc_adec(ot_aenc_chn ae_chn);
|
|
td_s32 sample_comm_audio_destory_trd_file_adec(ot_adec_chn ad_chn);
|
|
td_s32 sample_comm_audio_destory_trd_ao_vol_ctrl(ot_audio_dev ao_dev);
|
|
td_s32 sample_comm_audio_destory_all_trd(td_void);
|
|
td_s32 sample_comm_audio_ao_bind_adec(ot_audio_dev ao_dev, ot_ao_chn ao_chn, ot_adec_chn ad_chn);
|
|
td_s32 sample_comm_audio_ao_unbind_adec(ot_audio_dev ao_dev, ot_ao_chn ao_chn, ot_adec_chn ad_chn);
|
|
td_s32 sample_comm_audio_ao_bind_ai(ot_audio_dev ai_dev, ot_ai_chn ai_chn, ot_audio_dev ao_dev, ot_ao_chn ao_chn);
|
|
td_s32 sample_comm_audio_ao_unbind_ai(ot_audio_dev ai_dev, ot_ai_chn ai_chn, ot_audio_dev ao_dev, ot_ao_chn ao_chn);
|
|
td_s32 sample_comm_audio_aenc_bind_ai(ot_audio_dev ai_dev, ot_ai_chn ai_chn, ot_aenc_chn ae_chn);
|
|
td_s32 sample_comm_audio_aenc_unbind_ai(ot_audio_dev ai_dev, ot_ai_chn ai_chn, ot_aenc_chn ae_chn);
|
|
td_s32 sample_comm_audio_start_ai(ot_audio_dev ai_dev_id, td_u32 ai_chn_cnt, ot_aio_attr *aio_attr,
|
|
const sample_comm_ai_vqe_param *ai_vqe_param, ot_audio_dev ao_dev_id);
|
|
td_s32 sample_comm_audio_stop_ai(ot_audio_dev ai_dev_id, td_u32 ai_chn_cnt, td_bool resample_en, td_bool vqe_en);
|
|
td_s32 sample_comm_audio_start_ao(ot_audio_dev ao_dev_id, td_u32 ao_chn_cnt,
|
|
ot_aio_attr *aio_attr, ot_audio_sample_rate in_sample_rate, td_bool resample_en);
|
|
td_s32 sample_comm_audio_stop_ao(ot_audio_dev ao_dev_id, td_u32 ao_chn_cnt, td_bool resample_en);
|
|
td_s32 sample_comm_audio_start_aenc(td_u32 aenc_chn_cnt, const ot_aio_attr *aio_attr, ot_payload_type type);
|
|
td_s32 sample_comm_audio_stop_aenc(td_u32 aenc_chn_cnt);
|
|
td_s32 sample_comm_audio_start_adec(td_u32 adec_chn_cnt, ot_payload_type type);
|
|
td_s32 sample_comm_audio_stop_adec(ot_adec_chn ad_chn);
|
|
td_s32 sample_comm_audio_cfg_acodec(const ot_aio_attr *aio_attr);
|
|
|
|
td_s32 sample_comm_vdec_init_vb_pool(td_u32 chn_num, sample_vdec_attr *past_sample_vdec, td_u32 arr_len);
|
|
td_void sample_comm_vdec_exit_vb_pool(td_void);
|
|
td_void sample_comm_vdec_cmd_ctrl(td_s32 chn_num, vdec_thread_param *vdec_send, pthread_t *vdec_thread,
|
|
td_u32 send_arr_len, td_u32 thread_arr_len);
|
|
td_void sample_comm_vdec_start_send_stream(td_s32 chn_num, vdec_thread_param *vdec_send, pthread_t *vdec_thread,
|
|
td_u32 send_arr_len, td_u32 thread_arr_len);
|
|
td_void sample_comm_vdec_stop_send_stream(td_s32 chn_num, vdec_thread_param *vdec_send, pthread_t *vdec_thread,
|
|
td_u32 send_arr_len, td_u32 thread_arr_len);
|
|
td_void *sample_comm_vdec_send_stream(td_void *args);
|
|
td_s32 sample_comm_vdec_start(td_s32 chn_num, sample_vdec_attr *past_sample_vdec, td_u32 arr_len);
|
|
td_s32 sample_comm_vdec_stop(td_s32 chn_num);
|
|
td_void sample_comm_vdec_cmd_not_circle_send(td_u32 chn_num, vdec_thread_param *vdec_send, pthread_t *vdec_thread,
|
|
td_u32 send_arr_len, td_u32 thread_arr_len);
|
|
td_void sample_comm_vdec_cmd_ctrl_resume(td_u32 chn_num, vdec_thread_param *vdec_send, td_u32 send_arr_len,
|
|
td_u32 thread_arr_len, td_bool *vo_pause);
|
|
td_void sample_comm_vdec_cmd_ctrl_pause(td_u32 chn_num, vdec_thread_param *vdec_send, td_u32 send_arr_len,
|
|
td_u32 thread_arr_len, td_bool *vo_pause);
|
|
td_void sample_comm_vdec_cmd_ctrl_add(td_void);
|
|
td_void sample_comm_vdec_cmd_ctrl_sub(td_void);
|
|
td_void sample_comm_vdec_cmd_ctrl_step(td_s32 chn_num, td_bool vo_pause);
|
|
td_void sample_comm_vdec_print_chn_status(td_s32 chn, ot_vdec_chn_status status);
|
|
|
|
td_void sample_common_vda_handle_sig(td_void);
|
|
td_s32 sample_common_vda_md_start(ot_vda_chn vda_chn, td_u32 chn, ot_size *size);
|
|
td_void sample_common_vda_md_stop(ot_vda_chn vda_chn, td_u32 chn);
|
|
td_s32 sample_common_vda_od_start(ot_vda_chn vda_chn, td_u32 chn, ot_size *size);
|
|
td_void sample_common_vda_od_stop(ot_vda_chn vda_chn, td_u32 chn);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* end of #ifdef __cplusplus */
|
|
|
|
#endif /* end of #ifndef __SAMPLE_COMMON_H__ */
|