Initial commit: TXW82x FPV v2.7.0.7-42229 SDK + project sources
This commit is contained in:
418
sdk/include/hal/h264.h
Normal file
418
sdk/include/hal/h264.h
Normal file
@@ -0,0 +1,418 @@
|
||||
#ifndef HAL_H264_H
|
||||
#define HAL_H264_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* User interrupt handle */
|
||||
typedef int32(*h264_irq_hdl)(uint32 irq_flags, uint32 irq_data, uint32 param);
|
||||
|
||||
/**
|
||||
* @brief UART ioctl_cmd type
|
||||
*/
|
||||
enum h264_ioctl_cmd {
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SRC_FROM,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_HW_OPEN,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_IS_RUNNING,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SW_BUF_READY,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SW_FRAME_START,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SW_READY,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_VPP_VSYNC_DEALY_EN,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_WRAP_IMG_SIZE,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_PHY_IMG_SIZE,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_FRAME_BASE_CFG,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_FRAME_QP,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_TIMEOUT_LIMIT,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_LEN_LIMIT,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_REF_LU_ADDR,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_REF_CHRO_ADDR,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SET_FRM_NUM,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SET_ENC_CNT,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SET_ENC_FRAME_ID,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SET_DMA_BS_ADDR,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_FRAME_MB_NUM,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_REF_WB_ADDR,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_REF_RB_ADDR,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SET_RATE_CTL,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_RATE_CTL,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_RATE_CTL_BYTE,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_RATE_CTL_RDCOST,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SET_FLT_3DNR,
|
||||
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_FLT_3DNR,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_Y_CROP,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_MB_PIPE,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_FLT_3DNR_LUT,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_FLT_MIN_LUT,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_FLT_MAX_LUT,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_FLT_3DNR_SF,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_FLT_3DNR_CON,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_FLT_3DNR_CON1,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_BANDWIDTH_WR,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_BANDWIDTH_RD,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_DBG_CYC_DONE_NUM,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_FRM_LEN,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_DEC_DEL,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SET_STA,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_STA,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_ENC_FRM_RDCOST,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_DEC_CLR_ENC_FUNCS,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SET_DEC_HEADB_NUM,
|
||||
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SET_OE_SELECT,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_FRAME_IMB,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_MBL_CALC,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_GET_MBL_CALC_MAX,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_IS_ERR,
|
||||
|
||||
/*! Compatible version: V2;
|
||||
*@ Describe:
|
||||
*
|
||||
*/
|
||||
H264_IOCTL_SET_ERR,
|
||||
|
||||
};
|
||||
|
||||
enum h264_module_clk {
|
||||
H264_MODULE_CLK_240M,
|
||||
H264_MODULE_CLK_480M,
|
||||
};
|
||||
|
||||
struct h264_device {
|
||||
struct dev_obj dev;
|
||||
};
|
||||
|
||||
struct h264_hal_ops {
|
||||
struct devobj_ops ops;
|
||||
int32(*init)(struct h264_device *h264_dev,enum h264_module_clk clk_type);
|
||||
int32(*suspend)(struct h264_device *h264_dev);
|
||||
int32(*resume)(struct h264_device *h264_dev);
|
||||
int32(*deinit)(struct h264_device *h264_dev);
|
||||
int32(*open)(struct h264_device *h264_dev);
|
||||
int32(*close)(struct h264_device *h264_dev);
|
||||
int32(*decode)(struct h264_device *h264_dev);
|
||||
int32(*ioctl)(struct h264_device *h264_dev, enum h264_ioctl_cmd ioctl_cmd, uint32 param1, uint32 param2);
|
||||
int32(*request_irq)(struct h264_device *h264_dev, uint32 irq_flag, h264_irq_hdl irq_hdl, uint32 irq_data);
|
||||
int32(*release_irq)(struct h264_device *h264_dev, uint32 irq_flag);
|
||||
};
|
||||
int32 h264_suspend(struct h264_device *p_h264);
|
||||
int32 h264_resume(struct h264_device *p_h264);
|
||||
int32 h264_init(struct h264_device *p_h264,enum h264_module_clk clk_type);
|
||||
int32 h264_deinit(struct h264_device *p_h264);
|
||||
int32 h264_open(struct h264_device *p_h264);
|
||||
int32 h264_close(struct h264_device *p_h264);
|
||||
int32 h264_decode_start(struct h264_device *p_h264);
|
||||
int32 h264_request_irq(struct h264_device *p_h264, uint32 irq_flags, h264_irq_hdl irq_hdl, uint32 irq_data);
|
||||
int32 h264_release_irq(struct h264_device *p_h264, uint32 irq_flags);
|
||||
int32 h264_set_src_from(struct h264_device *p_h264, uint8_t src_from);
|
||||
int32 h264_set_hw_open(struct h264_device *p_h264, uint8_t enable);
|
||||
int32 h264_set_sw_buf_ready(struct h264_device *p_h264);
|
||||
int32 h264_set_sw_frame_ready(struct h264_device *p_h264);
|
||||
int32 h264_set_sw_ready(struct h264_device *p_h264);
|
||||
int32 h264_set_vpp_vsync_delay(struct h264_device *p_h264, uint8_t enable);
|
||||
int32 h264_set_wrap_img_size(struct h264_device *p_h264, uint16_t w,uint16_t h);
|
||||
int32 h264_set_phy_img_size(struct h264_device *p_h264, uint16_t w,uint16_t h);
|
||||
int32 h264_set_frame_base_cfg(struct h264_device *p_h264, uint8_t frm_type,uint16_t enc_mode,uint32_t enc_bs_buf_size,uint32_t timeout_en);
|
||||
int32 h264_set_frame_qp(struct h264_device *p_h264, uint32_t frame_qp);
|
||||
int32 h264_set_timeout_limit(struct h264_device *p_h264, uint32_t time);
|
||||
int32 h264_set_len_limit(struct h264_device *p_h264, uint32_t len);
|
||||
int32 h264_set_ref_lu_addr(struct h264_device *p_h264, uint32_t saddr, uint32_t eaddr);
|
||||
int32 h264_set_ref_chro_addr(struct h264_device *p_h264, uint32_t saddr, uint32_t eaddr);
|
||||
int32 h264_set_frame_num(struct h264_device *p_h264, uint32_t num);
|
||||
int32 h264_set_enc_cnt(struct h264_device *p_h264, uint32_t cnt);
|
||||
int32 h264_set_enc_frame_id(struct h264_device *p_h264, uint32_t id);
|
||||
int32 h264_set_buf_addr(struct h264_device *p_h264, uint32_t addr);
|
||||
int32 h264_set_frame_mb_num(struct h264_device *p_h264, uint32_t num);
|
||||
int32 h264_set_ref_wb_addr(struct h264_device *p_h264, uint32_t lpf_lu_base, uint32_t lpf_ch_base);
|
||||
int32 h264_set_ref_rb_addr(struct h264_device *p_h264, uint32_t last_lpf_lu_base, uint32_t last_lpf_ch_base);
|
||||
int32 h264_set_frame_rate_ctl(struct h264_device *p_h264, uint32_t rc_grp,uint32_t rc_effort,uint32_t rc_en);
|
||||
int32 h264_get_rate_ctl(struct h264_device *p_h264);
|
||||
int32 h264_set_rate_ctl_byte(struct h264_device *p_h264,uint32_t byte);
|
||||
int32 h264_set_rate_ctl_rdcost(struct h264_device *p_h264,uint32_t rdcost);
|
||||
int32 h264_set_flt_3dnr(struct h264_device *p_h264,uint32_t dnr);
|
||||
int32 h264_get_flt_3dnr(struct h264_device *p_h264);
|
||||
int32 h264_set_y_crop(struct h264_device *p_h264,uint32_t enable,uint32_t linenum);
|
||||
int32 h264_set_mb_pipe(struct h264_device *p_h264,uint32_t pipe);
|
||||
int32 h264_set_flt_3dnr_lut(struct h264_device *p_h264,uint32_t num,uint32_t param);
|
||||
int32 h264_set_flt_min_lut(struct h264_device *p_h264,uint32_t num,uint32_t param);
|
||||
int32 h264_set_flt_max_lut(struct h264_device *p_h264,uint32_t num,uint32_t param);
|
||||
int32 h264_set_flt_3dnr_sf(struct h264_device *p_h264,uint32_t param);
|
||||
int32 h264_set_flt_3dnr_con(struct h264_device *p_h264,uint32_t param);
|
||||
int32 h264_set_flt_3dnr_con1(struct h264_device *p_h264,uint32_t param);
|
||||
int32 h264_get_bandwidth_wr(struct h264_device *p_h264);
|
||||
int32 h264_get_bandwidth_rd(struct h264_device *p_h264);
|
||||
int32 h264_get_cyc_done_num(struct h264_device *p_h264);
|
||||
int32 h264_get_frame_len(struct h264_device *p_h264);
|
||||
int32 h264_get_dec_del(struct h264_device *p_h264);
|
||||
int32 h264_set_sta(struct h264_device *p_h264,uint32_t sta);
|
||||
int32 h264_get_sta(struct h264_device *p_h264);
|
||||
int32 h264_get_enc_frame_rdcost(struct h264_device *p_h264);
|
||||
int32 h264_set_enc_frame_rdcost(struct h264_device *p_h264);
|
||||
int32 h264_set_dec_headb_num(struct h264_device *p_h264,uint32_t dec_num);
|
||||
int32 h264_set_oe_select(struct h264_device *p_h264,uint8_t enable,uint8_t oe);
|
||||
int32 h264_is_running(struct h264_device *p_h264);
|
||||
|
||||
int32 h264_get_mbl_calc(struct h264_device *p_h264);
|
||||
int32 h264_get_mbl_calc_max(struct h264_device *p_h264);
|
||||
int32 h264_is_err(struct h264_device *p_h264);
|
||||
int32 h264_set_err(struct h264_device *p_h264,uint32_t err);
|
||||
int32 h264_get_imb_num(struct h264_device *p_h264);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
Reference in New Issue
Block a user