/** @brief Header file of internal. @file hd_int.h @ingroup mhdal @note Nothing. Copyright Novatek Microelectronics Corp. 2018. All rights reserved. */ #ifndef _HD_INT_H_ #define _HD_INT_H_ /******************************************************************** INCLUDE FILES ********************************************************************/ #include "hd_type.h" #if defined(__LINUX) #include #include #include #include #include #include #include #include #endif #include #include #include #include "kflow_common/isf_flow_def.h" #include "kflow_common/isf_flow_ioctl.h" #if defined (__UITRON) || defined(__ECOS) || defined (__FREERTOS) #define ISF_OPEN isf_flow_open #define ISF_IOCTL isf_flow_ioctl #define ISF_CLOSE isf_flow_close #endif #if defined(__LINUX) #define ISF_OPEN open #define ISF_IOCTL ioctl #define ISF_CLOSE close #endif /******************************************************************** MACRO CONSTANT DEFINITIONS ********************************************************************/ #define HD_VIDEOPROC_PIPE_VPE 0x000000F2 //do YUV-domain scale process (VPE) /******************************************************************** MACRO FUNCTION DEFINITIONS ********************************************************************/ #ifndef HD_MODULE_NAME #error Unknown HD_MODULE_NAME #error Please assign your "HD_MODULE_NAME" before include "hd_int.h" #endif #define DBG_ERR(fmtstr, args...) HD_LOG_BIND(HD_MODULE_NAME, _ERR)("\033[1;31m" fmtstr "\033[0m", ##args) #define DBG_WRN(fmtstr, args...) HD_LOG_BIND(HD_MODULE_NAME, _WRN)("\033[1;33m" fmtstr "\033[0m", ##args) #define DBG_IND(fmtstr, args...) HD_LOG_BIND(HD_MODULE_NAME, _IND)(fmtstr, ##args) #define DBG_DUMP(fmtstr, args...) HD_LOG_BIND(HD_MODULE_NAME, _MSG)(fmtstr, ##args) #define DBG_FUNC_BEGIN(fmtstr, args...) HD_LOG_BIND(HD_MODULE_NAME, _FUNC)("BEGIN: " fmtstr, ##args) #define DBG_FUNC_END(fmtstr, args...) HD_LOG_BIND(HD_MODULE_NAME, _FUNC)("END: " fmtstr, ##args) #define CHKPNT printf("\033[37mCHK: %s, %s: %d\033[0m\r\n",__FILE__,__func__,__LINE__) #define DBGH(x) printf("\033[0;35m%s=0x%08X\033[0m\r\n", #x, x) #define DBGD(x) printf("\033[0;35m%s=%d\033[0m\r\n", #x, x) #define DBGCALLER() printf("%s() is called @0x%08X\r\n", __func__, __builtin_return_address(0)-8); /******************************************************************** TYPE DEFINITION ********************************************************************/ //mask of hd_common_init(sys_config_type) #define HD_COMMON_CFG_CPU 0x0000000f //CPU #define HD_COMMON_CFG_DRAM 0x000000f0 //DRAM #define HD_COMMON_CFG_MEM 0x00000f00 //MEM #define HD_COMMON_CFG_DEBUG 0x0000f000 //DEBUG #define HD_COMMON_CFG_R1 0x000f0000 // #define HD_COMMON_CFG_R2 0x00f00000 // #define HD_COMMON_CFG_R3 0x0f000000 // #define HD_COMMON_CFG_R4 0xf0000000 // //mask of hd_common_sysconfig(sys_config_type1, ...) => these config should be config before call hd_xxxx_init() #define HD_VIDEOCAP_CFG 0x0000000f //vcap #define HD_VIDEOOUT_CFG 0x000000f0 //vout #define HD_VIDEOENC_CFG 0x00000f00 //venc #define HD_VIDEODEC_CFG 0x0000f000 //vdec #define HD_VIDEOPROC_CFG 0x000f0000 //vprc #define HD_GFX_CFG 0x00f00000 //gfx #define HD_OSG_CFG 0x0f000000 //osg #define VENDOR_R1_CFG 0xf0000000 // #define HD_VIDEOPROC_CFG_STRIP_MASK 0x00000007 //vprc stripe rule mask: (default 0) #define HD_VIDEOPROC_CFG_STRIP_LV1 0x00000000 //vprc "0: cut w>1280, GDC = on, 2D_LUT off after cut (LL slow) #define HD_VIDEOPROC_CFG_STRIP_LV2 0x00010000 //vprc "1: cut w>2048, GDC = off, 2D_LUT off after cut (LL fast) #define HD_VIDEOPROC_CFG_STRIP_LV3 0x00020000 //vprc "2: cut w>2688, GDC = off, 2D_LUT off after cut (LL middle)(2D_LUT best) #define HD_VIDEOPROC_CFG_STRIP_LV4 0x00030000 //vprc "3: cut w> 720, GDC = on, 2D_LUT off after cut (LL not allow)(GDC best) #define HD_VIDEOPROC_CFG_DISABLE_GDC HD_VIDEOPROC_CFG_STRIP_LV2 #define HD_VIDEOPROC_CFG_LL_FAST HD_VIDEOPROC_CFG_STRIP_LV2 #define HD_VIDEOPROC_CFG_2DLUT_BEST HD_VIDEOPROC_CFG_STRIP_LV3 #define HD_VIDEOPROC_CFG_GDC_BEST HD_VIDEOPROC_CFG_STRIP_LV4 //mask of hd_common_sysconfig(..., sys_config_type2) => these config should be config before call hd_xxxx_init() #define HD_AUDIOCAP_CFG 0x0000000f //acap #define HD_AUDIOOUT_CFG 0x000000f0 //aout #define HD_AUDIOENC_CFG 0x00000f00 //aenc #define HD_AUDIODEC_CFG 0x0000f000 //adec #define VENDOR_AI_CFG 0x000f0000 //ai #define VENDOR_CV_CFG 0x00f00000 //cv #define VENDOR_DSP_CFG 0x0f000000 //dsp #define VENDOR_ISP_CFG 0xf0000000 //isp #define VENDOR_AI_CFG_ENABLE_CNN 0x00010000 //ai "1:enable CNN" (default 0) extern HD_RESULT _hd_common_get_init(UINT32 *p_sys_config_type); extern int _hd_common_get_pid(void); extern int _hd_common_is_new_flow(void); extern int dev_fd; extern int _hd_dump_printf(const char *fmtstr, ...); extern int _hd_videocap_dump_info(UINT32 did); extern int _hd_videoproc_dump_info(UINT32 did); extern int _hd_videoenc_dump_info(void); extern int _hd_videodec_dump_info(void); extern int _hd_videoout_dump_info(UINT32 did); extern int _hd_audiocap_dump_info(UINT32 did); extern int _hd_audioout_dump_info(UINT32 did); extern int _hd_audioenc_dump_info(void); extern int _hd_audiodec_dump_info(void); extern HD_RESULT _hd_videocap_convert_dev_id(HD_DAL* p_dev_id); extern HD_RESULT _hd_videoproc_convert_dev_id(HD_DAL* p_dev_id); extern HD_RESULT _hd_videoout_convert_dev_id(HD_DAL* p_dev_id); extern HD_RESULT _hd_videoenc_convert_dev_id(HD_DAL* p_dev_id); extern HD_RESULT _hd_videodec_convert_dev_id(HD_DAL* p_dev_id); extern HD_RESULT _hd_audiocap_convert_dev_id(HD_DAL* p_dev_id); extern HD_RESULT _hd_audioout_convert_dev_id(HD_DAL* p_dev_id); extern HD_RESULT _hd_audioenc_convert_dev_id(HD_DAL* p_dev_id); extern HD_RESULT _hd_audiodec_convert_dev_id(HD_DAL* p_dev_id); extern HD_RESULT _hd_videocap_convert_in_id(HD_IO* p_in_id); extern HD_RESULT _hd_videoproc_convert_in_id(HD_IO* p_in_id); extern HD_RESULT _hd_videoout_convert_in_id(HD_IO* p_in_id); extern HD_RESULT _hd_videoenc_convert_in_id(HD_IO* p_in_id); extern HD_RESULT _hd_videodec_convert_in_id(HD_IO* p_in_id); extern HD_RESULT _hd_audiocap_convert_in_id(HD_IO* p_in_id); extern HD_RESULT _hd_audioout_convert_in_id(HD_IO* p_in_id); extern HD_RESULT _hd_audioenc_convert_in_id(HD_IO* p_in_id); extern HD_RESULT _hd_audiodec_convert_in_id(HD_IO* p_in_id); extern int _hd_videocap_out_id_str(HD_DAL dev_id, HD_IO out_id, CHAR *p_str, INT str_len); extern int _hd_videoproc_in_id_str(HD_DAL dev_id, HD_IO in_id, CHAR *p_str, INT str_len); extern int _hd_videoproc_out_id_str(HD_DAL dev_id, HD_IO out_id, CHAR *p_str, INT str_len); extern int _hd_videoenc_in_id_str(HD_DAL dev_id, HD_IO in_id, CHAR *p_str, INT str_len); extern int _hd_videoenc_out_id_str(HD_DAL dev_id, HD_IO out_id, CHAR *p_str, INT str_len); extern int _hd_videoout_in_id_str(HD_DAL dev_id, HD_IO in_id, CHAR *p_str, INT str_len); extern int _hd_audiocap_out_id_str(HD_DAL dev_id, HD_IO out_id, CHAR *p_str, INT str_len); extern int _hd_audioout_in_id_str(HD_DAL dev_id, HD_IO in_id, CHAR *p_str, INT str_len); extern int _hd_dest_in_id_str(HD_DAL dev_id, HD_IO in_id, CHAR *p_str, INT str_len); extern int _hd_src_out_id_str(HD_DAL dev_id, HD_IO out_id, CHAR *p_str, INT str_len); extern int _hd_video_pipe_str(UINT32 pipe, CHAR *p_str, INT str_len); extern int _hd_video_pxlfmt_str(HD_VIDEO_PXLFMT pxlfmt, CHAR *p_str, INT str_len); extern int _hd_video_dir_str(HD_VIDEO_DIR dir, CHAR *p_str, INT str_len); extern void _hd_videocap_cfg_active(unsigned int *p_active_list); extern void _hd_videoproc_cfg_max(UINT32 maxdevice); extern void _hd_videoenc_cfg_max(UINT32 maxpath); extern void _hd_videodec_cfg_max(UINT32 maxpath); extern void _hd_osg_cfg_max(unsigned int max_prc_path, unsigned int max_enc_path, unsigned int max_out_path, unsigned int max_stamp_img, unsigned int *max_prc_stamp, unsigned int *max_prc_mask, unsigned int *max_enc_stamp, unsigned int *max_enc_mask, unsigned int *max_out_stamp, unsigned int *max_out_mask); extern void _hd_videoout_cfg_max(UINT32 maxdevice); extern void _hd_audiocap_cfg_max(UINT32 maxdevice); extern void _hd_audioout_cfg_max(UINT32 maxdevice); extern void _hd_audioenc_cfg_max(UINT32 maxpath); extern void _hd_audiodec_cfg_max(UINT32 maxpath); extern int _hd_videocap_is_init(VOID); extern int _hd_videoproc_is_init(VOID); extern int _hd_videoout_is_init(VOID); extern int _hd_videoenc_is_init(VOID); extern int _hd_videodec_is_init(VOID); extern int _hd_audiocap_is_init(VOID); extern int _hd_audioout_is_init(VOID); extern int _hd_audioenc_is_init(VOID); extern int _hd_audiodec_is_init(VOID); extern int _hd_osg_is_init(VOID); extern HD_RESULT _hd_osg_reset(void); extern HD_RESULT _hd_osg_attach(UINT32 unit_id, UINT32 port_id, UINT32 osg_id); extern HD_RESULT _hd_osg_detach(UINT32 unit_id, UINT32 port_id, UINT32 osg_id); extern HD_RESULT _hd_osg_get(UINT32 unit_id, UINT32 port_id, UINT32 osg_id, UINT32 param_id, VOID* p_param); extern HD_RESULT _hd_osg_set(UINT32 unit_id, UINT32 port_id, UINT32 osg_id, UINT32 param_id, VOID* p_param); extern HD_RESULT _hd_osg_enable(UINT32 unit_id, UINT32 port_id, UINT32 osg_id); extern HD_RESULT _hd_osg_disable(UINT32 unit_id, UINT32 port_id, UINT32 osg_id); #endif