Files

2561 lines
82 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* Copyright (c) XMEDIA. All rights reserved.
*/
#ifndef __XMEDIA_VENC_H__
#define __XMEDIA_VENC_H__
#ifndef __KERNEL__
#include <sys/time.h>
#endif
#include "common.h"
//#include "osal.h"
#include "xmedia_video_common.h"
#include "comm_vb.h"
#include "xmedia_vb.h"
#include "math_fun.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
/* 由于原本定义在common_video.h里的数据结构暂时没有的,先定义到此处 */
#if 1
#define CONFIG_CHNL_SUPPORT 1
#define CONFIG_VENC_SUPPORT 1
#define CONFIG_H265E_SUPPORT 1
#define CONFIG_H265E_USERDATA_SUPPORT 1
#define CONFIG_H265E_INTRA_REFRESH_SUPPORT 1
#define CONFIG_H264E_SUPPORT 1
#define CONFIG_H264E_SVC_SUPPORT 1
#define CONFIG_H264E_USERDATA_SUPPORT 1
#define CONFIG_H264E_INTRA_REFRESH_SUPPORT 1
#define CONFIG_JPEGE_SUPPORT 1
#define CONFIG_MJPEGE_SUPPORT 1
#define CONFIG_JPEGE_DCF_SUPPORT 1
#define CONFIG_JPEGE_USERDATA_SUPPORT 1
#define CONFIG_VENC_LOWDELAY_SUPPORT 1
#define CONFIG_VENC_FRAMEBUF_RECYCLE_SUPPORT 1
#define CONFIG_VENC_MPF_VGS_SUPPORT 1
#define CONFIG_VENC_VGS_SUPPORT 1
#define CONFIG_VENC_SMARTP_SUPPORT 1
#define CONFIG_VENC_DUALP_SUPPORT 1
#define CONFIG_VENC_RCNREF_SHARE_SUPPORT 1
#define CONFIG_VENC_DEBREATH_SUPPORT 1
#define CONFIG_VENC_SKIPREF_SUPPORT 1
#define CONFIG_VENC_SCENE0_SUPPORT 1
#define CONFIG_VENC_SCENE1_SUPPORT 1
#define CONFIG_VENC_SCENE2_SUPPORT 1
#define CONFIG_RC_AVBR_SUPPORT 1
#define CONFIG_RC_QPMAP_SUPPORT 1
#define CONFIG_RC_QVBR_SUPPORT 1
#define CONFIG_RC_CVBR_SUPPORT 1
typedef enum {
VENC_RC_MODE_H264CBR = 1,
VENC_RC_MODE_H264VBR,
VENC_RC_MODE_H264AVBR,
VENC_RC_MODE_H264FIXQP,
VENC_RC_MODE_H264QPMAP,
VENC_RC_MODE_MJPEGCBR,
VENC_RC_MODE_MJPEGVBR,
VENC_RC_MODE_MJPEGFIXQP,
VENC_RC_MODE_H265CBR,
VENC_RC_MODE_H265VBR,
VENC_RC_MODE_H265AVBR,
VENC_RC_MODE_H265FIXQP,
VENC_RC_MODE_H265QPMAP,
VENC_RC_MODE_MAX,
} xmedia_venc_rc_mode;
typedef enum {
VENC_GOPMODE_NORMALP = 0,
VENC_GOPMODE_SMARTP,
VENC_GOPMODE_ADVSMARTP,
VENC_GOPMODE_MAX,
} xmedia_venc_gop_mode;
typedef enum {
VENC_RC_PRIORITY_BITRATE_FIRST = 1,
VENC_RC_PRIORITY_FRAMEBITS_FIRST,
VENC_RC_PRIORITY_MAX,
} xmedia_venc_rc_priority;
typedef enum {
H264E_NALU_BSLICE = 0,
H264E_NALU_PSLICE = 1,
H264E_NALU_ISLICE = 2,
H264E_NALU_IDRSLICE = 5,
H264E_NALU_SEI = 6,
H264E_NALU_SPS = 7,
H264E_NALU_PPS = 8,
H264E_NALU_MAX
} xmedia_h264_nalu_type;
typedef enum {
H265E_NALU_BSLICE = 0,
H265E_NALU_PSLICE = 1,
H265E_NALU_ISLICE = 2,
H265E_NALU_IDRSLICE = 19,
H265E_NALU_VPS = 32,
H265E_NALU_SPS = 33,
H265E_NALU_PPS = 34,
H265E_NALU_SEI = 39,
H265E_NALU_MAX
} xmedia_h265_nalu_type;
typedef enum {
H264E_REFSLICE_FOR_1X = 1,
H264E_REFSLICE_FOR_2X = 2,
H264E_REFSLICE_FOR_4X = 5,
H264E_REFSLICE_FOR_MAX
} xmedia_h264e_refslice_type;
typedef enum {
JPEGE_PACK_HEAD = 0,
JPEGE_PACK_ECS,
JPEGE_PACK_APP,
JPEGE_PACK_PIC,
JPEGE_PACK_DCF,
JPEGE_PACK_DCF_PIC,
JPEGE_PACK_LAST_ECS,
JPEGE_PACK_MAX
} xmedia_jpege_pack_type;
typedef enum {
BASE_IDRSLICE = 0,
BASE_PSLICE_REFTOIDR,
BASE_PSLICE_REFBYBASE,
BASE_PSLICE_REFBYENHANCE,
ENHANCE_PSLICE_REFBYENHANCE,
ENHANCE_PSLICE_NOTFORREF,
ENHANCE_PSLICE_MAX
} xmedia_h264e_ref_type;
typedef enum {
VENC_PIC_RECEIVE_SINGLE = 0,
VENC_PIC_RECEIVE_MULTI,
VENC_PIC_RECEIVE_MAX
} xmedia_venc_pic_recive_mode;
typedef enum {
SUPERFRM_NONE=0,
SUPERFRM_DISCARD,
SUPERFRM_REENCODE,
SUPERFRM_MAX
} xmedia_venc_superfrm_mode;
typedef enum {
FRMLOST_NORMAL=0,
FRMLOST_PSKIP,
FRAMELOST_MAX
} xmedia_framelost_mode;
typedef enum {
INTRA_REFRESH_ROW = 0,
INTRA_REFRESH_COLUMN,
INTRA_REFRESH_MAX
} xmedia_venc_intra_refresh_mode;
typedef enum {
MODTYPE_VENC = 1,
MODTYPE_H264E,
MODTYPE_H265E,
MODTYPE_JPEGE,
MODTYPE_RC,
MODTYPE_MAX
} xmedia_venc_mod_type;
typedef enum {
VENC_FRAME_TYPE_NONE = 1,
VENC_FRAME_TYPE_IDR,
VENC_FRAME_TYPE_MAX
} xmedia_venc_frame_type;
typedef enum {
SCENE_0 = 0,
SCENE_1 = 1,
SCENE_2 = 2,
SCENE_MAX
} xmedia_venc_scene_mod;
typedef enum {
FG_REGION_PEOPLE = 0,
FG_REGION_FACE,
FG_REGION_MAX
} xmedia_fg_region_type;
typedef enum {
SVC_RECT_TYPE_FACE,
SVC_RECT_TYPE_PEOPLE,
SVC_RECT_TYPE_MAX
} xmedia_venc_svc_rect_type;
typedef enum {
VENC_PME_SEARCH_WINDOW_64 = 0x0, /* horizontal and vertical search range+-64 */
VENC_PME_SEARCH_WINDOW_128, /* horizontal and vertical search range+-128 */
VENC_PME_SEARCH_WINDOW_128_96, /* horizontal search range+-128, vertical search range+-96 */
VENC_PME_SEARCH_WINDOW_MAX
} xmedia_venc_pme_search_window;
typedef enum {
VENC_IME_SEARCH_WINDOW_W16_H12 = 0x0, /* w[-16,16),h[-12,12) */
VENC_IME_SEARCH_WINDOW_W12_H8, /* w[-12,12),h[-8,8) */
VENC_IME_SEARCH_WINDOW_W8_H4, /* w[-8,8),h[-4,4) */
VENC_IME_SEARCH_WINDOW_W8_H8, /* w[-8,8),h[-8,8) */
VENC_IME_SEARCH_WINDOW_MAX
} xmedia_venc_ime_search_window;
typedef struct {
xmedia_u32 gop;
xmedia_u32 src_frame_rate;
xmedia_u32 dst_frame_rate ;
xmedia_u32 i_qp;
xmedia_u32 p_qp;
xmedia_u32 b_qp;
} xmedia_venc_h264_fixqp;
typedef struct {
xmedia_u32 gop;
xmedia_u32 stat_time;
xmedia_u32 src_frame_rate;
xmedia_u32 dst_frame_rate;
xmedia_u32 bit_rate;
} xmedia_venc_h264_cbr;
typedef struct {
xmedia_u32 gop;
xmedia_u32 stat_time;
xmedia_u32 src_frame_rate;
xmedia_u32 dst_frame_rate;
xmedia_u32 max_bit_rate;
} xmedia_venc_h264_vbr;
typedef struct {
xmedia_u32 gop;
xmedia_u32 stat_time;
xmedia_u32 src_frame_rate;
xmedia_u32 dst_frame_rate ;
xmedia_u32 max_bit_rate;
} xmedia_venc_h264_avbr;
typedef struct {
xmedia_u32 gop;
xmedia_u32 stat_time;
xmedia_u32 src_frame_rate;
xmedia_u32 dst_frame_rate;
} xmedia_venc_h264_qpmap;
typedef struct {
xmedia_u32 gop;
xmedia_u32 stat_time;
xmedia_u32 src_frame_rate;
xmedia_u32 dst_frame_rate;
} xmedia_venc_h265_qpmap;
typedef xmedia_venc_h264_cbr xmedia_venc_h265_cbr;
typedef xmedia_venc_h264_vbr xmedia_venc_h265_vbr;
typedef xmedia_venc_h264_avbr xmedia_venc_h265_avbr;
typedef xmedia_venc_h264_fixqp xmedia_venc_h265_fixqp;
typedef struct {
xmedia_u32 src_frame_rate;
xmedia_u32 dst_frame_rate;
xmedia_u32 q_factor;
} xmedia_venc_mjpeg_fixqp;
typedef struct {
xmedia_u32 stat_time;
xmedia_u32 src_frame_rate;
xmedia_u32 dst_frame_rate;
xmedia_u32 bit_rate;
} xmedia_venc_mjpeg_cbr;
typedef struct {
xmedia_u32 stat_time;
xmedia_u32 src_frame_rate;
xmedia_u32 dst_frame_rate;
xmedia_u32 max_bit_rate;
}xmedia_venc_mjpeg_vbr;
typedef struct {
xmedia_venc_rc_mode rc_mode;
union {
xmedia_venc_h264_cbr h264_cbr;
xmedia_venc_h264_vbr h264_vbr;
xmedia_venc_h264_avbr h264_avbr;
xmedia_venc_h264_fixqp h264_fixqp;
xmedia_venc_h264_qpmap h264_qpmap;
xmedia_venc_mjpeg_cbr mjpeg_cbr;
xmedia_venc_mjpeg_vbr mjpeg_vbr;
xmedia_venc_mjpeg_fixqp mjpeg_fixqp;
xmedia_venc_h265_cbr h265_cbr;
xmedia_venc_h265_vbr h265_vbr;
xmedia_venc_h265_avbr h265_avbr;
xmedia_venc_h265_fixqp h265_fixqp;
xmedia_venc_h265_qpmap h265_qpmap;
};
} xmedia_venc_rc_attr;
typedef struct {
xmedia_u32 max_i_prop;
xmedia_u32 min_i_prop;
xmedia_u32 i_bits_factor;
xmedia_u32 max_qp;
xmedia_u32 min_qp;
xmedia_u32 max_i_qp;
xmedia_u32 min_i_qp;
xmedia_s32 max_re_enc_times;
xmedia_bool qp_map_en;
} xmedia_venc_param_h264_cbr;
typedef struct {
xmedia_s32 change_pos;
xmedia_u32 max_i_prop;
xmedia_u32 min_i_prop;
xmedia_u32 i_bits_factor;
xmedia_s32 max_re_enc_times;
xmedia_bool qp_map_en;
xmedia_u32 max_qp;
xmedia_u32 min_qp;
xmedia_u32 max_i_qp;
xmedia_u32 min_i_qp;
} xmedia_venc_param_h264_vbr;
typedef struct {
xmedia_s32 change_pos;
xmedia_u32 max_i_prop;
xmedia_u32 min_i_prop;
xmedia_u32 i_bits_factor;
xmedia_s32 max_re_enc_times;
xmedia_bool qp_map_en;
xmedia_s32 min_still_percent;
xmedia_u32 max_still_qp;
xmedia_u32 min_still_psnr;
xmedia_u32 max_qp;
xmedia_u32 min_qp;
xmedia_u32 max_i_qp;
xmedia_u32 min_i_qp;
xmedia_u32 min_qp_delta;
xmedia_u32 motion_sensitivity;
} xmedia_venc_param_h264_avbr;
typedef struct {
xmedia_u32 max_q_factor;
xmedia_u32 min_q_factor;
} xmedia_venc_param_mjpeg_cbr;
typedef struct {
xmedia_s32 change_pos;
xmedia_u32 max_q_factor;
xmedia_u32 min_q_factor;
} xmedia_venc_param_mjpeg_vbr;
typedef struct {
xmedia_u32 max_i_prop;
xmedia_u32 min_i_prop;
xmedia_u32 i_bits_factor;
xmedia_u32 max_qp;
xmedia_u32 min_qp;
xmedia_u32 max_i_qp;
xmedia_u32 min_i_qp;
xmedia_s32 max_re_enc_times;
xmedia_bool qp_map_en;
} xmedia_venc_param_h265_cbr;
typedef struct {
xmedia_s32 change_pos;
xmedia_u32 max_i_prop;
xmedia_u32 min_i_prop;
xmedia_u32 i_bits_factor;
xmedia_s32 max_re_enc_times;
xmedia_u32 max_qp;
xmedia_u32 min_qp;
xmedia_u32 max_i_qp;
xmedia_u32 min_i_qp;
xmedia_bool qp_map_en;
} xmedia_venc_param_h265_vbr;
typedef struct {
xmedia_s32 change_pos;
xmedia_u32 max_i_prop;
xmedia_u32 min_i_prop;
xmedia_u32 i_bits_factor;
xmedia_s32 max_re_enc_times;
xmedia_s32 min_still_percent;
xmedia_u32 max_still_qp;
xmedia_u32 min_still_psnr;
xmedia_u32 max_qp;
xmedia_u32 min_qp;
xmedia_u32 max_i_qp;
xmedia_u32 min_i_qp;
xmedia_u32 min_qp_delta;
xmedia_u32 motion_sensitivity;
xmedia_bool qp_map_en;
} xmedia_venc_param_h265_avbr;
typedef struct {
xmedia_bool detect_scene_change;
xmedia_bool adaptive_insert_idr_frame;
} xmedia_venc_scene_change_detect;
typedef struct {
xmedia_u32 adjacent_qp_delta;
xmedia_u32 cu_qp_delta;
xmedia_u32 row_qp_delta;
xmedia_s32 first_frame_start_qp;
xmedia_venc_scene_change_detect scene_change_detect;
union {
xmedia_venc_param_h264_cbr param_h264_cbr;
xmedia_venc_param_h264_vbr param_h264_vbr;
xmedia_venc_param_h264_avbr param_h264_avbr;
xmedia_venc_param_h265_cbr param_h265_cbr;
xmedia_venc_param_h265_vbr param_h265_vbr;
xmedia_venc_param_h265_avbr param_h265_avbr;
xmedia_venc_param_mjpeg_cbr param_mjpeg_cbr;
xmedia_venc_param_mjpeg_vbr param_mjpeg_vbr;
};
} xmedia_venc_rc_param;
typedef struct {
xmedia_bool frm_lost_open;
xmedia_u32 frm_lost_bps_thr;
xmedia_framelost_mode frm_lost_mode;
xmedia_u32 enc_frm_gaps;
} xmedia_venc_frame_lost;
typedef struct {
xmedia_venc_superfrm_mode super_frm_mode;
xmedia_u32 super_i_frm_bits_thr;
xmedia_u32 super_p_frm_bits_thr;
xmedia_venc_rc_priority rc_priority;
} xmedia_venc_super_frame_cfg;
#endif /********************************** end of #if 1 ****************************/
typedef union {
xmedia_h264_nalu_type h264e_type;
xmedia_jpege_pack_type jpege_type;
xmedia_h265_nalu_type h265e_type;
} xmedia_venc_data_type;
typedef struct {
xmedia_venc_data_type pack_type;
xmedia_u32 pack_offset;
xmedia_u32 pack_length;
} xmedia_venc_pack_info;
typedef struct {
xmedia_u64 phy_addr;
xmedia_u8 ATTRIBUTE* vir_addr;
xmedia_u32 ATTRIBUTE len;
xmedia_u64 pts;
xmedia_bool is_frame_end;
xmedia_venc_data_type data_type;
xmedia_u32 offset;
xmedia_u32 data_num;
xmedia_venc_pack_info pack_info[8];
} xmedia_venc_pack;
typedef xmedia_h264e_ref_type xmedia_h265e_ref_type;
typedef struct {
xmedia_u32 pic_bytes_num;
xmedia_h264e_ref_type ref_type;
xmedia_u32 update_attr_cnt;
xmedia_u32 start_qp;
xmedia_u32 mean_qp;
xmedia_bool p_skip;
} xmedia_venc_stream_info_h264;
typedef struct {
xmedia_u32 pic_bytes_num;
xmedia_h265e_ref_type ref_type;
xmedia_u32 update_attr_cnt;
xmedia_u32 start_qp;
xmedia_u32 mean_qp;
xmedia_bool p_skip;
} xmedia_venc_stream_info_h265;
typedef struct {
xmedia_bool sse_enable;
xmedia_u32 sse_val;
} xmedia_venc_sse_info;
typedef struct {
xmedia_u32 madi_val;
xmedia_u32 madp_val;
} xmedia_venc_stream_advance_info_h264;
typedef struct {
} xmedia_venc_stream_advance_info_jpeg;
typedef struct {
xmedia_u32 madi_val;
xmedia_u32 madp_val;
} xmedia_venc_stream_advance_info_h265;
typedef struct {
xmedia_u32 pic_bytes_num;
xmedia_u32 update_attr_cnt;
xmedia_u32 q_factor;
} xmedia_venc_stream_info_jpeg;
typedef struct {
xmedia_venc_pack ATTRIBUTE* pack;
xmedia_u32 ATTRIBUTE pack_count;
xmedia_u32 seq;
union {
xmedia_venc_stream_info_h264 h264_info;
xmedia_venc_stream_info_jpeg jpeg_info;
xmedia_venc_stream_info_h265 h265_info;
};
union {
xmedia_venc_stream_advance_info_h264 advance_h264_info;
xmedia_venc_stream_advance_info_jpeg advance_jpeg_info;
xmedia_venc_stream_advance_info_h265 advance_h265_info;
};
} xmedia_venc_stream;
typedef struct {
xmedia_h265e_ref_type ref_type;
xmedia_u32 pic_bytes_num;
xmedia_u32 pic_cnt;
xmedia_u32 start_qp;
xmedia_u32 mean_qp;
xmedia_bool p_skip;
xmedia_u32 madi_val;
xmedia_u32 madp_val;
} xmedia_venc_stream_info;
typedef struct xmedia_venc_mpf_cfg {
xmedia_u8 large_thumbnail_num;
xmedia_video_size large_thumbnail_size[2];
} xmedia_venc_mpf_cfg;
typedef struct {
xmedia_bool support_dcf;
xmedia_venc_mpf_cfg mpf_cfg;
xmedia_venc_pic_recive_mode rcv_mode;
} xmedia_venc_attr_jpeg;
typedef struct {
} xmedia_venc_attr_mjpeg;
typedef struct {
xmedia_bool rcn_ref_share_buf;
} xmedia_venc_attr_h264;
typedef struct {
xmedia_bool rcn_ref_share_buf;
} xmedia_venc_attr_h265;
typedef struct {
xmedia_payload_type en_type;
xmedia_u32 max_pic_width;
xmedia_u32 max_pic_height;
xmedia_u32 stream_buf_size;
xmedia_u32 profile;
xmedia_bool by_frame;
xmedia_u32 pic_width;
xmedia_u32 pic_height;
union {
xmedia_venc_attr_h264 h264e_attr;
xmedia_venc_attr_h265 h265e_attr;
xmedia_venc_attr_mjpeg mjpege_attr;
xmedia_venc_attr_jpeg jpege_attr;
};
} xmedia_venc_attr;
typedef struct {
xmedia_s32 ip_qp_delta;
} xmedia_venc_gop_normal;
typedef struct {
xmedia_u32 sp_interval;
xmedia_s32 sp_qp_delta;
xmedia_s32 ip_qp_delta;
} xmedia_venc_gop_dual_p;
typedef struct {
xmedia_u32 bg_interval;
xmedia_s32 bg_qp_delta;
xmedia_s32 vi_qp_delta;
} xmedia_venc_gop_smart_p;
typedef struct {
xmedia_u32 bg_interval;
xmedia_s32 bg_qp_delta;
xmedia_s32 vi_qp_delta;
} xmedia_venc_gop_adv_smart_p;
typedef struct {
xmedia_venc_gop_mode gop_mode;
union {
xmedia_venc_gop_normal normal_p;
xmedia_venc_gop_smart_p smart_p;
xmedia_venc_gop_adv_smart_p adv_smart_p;
};
} xmedia_venc_gop_attr;
typedef struct {
xmedia_venc_attr venc_attr;
xmedia_venc_rc_attr rc_attr;
xmedia_venc_gop_attr gop_attr;
} xmedia_venc_chn_attr;
typedef struct {
xmedia_s32 recv_pic_num;
} xmedia_venc_recv_pic_param;
typedef struct {
xmedia_u32 left_pics;
xmedia_u32 left_stream_bytes;
xmedia_u32 left_stream_frames;
xmedia_u32 cur_packs;
xmedia_u32 left_recv_pics;
xmedia_u32 left_enc_pics;
xmedia_bool jpeg_snap_end;
xmedia_venc_stream_info venc_strm_info;
} xmedia_venc_chn_status;
typedef struct {
xmedia_bool split_enable;
xmedia_u32 mb_line_num;
} xmedia_venc_h264_slice_split;
typedef struct {
xmedia_u32 constrained_intra_pred_flag;
} xmedia_venc_h264_intra_pred;
typedef struct {
xmedia_u32 intra_trans_mode;
xmedia_u32 inter_trans_mode;
xmedia_bool scaling_list_valid;
xmedia_u8 inter_scaling_list8X8[64];
xmedia_u8 intra_scaling_list8X8[64];
xmedia_s32 chroma_qp_index_offset;
} xmedia_venc_h264_trans;
typedef struct {
xmedia_u32 entropy_enc_mode_i;
xmedia_u32 entropy_enc_mode_p;
xmedia_u32 entropy_enc_mode_b;
xmedia_u32 cabac_init_idc;
} xmedia_venc_h264_entropy;
typedef struct {
xmedia_u32 pic_order_cnt_type;
} xmedia_venc_h264_poc;
typedef struct {
xmedia_u32 disable_deblocking_filter_idc;
xmedia_s32 slice_alpha_c0_offset_div2;
xmedia_s32 slice_beta_offset_div2;
} xmedia_venc_h264_dblk;
typedef struct {
xmedia_u8 timing_info_present_flag;
xmedia_u8 fixed_frame_rate_flag;
xmedia_u32 num_units_in_tick;
xmedia_u32 time_scale;
} xmedia_venc_vui_h264_time_info;
typedef struct {
xmedia_u8 aspect_ratio_info_present_flag;
xmedia_u8 aspect_ratio_idc;
xmedia_u8 overscan_info_present_flag;
xmedia_u8 overscan_appropriate_flag;
xmedia_u16 sar_width;
xmedia_u16 sar_height ;
} xmedia_venc_vui_aspect_ratio;
typedef struct {
xmedia_u8 video_signal_type_present_flag ;
xmedia_u8 video_format ;
xmedia_u8 video_full_range_flag;
xmedia_u8 colour_description_present_flag ;
xmedia_u8 colour_primaries ;
xmedia_u8 transfer_characteristics;
xmedia_u8 matrix_coefficients;
} xmedia_venc_vui_video_signal;
typedef struct {
xmedia_u8 bitstream_restriction_flag ;
} xmedia_venc_vui_bitstream_restric;
typedef struct {
xmedia_venc_vui_aspect_ratio vui_aspect_ratio;
xmedia_venc_vui_h264_time_info vui_time_info;
xmedia_venc_vui_video_signal vui_video_signal;
xmedia_venc_vui_bitstream_restric vui_bitstream_restric;
} xmedia_venc_h264_vui;
typedef struct {
xmedia_u32 timing_info_present_flag;
xmedia_u32 num_units_in_tick;
xmedia_u32 time_scale;
xmedia_u32 num_ticks_poc_diff_one_minus1;
} xmedia_venc_vui_h265_time_info;
typedef struct {
xmedia_venc_vui_aspect_ratio vui_aspect_ratio;
xmedia_venc_vui_h265_time_info vui_time_info;
xmedia_venc_vui_video_signal vui_video_signal;
xmedia_venc_vui_bitstream_restric vui_bitstream_restric;
} xmedia_venc_h265_vui;
#define VB_SUPPLEMENT_JPEG_MASK VB_SUPPLEMENT_ISPINFO_MASK
#define JPEG_DRSCRIPTION_LENGTH 32
#define JPEG_CAPTURE_TIME_LENGTH 20
typedef struct {
xmedia_u8 image_description[JPEG_DRSCRIPTION_LENGTH];//图像描述
xmedia_u8 maker[JPEG_DRSCRIPTION_LENGTH];//相机制造商
xmedia_u8 model[JPEG_DRSCRIPTION_LENGTH];//相机型号
xmedia_u8 software[JPEG_DRSCRIPTION_LENGTH];//软件版本
xmedia_u8 light_source;//光源
xmedia_u32 focal_length;//焦距
xmedia_u8 scene_type;//场景类型
xmedia_u8 custom_rendered;//是否经过特殊处理
xmedia_u8 focal_length_in35mm_film;//35mm焦距
xmedia_u8 scene_capture_type;//现场捕捉类型
xmedia_u8 gain_control;//增益控制
xmedia_u8 contrast;//对比度模式
xmedia_u8 saturation;//饱和度
xmedia_u8 sharpness;//锐度
xmedia_u8 metering_mode;//测光方式
} xmedia_venc_exif_info;
typedef struct {
xmedia_u32 q_factor;
xmedia_u8 y_qt[64];
xmedia_u8 cb_qt[64];
xmedia_u8 cr_qt[64];
xmedia_u32 mcu_per_ecs;
xmedia_u32 max_renc_times;
xmedia_bool ecs_output_en;
} xmedia_venc_jpeg_param;
typedef struct {
xmedia_u8 y_qt[64];
xmedia_u8 cb_qt[64];
xmedia_u8 cr_qt[64];
xmedia_u32 mcu_per_ecs;
xmedia_u32 max_renc_times;
xmedia_bool ecs_output_en;
} xmedia_venc_mjpeg_param;
typedef struct {
xmedia_u32 index;
xmedia_bool enable;
xmedia_bool abs_qp;
xmedia_s32 qp;
xmedia_video_rect rect;
} xmedia_venc_roi_attr;
typedef struct {
xmedia_u32 index;
xmedia_bool enable[3]; // 0:I, 1:P/B, 2:VI
xmedia_bool abs_qp[3];
xmedia_s32 qp[3];
xmedia_video_rect rect[3];
}xmedia_venc_roi_attr_ex;
typedef struct {
xmedia_s32 src_frm_rate;
xmedia_s32 dst_frm_rate;
} xmedia_venc_roibg_frame_rate;
typedef struct {
xmedia_u32 base;
xmedia_u32 enhance;
xmedia_bool enable_pred;
} xmedia_venc_ref_param;
typedef struct {
xmedia_u64 phy_addr[MAX_TILE_NUM];
xmedia_void ATTRIBUTE* user_addr[MAX_TILE_NUM];
xmedia_u64 ATTRIBUTE buf_size[MAX_TILE_NUM];
} xmedia_venc_stream_buf_info;
typedef struct {
xmedia_bool split_enable;
xmedia_u32 lcu_line_num;
} xmedia_venc_h265_slice_split;
typedef struct {
xmedia_u32 constrained_intra_pred_flag;
xmedia_u32 strong_intra_smoothing_enabled_flag;
} xmedia_venc_h265_pu;
typedef struct {
xmedia_s32 cb_qp_offset;
xmedia_s32 cr_qp_offset;
xmedia_bool scaling_list_enabled;
xmedia_bool scaling_list_tu4_valid;
xmedia_u8 inter_scaling_list4X4[2][16];
xmedia_u8 intra_scaling_list4X4[2][16];
xmedia_bool scaling_list_tu8_valid;
xmedia_u8 inter_scaling_list8X8[2][64];
xmedia_u8 intra_scaling_list8X8[2][64];
xmedia_bool scaling_list_tu16_valid;
xmedia_u8 inter_scaling_list16X16[2][64];
xmedia_u8 intra_scaling_list16X16[2][64];
xmedia_bool scaling_list_tu32_valid;
xmedia_u8 inter_scaling_list32X32[64];
xmedia_u8 intra_scaling_list32X32[64];
} xmedia_venc_h265_trans;
typedef struct {
xmedia_u32 cabac_init_flag;
} xmedia_venc_h265_entropy;
typedef struct {
xmedia_u32 slice_deblocking_filter_disabled_flag;
xmedia_s32 slice_beta_offset_div2;
xmedia_s32 slice_tc_offset_div2;
} xmedia_venc_h265_dblk;
typedef struct {
xmedia_u32 slice_sao_en;
} xmedia_venc_h265_sao;
typedef struct {
xmedia_bool refresh_enable;
xmedia_venc_intra_refresh_mode intra_refresh_mode;
xmedia_u32 refresh_num;
xmedia_u32 req_i_qp;
} xmedia_venc_intra_refresh;
typedef struct {
xmedia_u32 one_stream_buffer;
xmedia_u32 h264e_mini_buf_mode;
xmedia_u32 h264e_power_save_en;
xmedia_video_vb_source h264e_vb_source;
xmedia_bool qp_hstgrm_en;
} xmedia_venc_mod_h264e;
typedef struct {
xmedia_u32 one_stream_buffer;
xmedia_u32 h265e_mini_buf_mode;
xmedia_u32 h265e_power_save_en;
xmedia_video_vb_source h265e_vb_source;
xmedia_bool qp_hstgrm_en;
} xmedia_venc_mod_h265e;
typedef struct {
xmedia_u32 jpege_one_stream_buffer;
xmedia_u32 jpege_mini_buf_mode;
xmedia_u32 jpege_clear_stream_buf;
xmedia_u32 jpege_dring_mode;
} xmedia_venc_mod_jpege;
typedef struct {
xmedia_u32 clr_stat_after_set_br;
} xmedia_venc_mod_rc;
typedef struct {
xmedia_u32 venc_buffer_cache;
xmedia_u32 frame_buf_recycle;
} xmedia_venc_mod_venc;
typedef struct {
xmedia_venc_mod_type venc_mod_type;
union {
xmedia_venc_mod_venc venc_mod_param;
xmedia_venc_mod_h264e h264e_mod_param;
xmedia_venc_mod_h265e h265e_mod_param;
xmedia_venc_mod_jpege jpege_mod_param;
xmedia_venc_mod_rc rc_mod_param;
};
} xmedia_venc_param_mod;
typedef struct {
xmedia_bool qp_map_valid;
xmedia_bool skip_weight_valid;
xmedia_u32 blk_start_qp;
xmedia_u64 qp_map_phy_addr;
xmedia_u64 skip_weight_phy_addr;
xmedia_venc_frame_type frame_type;
} xmedia_user_rc_info;
typedef struct {
xmedia_video_frame_info user_frame;
xmedia_user_rc_info user_rc_info;
} xmedia_user_frame_info;
typedef struct {
xmedia_u32 index;
xmedia_bool enable;
xmedia_video_rect rect;
} xmedia_venc_sse_cfg;
typedef struct {
xmedia_bool enable;
xmedia_video_rect rect;
} xmedia_venc_crop_info;
typedef struct {
xmedia_s32 src_frm_rate;
xmedia_s32 dst_frm_rate;
} xmedia_venc_frame_rate;
typedef struct {
xmedia_bool color_to_grey;
xmedia_u32 priority;
xmedia_u32 max_strm_cnt;
xmedia_u32 poll_wake_up_frm_cnt;
xmedia_venc_crop_info crop_cfg;
xmedia_venc_frame_rate frame_rate;
xmedia_bool jpeg_420_to_422_enable;
} xmedia_venc_chn_param;
typedef struct {
xmedia_bool background_cu_rc_en;
xmedia_bool tracking_upper_layer_en;
xmedia_bool skip_weight_en;
xmedia_s32 fg_weight;
xmedia_s32 bg_weight;
xmedia_u32 background_thresh[RC_BG_THR_SIZE];
xmedia_s32 background_qp_delta[RC_BG_THR_SIZE];
xmedia_s32 tracking_qp_delta[RC_BG_THR_SIZE];
} xmedia_venc_foreground_protect;
typedef struct {
xmedia_bool enable;
xmedia_s32 strength0;
xmedia_s32 strength1;
} xmedia_venc_debreath_effect;
typedef struct {
xmedia_video_operation_mode pred_mode;
xmedia_s8 cu32_intra_cost_prefer;
xmedia_s8 cu16_intra_cost_prefer;
xmedia_s8 cu8_intra_cost_prefer;
xmedia_s8 cu4_intra_cost_prefer;
xmedia_s8 cu8_inter_nomal_cost_prefer;
xmedia_s8 cu16_inter_nomal_cost_prefer;
xmedia_s8 cu32_inter_nomal_cost_prefer;
xmedia_s8 cu8_merge_cost_prefer;
xmedia_s8 cu16_merge_cost_prefer;
xmedia_s8 cu32_merge_cost_prefer;
xmedia_s8 cu8_skip_merge_cost_prefer;
xmedia_s8 cu16_skip_merge_cost_prefer;
xmedia_s8 cu32_skip_merge_cost_prefer;
xmedia_s8 cu8_block_split_cost_prefer;
xmedia_s8 cu16_block_split_cost_prefer;
xmedia_s8 cu32_block_split_cost_prefer;
xmedia_s32 cu8x8_part_4x4; /* Does 8x8 cu divide 4x4 configuration */
} xmedia_venc_rc_rdo_prefer;
typedef struct {
xmedia_video_operation_mode pred_mode;
xmedia_u32 intra32_cost_thres;
xmedia_u32 intra32_cost_offset;
xmedia_u32 intra16_cost_thres;
xmedia_u32 intra16_cost_offset;
xmedia_u32 intra8_cost_thres;
xmedia_u32 intra8_cost_offset;
xmedia_u32 intra4_cost_thres;
xmedia_u32 intra4_cost_offset;
xmedia_u32 inter64_cost_thres;
xmedia_u32 inter64_cost_offset;
xmedia_u32 inter32_cost_thres;
xmedia_u32 inter32_cost_offset;
xmedia_u32 inter16_cost_thres;
xmedia_u32 inter16_cost_offset;
xmedia_u32 inter8_cost_thres;
xmedia_u32 inter8_cost_offset;
xmedia_u32 inter64_skip_cost_thres;
xmedia_u32 inter64_skip_cost_offset;
xmedia_u32 inter32_skip_cost_thres;
xmedia_u32 inter32_skip_cost_offset;
xmedia_u32 inter16_skip_cost_thres;
xmedia_u32 inter16_skip_cost_offset;
xmedia_u32 inter8_skip_cost_thres;
xmedia_u32 inter8_skip_cost_offset;
xmedia_s32 cu8x8_part_4x4; /* 8x8 cu是否划分4x4配置 */
} xmedia_venc_cu_prediction;
typedef struct {
xmedia_bool skip_bias_en;
xmedia_u32 skip_thresh_gain;
xmedia_u32 skip_thresh_offset;
xmedia_u32 skip_background_cost;
xmedia_u32 skip_foreground_cost;
} xmedia_venc_skip_bias;
typedef struct {
xmedia_bool hierarchical_qp_en;
xmedia_s32 hierarchical_qp_delta[4];
xmedia_s32 hierarchical_frame_num[4];
} xmedia_venc_hierarchical_qp;
typedef struct {
xmedia_u32 pic_vb_pool;
xmedia_u32 pic_info_vb_pool;
} xmedia_venc_chn_pool;
typedef struct {
xmedia_u32 min;
xmedia_u32 max;
} xmedia_rc_range;
typedef struct {
xmedia_bool intra;
xmedia_rc_range pix_num;
xmedia_rc_range bpp;
xmedia_rc_range qp;
xmedia_rc_range madi;
xmedia_rc_range luma_dist;
xmedia_rc_range zero_pme_sad;
xmedia_rc_range best_pme_sad;
xmedia_rc_range intra_ratio;
xmedia_rc_range fg_ratio;
xmedia_rc_range still_ratio;
} xmedia_rc_condition;
typedef struct {
xmedia_venc_rc_rdo_prefer rdo_prefer;
xmedia_u32 intra32_split_var_thrd;
xmedia_u32 inter32_split_var_thrd;
xmedia_u8 i_bits_factor;
xmedia_s8 flat_delta_qp_fg[RC_AQ_DQP_SIZE];
xmedia_s8 flat_delta_qp_bg[RC_AQ_DQP_SIZE];
xmedia_u8 bg_thrd[RC_BG_THR_SIZE];
xmedia_s8 tk_delta_qp[RC_BG_THR_SIZE];
xmedia_u8 skin_regulating;
xmedia_u8 ip_qp_delta_up;
xmedia_u8 max_frame_delta_qp;
xmedia_u8 skip_weight_en;
xmedia_s8 fg_weight;
xmedia_s8 bg_weight;
xmedia_u8 skin_max_qp_by_slice;
xmedia_u8 rc_dct_coeff_adj_qp_thrds;
} xmedia_param_adjust;
typedef struct {
xmedia_bool skin_qp_adjust_flag;
xmedia_u8 skin_max_qp_by_slice;
xmedia_u8 min_skin_cb;
xmedia_u8 max_skin_cb;
xmedia_u8 min_skin_cr;
xmedia_u8 max_skin_cr;
xmedia_u8 skin_thrd[RC_SKIN_THR_SIZE];
xmedia_s8 skin_qp[RC_SKIN_THR_SIZE];
} xmedia_skin_param;
typedef struct {
xmedia_u8 intra_cu8_texture;
xmedia_u8 intra_cu32_flat;
xmedia_u8 intra_cu32_strong_edge;
xmedia_u8 intra_cu32_texture;
xmedia_u8 intra_cu16_flat;
xmedia_u8 intra_cu16_strong_edge;
xmedia_u8 intra_cu16_texture;
xmedia_u8 intra_cu8_flat;
xmedia_u8 intra_cu8_strong_edge;
xmedia_u8 cu8_intra_pref_w1;
xmedia_u8 cu8_intra_pref_w2;
xmedia_u8 cu16_intra_pref_w1;
xmedia_u8 cu16_intra_pref_w2;
xmedia_u8 cu32_intra_pref_w1;
xmedia_u8 cu32_intra_pref_w2;
} xmedia_rdo_intra_prefer_param;
typedef struct {
xmedia_s8 dark_flat_delta_qp;
xmedia_u8 dark_flat_variance_thrd;
xmedia_u8 dark_flat_luma_thrd;
} xmedia_dark_param;
typedef struct {
xmedia_bool i_slice_force_32x32_split_var_en;
xmedia_u16 i_slice_force_32x32_split_var;
} xmedia_i_split_param;
typedef struct {
xmedia_u16 p_slice_intra32_split_var_thrd;
xmedia_u16 p_slice_inter32_split_var_thrd;
}xmedia_p_split_param;
typedef struct {
xmedia_s8 strong_edge_qp;
xmedia_s8 weak_edge_qp;
} xmedia_edge_param;
typedef struct {
xmedia_u8 max_bu_ds_qp;
xmedia_u8 min_bu_ds_qp;
xmedia_s8 bu_ds_qp_offset_any_fg;
xmedia_s8 bu_ds_qp_offset_all_bg;
xmedia_u8 max_sad_qp;
xmedia_u8 max_me_qp;
} xmedia_bu_ds_param;
typedef struct {
xmedia_bool dct_coeff_adj_en;
xmedia_bool chr_dct_coeff_adj_en;
} xmedia_dct_coff_param;
typedef struct {
xmedia_bool intra_pref_enable;
xmedia_bool mvout_det_en;
xmedia_bool bu_dist_use_bg_info_en;
xmedia_bool madi_en;
xmedia_bool pme_mvp_adjust_en;
xmedia_bool tk_det_en;
xmedia_bool fg_flat_en;
xmedia_bool bg_det_en;
xmedia_bool flat_det_en;
xmedia_bool edge_det_weak_en;
xmedia_bool edge_det_strong_en;
xmedia_bool bias_det_qp_en;
xmedia_bool pme_mvbits_modify_en;
} xmedia_rc_ctrl_param;
typedef struct {
xmedia_u8 bia_adjust_max_qp;
xmedia_u8 bia_adjust_max_val;
xmedia_u8 base_bias_max_qp;
xmedia_u8 bias_swins;
xmedia_u8 est_qp_method;
} xmedia_cu_rc_param;
typedef struct {
xmedia_u32 i_slice_qt_thr0;
xmedia_u32 i_slice_qt_thr1;
} xmedia_qt_thr_param;
typedef struct {
xmedia_u8 mvout_base_qp;
xmedia_s8 mvout_qp_delta;
} xmedia_mvout_param;
typedef struct {
xmedia_s8 min_qp_limit_first_p;
xmedia_u8 max_frame_delta_qp;
xmedia_u16 bits_clip_last_level_p;
xmedia_u16 bits_clip_last_level_i;
xmedia_bool peak_rate_clip; // 是否开启峰值码率clip
xmedia_u8 peak_rate_limit;
xmedia_s8 peak_rate_shift;
xmedia_u8 peak_rate_lower_bits;
xmedia_s8 still_max_frm_delta_qp;
xmedia_u8 still_scene_delay;
xmedia_u8 still_scene_judge_method;
xmedia_bool scene_change_smooth;
xmedia_u8 ip_qp_delta_low;
xmedia_u8 max_p_frame_qp;
xmedia_u8 max_p_frame_qp_still;
xmedia_u32 max_i_bits; // I帧bits不大于 max_i_bits
xmedia_u32 min_i_bits; // I帧bits不小于 max_i_bits
} xmedia_rc_bits_clip;
typedef struct {
xmedia_s32 flat_str_i; // I帧平坦区域的AQ强度, 范围为0-655360
xmedia_s32 flat_str_p; // P帧平坦区域的AQ强度, 范围为0-655360
xmedia_s32 complex_str_i; // I帧复杂区域的AQ强度, 范围为0-655360
xmedia_s32 complex_str_p; // P帧复杂区域的AQ强度, 范围为0-655360
} xmedia_aq_param;
typedef struct {
xmedia_rc_bits_clip bits_clip; // 码率稳定或是I帧bits限制的参数
xmedia_rc_ctrl_param rc_ctrl; // 码控工具开关
xmedia_bu_ds_param bu_ds; // bu级的DS控制参数
xmedia_cu_rc_param cu_rc; // cu级的码控参数
xmedia_skin_param skin; // 肤色控制参数
xmedia_dark_param dark; // 暗区控制参数
xmedia_i_split_param i_split;
xmedia_p_split_param p_split;
xmedia_rdo_intra_prefer_param rdo_intra_prefer;
xmedia_dct_coff_param dct_coff;
xmedia_edge_param edge;
xmedia_qt_thr_param qt_thr;
xmedia_mvout_param mvout;
xmedia_aq_param aq;
xmedia_u8 tk_keep_len; // tk区域的保持帧数-1, 如果设置1代表TK区域持续2帧
xmedia_u16 sobel_gradthers;
xmedia_u8 pme_zero_mvbits_weight;
xmedia_rc_condition cond[RC_COND_CNT]; //rc触发条件
xmedia_param_adjust cond_param[RC_COND_CNT]; // rc条件控制参数,当满足cond内的某组条件,会应用对应的cond_param参数
} xmedia_venc_rc_adv_param;
typedef struct {
xmedia_u8 qpmap_value_i;
xmedia_u8 qpmap_value_p;
xmedia_s8 skipmap_value;
} xmedia_venc_svc_map_param;
typedef struct {
xmedia_venc_svc_map_param fg_region[FG_REGION_MAX];
xmedia_venc_svc_map_param activity_region;
xmedia_venc_svc_map_param bg_region;
xmedia_bool fg_protect_adaptive_en;
xmedia_u8 bg_area_thr;
} xmedia_venc_svc_param;
#define VENC_MAX_SVC_RECT_NUM 32
typedef struct {
xmedia_u32 rect_num;
xmedia_video_size base_resolution;
xmedia_video_rect rect_attr[VENC_MAX_SVC_RECT_NUM];
xmedia_venc_svc_rect_type detect_type[VENC_MAX_SVC_RECT_NUM];
xmedia_u64 pts;
} xmedia_venc_svc_rect_info;
typedef struct {
xmedia_u16 scene_complexity;
xmedia_u8 object_level;
} xmedia_venc_svc_detect_result;
typedef struct {
xmedia_venc_pme_search_window pme_search;
xmedia_venc_ime_search_window ime_search;
} xmedia_venc_search_window;
typedef struct {
xmedia_bool switch_enable;
xmedia_s32 pipe_id;
} xmedia_venc_switch_chn;
typedef struct {
xmedia_s32 chn_id;
xmedia_u32 rcn_ratio;
}xmedia_venc_rcn_ratio;
typedef struct {
xmedia_u32 lcu;
xmedia_u32 total_lcu;
}xmedia_venc_report_lcu;
typedef struct {
xmedia_bool skip_enable;
xmedia_u32 vi_frame_rate;
xmedia_u32 skip_frame_rate;
} xmedia_venc_skip_param;
#define SVP_MAXINUM_LIMIT 10000
#ifndef __KERNEL__
/*
* 函数功能:监听某个venc通道是否有码流待获取
* 函数参数:
chn_mask - [31:16] venc最大通道个数为16[31:16]的bit位设置为0
[15: 0] 对所有为1的bit位对应的通道进行监听
* timeout_val - 设置超时时间
设置为NULL:永久阻塞;设置为0,不阻塞;设置为大于0,阻塞对应时间
* 返回值:
* XMEDIA_FAILURE - 失败
* XMEDIA_SUCCESS - 有码流待收取
* XMEDIA_ERRCODE_INVALID_PARAM - 设置chn_mask值非法,[31:16]有bit位设置为1
* XMEDIA_ERRCODE_TIMEOUT - 超出设置阻塞时间未检测到码流
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
*/
xmedia_s32 xmedia_venc_select(xmedia_u32 chn_mask, struct timeval *timeout_val);
#endif
/*
* 函数功能:获取某个venc通道的fd
* 函数参数:
venc_chn - 通道号
* 返回值:
* venc_chn对应通道的fd
*/
xmedia_s32 xmedia_venc_get_fd(xmedia_s32 venc_chn);
/*
* 函数功能:关闭某个venc通道的fd
* 函数参数:
venc_chn - 通道号
* 返回值:
* XMEDIA_SUCCESS - 关闭对应通道fd成功
* XMEDIA_FAILURE - 函数执行失败
*/
xmedia_s32 xmedia_venc_close_fd(xmedia_s32 venc_chn);
/*
* 函数功能:VENC模块初始化
* 函数参数:
* 无
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
*/
xmedia_s32 xmedia_venc_init(xmedia_void);
/*
* 函数功能:VENC模块去初始化
* 函数参数:
* 无
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
*/
xmedia_s32 xmedia_venc_exit(xmedia_void);
/*
* 函数功能:创建VENC通道
* 函数参数:
* venc_chn - 通道号
* chn_attr - 通道参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的类型
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_NO_BUFFER_FREE - 没有空闲buffer
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_EXIST - 通道已创建
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 内存不足
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
*/
xmedia_s32 xmedia_venc_create_chn(xmedia_s32 venc_chn, const xmedia_venc_chn_attr *chn_attr);
/*
* 函数功能:销毁VENC通道
* 函数参数:
* venc_chn - 通道号
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_PERMITTED - 操作不允许
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_BUSY - 设备正在执行其他操作
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_NULL_PTR - 参数为空指针
* XMEDIA_ERRCODE_TYPE_ERROR - chnl模块通道类型不支持
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
*/
xmedia_s32 xmedia_venc_destroy_chn(xmedia_s32 venc_chn);
/*
* 函数功能:VENC通道重置
* 函数参数:
* venc_chn - 通道号
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_PERMITTED - 操作不允许
* XMEDIA_ERRCODE_TYPE_ERROR - chnl模块通道类型不支持
*/
xmedia_s32 xmedia_venc_reset_chn(xmedia_s32 venc_chn);
/*
* 函数功能:VENC通道开始收帧&编码
* 函数参数:
* venc_chn - 通道号
* recv_param - jpge持续编码多少帧,设置为-1为不限编码帧数,h264/h265无效
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_PERMITTED - 操作不允许
* XMEDIA_ERRCODE_NOT_EXIST - 未创建通道
*/
xmedia_s32 xmedia_venc_start_recv_frame(xmedia_s32 venc_chn, const xmedia_venc_recv_pic_param *recv_param);
/*
* 函数功能:VENC通道停止收帧&编码
* 函数参数:
* venc_chn - 通道号
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
*/
xmedia_s32 xmedia_venc_stop_recv_frame(xmedia_s32 venc_chn);
/*
* 函数功能:获取VENC通道状态
* 函数参数:
* venc_chn - 通道号
* status - 通道状态集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
*/
xmedia_s32 xmedia_venc_query_status(xmedia_s32 venc_chn, xmedia_venc_chn_status *status);
/*
* 函数功能:设置VENC通道参数
* 函数参数:
* venc_chn - 通道号
* chn_attr - 通道参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
* XMEDIA_ERRCODE_NOT_PERMITTED - 操作不允许
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的协议类型
* XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 内存不足
* XMEDIA_ERRCODE_TYPE_ERROR - 不支持的类型
*/
xmedia_s32 xmedia_venc_set_chn_attr(xmedia_s32 venc_chn, const xmedia_venc_chn_attr *chn_attr);
/*
* 函数功能:获取VENC通道参数
* 函数参数:
* venc_chn - 通道号
* chn_attr - 通道参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
*/
xmedia_s32 xmedia_venc_get_chn_attr(xmedia_s32 venc_chn, xmedia_venc_chn_attr *chn_attr);
/*
* 函数功能:获取VENC通道码流
* 函数参数:
* venc_chn - 通道号
* stream - 码流信息
* milli_sec - 超时等待时间(毫秒),设置为-1为阻塞式等待
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 内存不足
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
* XMEDIA_ERRCODE_NOT_SUPPORT - milli_sec值设置<-1,返回该值
* XMEDIA_ERRCODE_BUSY - 在指定的milli_sec内被唤醒,并且没有被信号打断
* XMEDIA_ERRCODE_BUFFER_EMPTY - buffer为空,获取不到帧
*/
xmedia_s32 xmedia_venc_get_stream(xmedia_s32 venc_chn, xmedia_venc_stream *stream, xmedia_s32 milli_sec);
/*
* 函数功能:释放码流
* 函数参数:
* venc_chn - 通道号
* stream - 码流信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
* XMEDIA_ERRCODE_NO_BUFFER_FREE - 没有帧需要释放
*/
xmedia_s32 xmedia_venc_release_stream(xmedia_s32 venc_chn, xmedia_venc_stream *stream);
/*
* 函数功能:编码插入用户数据
* 函数参数:
* venc_chn - 通道号
* data - 要插入的数据的虚拟地址
* len - 要插入的数据长度
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持插入用户数据
* XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 分配内存失败
* XMEDIA_ERRCODE_BUFFER_FULL - 无法分配SEI memory
* XMEDIA_ERRCODE_NO_BUFFER_FREE - 获取队列节点失败
*/
xmedia_s32 xmedia_venc_insert_user_data(xmedia_s32 venc_chn, xmedia_u8 *data, xmedia_u32 len);
/*
* 函数功能:用户送帧编码
* 函数参数:
* venc_chn - 通道号
* frame - 帧信息
* milli_sec - 设置超时时间(毫秒),-1为阻塞式等待, 0 非阻塞, > 0 超时时间
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_PERMITTED - 操作不允许
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
* XMEDIA_ERRCODE_BUSY - 在指定的milli_sec内被唤醒,并且没有被信号打断
* XMEDIA_ERRCODE_NO_BUFFER_FREE - 未获取到可用的buffer
*/
xmedia_s32 xmedia_venc_send_frame(xmedia_s32 venc_chn, const xmedia_video_frame_info *frame_info, xmedia_s32 milli_sec);
/*
* 函数功能:用户送帧编码,可自定义qpmap和skipmap
* 函数参数:
* venc_chn - 通道号
* frame - 帧信息
* milli_sec - 设置超时时间(毫秒),-1为阻塞式等待, 0 非阻塞, > 0 超时时间
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_PERMITTED - 操作不允许
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
* XMEDIA_ERRCODE_BUSY - 在指定的milli_sec内被唤醒,并且没有被信号打断
* XMEDIA_ERRCODE_NO_BUFFER_FREE - 未获取到可用的buffer
*/
xmedia_s32 xmedia_venc_send_frame_ex(xmedia_s32 venc_chn, const xmedia_user_frame_info *frame_info, xmedia_s32 milli_sec);
/*
* 函数功能:请求idr帧
* 函数参数:
* venc_chn - 通道号
* instant - 实例
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持请求idr帧协议类型
*/
xmedia_s32 xmedia_venc_request_idr(xmedia_s32 venc_chn, xmedia_bool instant);
/*
* 函数功能:设置roi参数
* 函数参数:
* venc_chn - 通道号
* roi_attr - roi参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
* XMEDIA_ERRCODE_NOT_SUPPORT - 协议类型不支持roi
*/
xmedia_s32 xmedia_venc_set_roi_attr(xmedia_s32 venc_chn, const xmedia_venc_roi_attr *roi_attr);
/*
* 函数功能:获取roi参数
* 函数参数:
* venc_chn - 通道号
* roi_attr - roi参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
* XMEDIA_ERRCODE_NOT_SUPPORT - 协议类型不支持roi
*/
xmedia_s32 xmedia_venc_get_roi_attr(xmedia_s32 venc_chn, xmedia_u32 index, xmedia_venc_roi_attr *roi_attr);
/*
* 函数功能:获取不同帧类型的扩展roi参数
* 函数参数:
* venc_chn - 通道号
* roi_attr - roi参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
* XMEDIA_ERRCODE_NOT_SUPPORT - 协议类型不支持roi
*/
xmedia_s32 xmedia_venc_get_roi_attr_ex(xmedia_s32 venc_chn, xmedia_u32 index, xmedia_venc_roi_attr_ex *roi_attr_ex);
/*
* 函数功能:针对不同帧类型,设置扩展roi参数
* 函数参数:
* venc_chn - 通道号
* roi_attr - roi参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_FAILURE - 函数执行失败
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_INVALID_PARAM - 无效参数
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 入参为空指针
* XMEDIA_ERRCODE_NOT_EXIST - 通道未创建
* XMEDIA_ERRCODE_NOT_SUPPORT - 协议类型不支持roi
*/
xmedia_s32 xmedia_venc_set_roi_attr_ex(xmedia_s32 venc_chn, const xmedia_venc_roi_attr_ex *roi_attr_ex);
/*
* 函数功能:设置jpeg编码参数(压缩率、量化表、ecs)
* 函数参数:
* venc_chn - 通道号
* jpeg_param - jpeg编码参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_jpeg_param(xmedia_s32 venc_chn, const xmedia_venc_jpeg_param *jpeg_param);
/*
* 函数功能:获取jpeg编码参数(压缩率、量化表、ecs)
* 函数参数:
* venc_chn - 通道号
* jpeg_param - jpeg编码参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_jpeg_param(xmedia_s32 venc_chn, xmedia_venc_jpeg_param *jpeg_param);
/*
* 函数功能:设置jpeg exif信息
* 函数参数:
* venc_chn - 通道号
* exif_info - exif信息集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_jpeg_exif_info(xmedia_s32 venc_chn, xmedia_venc_exif_info *exif_info);
/*
* 函数功能:获取jpeg exif信息
* 函数参数:
* venc_chn - 通道号
* exif_info - exif信息集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_jpeg_exif_info(xmedia_s32 venc_chn, xmedia_venc_exif_info *exif_info);
/*
* 函数功能:设置mjpeg编码参数(量化表、ecs)
* 函数参数:
* venc_chn - 通道号
* mjpeg_param - jpeg编码参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_mjpeg_param(xmedia_s32 venc_chn, const xmedia_venc_mjpeg_param *mjpeg_param);
/*
* 函数功能:获取mjpeg编码参数(量化表、ecs)
* 函数参数:
* venc_chn - 通道号
* mjpeg_param - jpeg编码参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_mjpeg_param(xmedia_s32 venc_chn, xmedia_venc_mjpeg_param *mjpeg_param);
/*
* 函数功能:获取rc参数
* 函数参数:
* venc_chn - 通道号
* rc_param - rc参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_rc_param(xmedia_s32 venc_chn, xmedia_venc_rc_param *rc_param);
/*
* 函数功能:设置rc参数
* 函数参数:
* venc_chn - 通道号
* rc_param - rc参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_rc_param(xmedia_s32 venc_chn, const xmedia_venc_rc_param *rc_param);
/*
* 函数功能:获取码流buf信息
* 函数参数:
* venc_chn - 通道号
* stream_buf_info - 码流信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_NOT_ENOUGH_MEMORY - 内存不够
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_stream_buf_info(xmedia_s32 venc_chn, xmedia_venc_stream_buf_info *stream_buf_info);
/*
* 函数功能:设置h265 slice划分
* 函数参数:
* venc_chn - 通道号
* slice_split - slice划分信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_h265_slice_split(xmedia_s32 venc_chn, const xmedia_venc_h265_slice_split *slice_split);
/*
* 函数功能:获取h265 slice划分
* 函数参数:
* venc_chn - 通道号
* slice_split - slice划分信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_h265_slice_split(xmedia_s32 venc_chn, xmedia_venc_h265_slice_split *slice_split);
/*
* 函数功能:设置h265 trans信息
* 函数参数:
* venc_chn - 通道号
* h265_trans - trans信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_h265_trans(xmedia_s32 venc_chn, const xmedia_venc_h265_trans *h265_trans);
/*
* 函数功能:获取h265 trans信息
* 函数参数:
* venc_chn - 通道号
* h265_trans - trans信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_h265_trans(xmedia_s32 venc_chn, xmedia_venc_h265_trans *h265_trans);
/*
* 函数功能:设置h265 去块效应参数
* 函数参数:
* venc_chn - 通道号
* h265_dblk - 去块参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_h265_dblk(xmedia_s32 venc_chn, const xmedia_venc_h265_dblk *h265_dblk);
/*
* 函数功能:获取h265 去块效应参数
* 函数参数:
* venc_chn - 通道号
* h265_dblk - 去块参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_h265_dblk(xmedia_s32 venc_chn, xmedia_venc_h265_dblk *h265_dblk);
/*
* 函数功能:设置h265 vui
* 函数参数:
* venc_chn - 通道号
* h265_vui - vui参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_h265_vui(xmedia_s32 venc_chn, const xmedia_venc_h265_vui *h265_vui);
/*
* 函数功能:获取h265 vui
* 函数参数:
* venc_chn - 通道号
* h265_vui - vui参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_h265_vui(xmedia_s32 venc_chn, xmedia_venc_h265_vui *h265_vui);
/*
* 函数功能:设置丢帧策略
* 函数参数:
* venc_chn - 通道号
* frm_lost_param - 丢帧策略
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型或rc模式
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_NOT_PERMITTED - 不允许的操作
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_frame_lost_strategy(xmedia_s32 venc_chn, const xmedia_venc_frame_lost *frm_lost_param);
/*
* 函数功能:获取丢帧策略
* 函数参数:
* venc_chn - 通道号
* frm_lost_param - 丢帧策略
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型或rc模式
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_frame_lost_strategy(xmedia_s32 venc_chn, xmedia_venc_frame_lost *frm_lost_param);
/*
* 函数功能:设置超大帧策略
* 函数参数:
* venc_chn - 通道号
* super_frm_param - 超大帧策略
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型或rc模式
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_super_frame_strategy(xmedia_s32 venc_chn, const xmedia_venc_super_frame_cfg *super_frm_param);
/*
* 函数功能:获取超大帧策略
* 函数参数:
* venc_chn - 通道号
* super_frm_param - 超大帧策略
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_super_frame_strategy(xmedia_s32 venc_chn, xmedia_venc_super_frame_cfg *super_frm_param);
/*
* 函数功能:设置venc 通道参数
* 函数参数:
* venc_chn - 通道号
* chn_param - 通道参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* XMEDIA_ERRCODE_TYPE_ERROR - 通道类型错误
* XMEDIA_ERRCODE_NOT_PERMITTED - multi模式不支持裁剪
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_chn_param(xmedia_s32 venc_chn, const xmedia_venc_chn_param *chn_param);
/*
* 函数功能:获取venc 通道参数
* 函数参数:
* venc_chn - 通道号
* chn_param - 通道参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_chn_param(xmedia_s32 venc_chn, xmedia_venc_chn_param *chn_param);
/*
* 函数功能:设置venc 通道模式(创建通道前)
* 函数参数:
* venc_chn - 通道号
* mod_param - 通道模式
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NOT_PERMITTED - 不允许创建通道后配置模块属性
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* 注意:
* 创建通道前调用才能生效
*/
xmedia_s32 xmedia_venc_set_mod_param(const xmedia_venc_param_mod *mod_param);
/*
* 函数功能:获取venc 通道模式(创建通道前)
* 函数参数:
* venc_chn - 通道号
* mod_param - 通道模式
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
*/
xmedia_s32 xmedia_venc_get_mod_param(xmedia_venc_param_mod *mod_param);
/*
* 函数功能:设置scene模式
* 函数参数:
* venc_chn - 通道号
* en_scene_mode - scene模式
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_scene_mode(xmedia_s32 venc_chn, const xmedia_venc_scene_mod scene_mode);
/*
* 函数功能:获取scene模式
* 函数参数:
* venc_chn - 通道号
* en_scene_mode - scene模式
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_scene_mode(xmedia_s32 venc_chn, xmedia_venc_scene_mod *scene_mode);
/*
* 函数功能:attach vbpool
* 函数参数:
* venc_chn - 通道号
* pool - vbpool信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型或VB模式
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_INVALID_PARAM - 无效的vb pool
* XMEDIA_ERRCODE_NOT_PERMITTED - 参考、重构帧共用一个BUF时不允许绑定
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_attach_vbpool(xmedia_s32 venc_chn, const xmedia_venc_chn_pool *pool);
/*
* 函数功能:attach vbpool
* 函数参数:
* venc_chn - 通道号
* pool - vbpool信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型或VB模式
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NOT_PERMITTED - 参考、重构帧共用一个BUF时不允许解绑
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_detach_vbpool(xmedia_s32 venc_chn);
/*
* 函数功能:设置roi背景帧帧率
* 函数参数:
* venc_chn - 通道号
* roi_bgfrm_rate - roi帧率信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_roi_bgframe_rate(xmedia_s32 venc_chn, const xmedia_venc_roibg_frame_rate *roi_bgframe_rate);
/*
* 函数功能:获取roi背景帧帧率
* 函数参数:
* venc_chn - 通道号
* roi_bgfrm_rate - roi帧率信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_get_roi_bgframe_rate(xmedia_s32 venc_chn, xmedia_venc_roibg_frame_rate *roi_bgframe_rate);
/*
* 函数功能:设置h265 sao使能状态
* 函数参数:
* venc_chn - 通道号
* h265_dblk - sao参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* XMEDIA_ERRCODE_INVALID_PARAM - 输入参数非法
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_set_h265_sao(xmedia_s32 venc_chn, const xmedia_venc_h265_sao *h265_sao);
/*
* 函数功能:获取h265 sao使能状态
* 函数参数:
* venc_chn - 通道号
* h265_dblk - sao参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* XMEDIA_ERRCODE_INVALID_CHN_ID - 无效的通道号
* XMEDIA_ERRCODE_NOT_EXIST - 通道不存在
* XMEDIA_ERRCODE_NOT_SUPPORT - 不支持的通道类型
* XMEDIA_ERRCODE_NOT_READY - 系统未准备好
* XMEDIA_ERRCODE_NULL_PTR - 空指针
* 注意:
* 通道必须已创建
*/
xmedia_s32 xmedia_venc_get_h265_sao(xmedia_s32 venc_chn, xmedia_venc_h265_sao *h265_sao);
/*
* 函数功能:设置h264 slice划分
* 函数参数:
* venc_chn - 通道号
* slice_split - slice划分信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_h264_slice_split(xmedia_s32 venc_chn, const xmedia_venc_h264_slice_split *slice_split);
/*
* 函数功能:获取h264 slice划分
* 函数参数:
* venc_chn - 通道号
* slice_split - slice划分信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_get_h264_slice_split(xmedia_s32 venc_chn, xmedia_venc_h264_slice_split *slice_split);
/*
* 函数功能:设置h264 trans信息
* 函数参数:
* venc_chn - 通道号
* h264_trans - trance划分信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_h264_trans(xmedia_s32 venc_chn, const xmedia_venc_h264_trans *h264_trans);
/*
* 函数功能:获取h264 trans信息
* 函数参数:
* venc_chn - 通道号
* h264_trans - trance划分信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_get_h264_trans(xmedia_s32 venc_chn, xmedia_venc_h264_trans *h264_trans);
/*
* 函数功能:设置h264去块滤波
* 函数参数:
* venc_chn - 通道号
* h264_dblk - 去块参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_h264_dblk(xmedia_s32 venc_chn, const xmedia_venc_h264_dblk *h264_dblk);
/*
* 函数功能:获取h264去块滤波
* 函数参数:
* venc_chn - 通道号
* h264_dblk - 去块参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_get_h264_dblk(xmedia_s32 venc_chn, xmedia_venc_h264_dblk *h264_dblk);
/*
* 函数功能:设置h264 vui
* 函数参数:
* venc_chn - 通道号
* h264_vui - vui参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_h264_vui(xmedia_s32 venc_chn, const xmedia_venc_h264_vui *h264_vui);
/*
* 函数功能:获取h264 vui
* 函数参数:
* venc_chn - 通道号
* h264_vui - vui参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_get_h264_vui(xmedia_s32 venc_chn, xmedia_venc_h264_vui *h264_vui);
/*
* 函数功能:设置参考帧信息
* 函数参数:
* venc_chn - 通道号
* ref_param - 参考
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_ref_param(xmedia_s32 venc_chn, const xmedia_venc_ref_param *ref_param);
xmedia_s32 xmedia_venc_get_ref_param(xmedia_s32 venc_chn, xmedia_venc_ref_param *ref_param);
/*
* 函数功能:使能IDR帧
* 函数参数:
* venc_chn - 通道号
* enable_idr - idr使能
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_enable_idr(xmedia_s32 venc_chn, xmedia_bool enable_idr);
/*
* 函数功能:intra 刷新设置
* 函数参数:
* venc_chn - 通道号
* intra_refresh - intra信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_intra_refresh(xmedia_s32 venc_chn, const xmedia_venc_intra_refresh *intra_refresh);
xmedia_s32 xmedia_venc_get_intra_refresh(xmedia_s32 venc_chn, xmedia_venc_intra_refresh *intra_refresh);
/*
* 函数功能:获取前景保护
* 函数参数:
* venc_chn - 通道号
* foreground_protect - 前景保护信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_get_foreground_protect(xmedia_s32 venc_chn, xmedia_venc_foreground_protect *foreground_protect);
/*
* 函数功能:设置前景保护
* 函数参数:
* venc_chn - 通道号
* foreground_protect - 前景保护信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_foreground_protect(xmedia_s32 venc_chn, const xmedia_venc_foreground_protect *foreground_protect);
/*
* 函数功能:设置intra和Intra之间的倾向性以及h.265的大小块选择的倾向性
* 函数参数:
* venc_chn - 通道号
* cur_prediction - 倾向性选择
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_cu_prediction(xmedia_s32 venc_chn, const xmedia_venc_cu_prediction *cu_prediction);
/*
* 函数功能:获取intra和Intra之间的倾向性以及h.265的大小块选择的倾向性
* 函数参数:
* venc_chn - 通道号
* cur_prediction - 倾向性选择
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_get_cu_prediction(xmedia_s32 venc_chn, xmedia_venc_cu_prediction *cu_prediction);
/*
* 函数功能:设置rc rdo_prefer参数
* 函数参数:
* venc_chn - 通道号
* rc_rdo_prefer - 倾向性选择
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_rc_rdo_prefer(xmedia_s32 venc_chn, const xmedia_venc_rc_rdo_prefer *rc_rdo_prefer);
/*
* 函数功能:获取rc rdo_prefer参数
* 函数参数:
* venc_chn - 通道号
* rc_rdo_prefer - 倾向性选择
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_get_rc_rdo_prefer(xmedia_s32 venc_chn, xmedia_venc_rc_rdo_prefer *rc_rdo_prefer);
/*
* 函数功能:设置skip的倾向性
* 函数参数:
* venc_chn - 通道号
* skip_bias - skip倾向性
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_skip_bias(xmedia_s32 venc_chn, const xmedia_venc_skip_bias *skip_bias);
/*
* 函数功能:获取skip的倾向性
* 函数参数:
* venc_chn - 通道号
* skip_bias - skip倾向性
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_get_skip_bias(xmedia_s32 venc_chn, xmedia_venc_skip_bias *skip_bias);
/*
* 函数功能:设置去呼吸效应参数
* 函数参数:
* venc_chn - 通道号
* debreath_effect - 去呼吸效应参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_debreath_effect(xmedia_s32 venc_chn, const xmedia_venc_debreath_effect *debreath_effect);
/*
* 函数功能:获取去呼吸效应参数
* 函数参数:
* venc_chn - 通道号
* debreath_effect - 去呼吸效应参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_get_debreath_effect(xmedia_s32 venc_chn, xmedia_venc_debreath_effect *debreath_effect);
/*
* 函数功能:设置qp等级
* 函数参数:
* venc_chn - 通道号
* hierarchical_qp - qp参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_hierarchical_qp(xmedia_s32 venc_chn, const xmedia_venc_hierarchical_qp *hierarchical_qp);
xmedia_s32 xmedia_venc_get_hierarchical_qp(xmedia_s32 venc_chn, xmedia_venc_hierarchical_qp *hierarchical_qp);
/*
* 函数功能:设置rc adv参数
* 函数参数:
* venc_chn - 通道号
* rc_adv_param - rc adv参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_rc_adv_param(xmedia_s32 venc_chn, const xmedia_venc_rc_adv_param *rc_adv_param);
xmedia_s32 xmedia_venc_get_rc_adv_param(xmedia_s32 venc_chn, xmedia_venc_rc_adv_param *rc_adv_param);
/*
* 函数功能:使能SVC
* 函数参数:
* venc_chn - 通道号
* enable - SVC使能
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_enable_svc(xmedia_s32 venc_chn, xmedia_bool enable);
/*
* 函数功能:设置SVC参数
* 函数参数:
* venc_chn - 通道号
* svc_param - SVC参数集
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_svc_param(xmedia_s32 venc_chn, const xmedia_venc_svc_param *svc_param);
xmedia_s32 xmedia_venc_get_svc_param(xmedia_s32 venc_chn, xmedia_venc_svc_param *svc_param);
/*
* 函数功能:设置SVC场景复杂度
* 函数参数:
* venc_chn - 通道号
* svc_detect_result - 复杂度参数
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_get_svc_scene_complexity(xmedia_s32 venc_chn, xmedia_venc_svc_detect_result *svc_detect_result);
/*
* 函数功能:设置SVC区域
* 函数参数:
* venc_chn - 通道号
* svc_region - SVC区域
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_send_svc_region(xmedia_s32 venc_chn, xmedia_venc_svc_rect_info *svc_region);
/*
* 函数功能:搜索窗设置
* 函数参数:
* venc_chn - 通道号
* search_window - 搜索窗信息
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_search_window(xmedia_s32 venc_chn, const xmedia_venc_search_window *search_window);
xmedia_s32 xmedia_venc_get_search_window(xmedia_s32 venc_chn, xmedia_venc_search_window *search_window);
/*
* 函数功能:设置编码旋转角度
* 函数参数:
* venc_chn - 通道号
* rotation - 旋转角度
* 返回值:
* XMEDIA_SUCCESS - 函数执行成功
* 其它错误码 - 函数执行失败
*/
xmedia_s32 xmedia_venc_set_rotation(xmedia_s32 venc_chn, xmedia_video_rotation rotation);
xmedia_s32 xmedia_venc_get_skip_param(xmedia_s32 venc_chn, xmedia_venc_skip_param *skip_param);
xmedia_s32 xmedia_venc_set_skip_param(xmedia_s32 venc_chn, xmedia_venc_skip_param *skip_param);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif