#ifndef IMAGEAPP_MOVIEMULTI_H #define IMAGEAPP_MOVIEMULTI_H #include "hdal.h" #include "kflow_videoenc/media_def.h" #include #include "ImageApp/ImageApp_Common.h" #include "hd_bsmux_lib.h" #include "hd_fileout_lib.h" #include "vendor_videoenc.h" /// ========== Callback function area ========== typedef void (*MOVIE_RAWPROC_CB)(void); /// ========== Enum area ========== typedef enum { _CFG_REC_ID_1 = 0, _CFG_REC_ID_2, _CFG_REC_ID_3, _CFG_REC_ID_4, _CFG_REC_ID_MAX, _CFG_STRM_ID_1, _CFG_STRM_ID_2, _CFG_STRM_ID_3, _CFG_STRM_ID_4, _CFG_STRM_ID_MAX, _CFG_UVAC_ID_1, _CFG_UVAC_ID_2, _CFG_UVAC_ID_MAX, _CFG_CLONE_ID_1, _CFG_CLONE_ID_2, _CFG_CLONE_ID_3, _CFG_CLONE_ID_4, _CFG_CLONE_ID_MAX, _CFG_DISP_ID_1, _CFG_DISP_ID_2, _CFG_DISP_ID_MAX, _CFG_ETHCAM_ID_1, _CFG_ETHCAM_ID_2, _CFG_ETHCAM_ID_MAX, _CFG_AUDIO_ID_1, _CFG_AUDIO_ID_MAX, _CFG_CTRL_ID = 0x0000FF00, ENUM_DUMMY4WORD(MOVIE_CFG_REC_ID) } MOVIE_CFG_REC_ID; /// Notice: enum { /// means argument value uses xxx type/structure pointer to pass information MOVIE_CONFIG_RECORD_INFO = 0xF000F000, /// structure pointer (Set only) MOVIE_CONFIG_STREAM_INFO, /// structure pointer (Set only) MOVIE_CONFIG_AUDIO_INFO, /// structure pointer (Set only) MOVIE_CONFIG_DISP_INFO, /// structure pointer (Set only) MOVIE_CONFIG_UVAC_INFO, /// N/A MOVIE_CONFIG_ALG_INFO, /// structure pointer (Set only) MOVIE_CONFIG_ETHCAM_INFO, /// N/A MOVIE_CONFIG_MAX_LINK_INFO, /// structure pointer (Set only) MOVIE_CONFIG_MEM_POOL_INFO, /// structure pointer (Set only) MOVIE_CONFIG_SENSOR_INFO, /// structure pointer (Set only) MOVIE_CONFIG_SENSOR_MAPPING, /// structure pointer, point to an UINT32 array with n components (n = sensor count) (Set only) MOVIE_CONFIG_AD_MAP, /// structure pointer (Set only) MOVIE_CONFIG_DRAM, /// structure pointer (Set only) }; // emum for MOVIEMULTI_PARAM_IPL_FORCED_IMG_SIZE typedef enum { MOVIE_IPL_SIZE_AUTO = 0, MOVIE_IPL_SIZE_MAIN, MOVIE_IPL_SIZE_CLONE, MOVIE_IPL_SIZE_WIFI, MOVIE_IPL_SIZE_ALG, MOVIE_IPL_SIZE_DISP, MOVIE_IPL_SIZE_USER, ENUM_DUMMY4WORD(MOVIE_IPL_SIZE) } MOVIE_IPL_SIZE; // structure for MOVIEMULTI_PARAM_IPL_USER_IMG_SIZE typedef struct { USIZE size; UINT32 fps; } MOVIEMULTI_IPL_SIZE_INFO; typedef enum { _CFG_VID_IN_1 = 0, _CFG_VID_IN_2, _CFG_VID_IN_3, _CFG_VID_IN_4, ENUM_DUMMY4WORD(MOVIE_CFG_VID_IN) } MOVIE_CFG_VID_IN; typedef enum { _CFG_ALG_PATH3 = 0, _CFG_ALG_PATH4, _CFG_ALG_PATH_MAX, ENUM_DUMMY4WORD(MOVIE_CFG_ALG_PATH) } MOVIE_CFG_ALG_PATH; typedef enum { IAMOVIE_VPRC_EX_MAIN = 0, IAMOVIE_VPRC_EX_CLONE, IAMOVIE_VPRC_EX_DISP, IAMOVIE_VPRC_EX_WIFI, IAMOVIE_VPRC_EX_ALG, IAMOVIE_VPRC_EX_DISP2, IAMOVIE_VPRC_EX_ALG2, IAMOVIE_VPRC_EX_MAX, ENUM_DUMMY4WORD(IAMOVIE_VPRC_EX_PATH) } IAMOVIE_VPRC_EX_PATH; typedef ISIZE MOVIE_CFG_IMG_SIZE; typedef UINT32 MOVIE_CFG_FRAME_RATE; typedef UINT32 MOVIE_CFG_TARGET_RATE; typedef ISIZE MOVIE_CFG_IMG_RATIO; typedef ISIZE MOVIE_CFG_RAWENC_SIZE; typedef UINT32 MOVIE_CFG_VCAP_FUNC; typedef UINT32 MOVIE_CFG_VPROC_FUNC; typedef BOOL MOVIE_CFG_DISP_ENABLE; typedef UINT32 MOVIE_CFG_GOP_NUM; typedef BOOL MOVIE_CFG_RTSP_STRM_OUT; // emum for MOVIEMULTI_PARAM_CODEC typedef enum { _CFG_CODEC_MJPG = MEDIAVIDENC_MJPG, _CFG_CODEC_H264 = MEDIAVIDENC_H264, _CFG_CODEC_H265 = MEDIAVIDENC_H265, ENUM_DUMMY4WORD(MOVIE_CFG_CODEC) } MOVIE_CFG_CODEC; typedef enum { _CFG_AUD_CODEC_NONE = 0, _CFG_AUD_CODEC_PCM, _CFG_AUD_CODEC_AAC, ENUM_DUMMY4WORD(MOVIE_CFG_AUD_CODEC) } MOVIE_CFG_AUD_CODEC; // emum for MOVIEMULTI_PARAM_REC_FORMAT typedef enum { _CFG_REC_TYPE_AV = MEDIAREC_AUD_VID_BOTH, _CFG_REC_TYPE_VID = MEDIAREC_VID_ONLY, _CFG_REC_TYPE_TIMELAPSE = MEDIAREC_TIMELAPSE, _CFG_REC_TYPE_GOLFSHOT = MEDIAREC_GOLFSHOT, ENUM_DUMMY4WORD(MOVIE_CFG_REC_MODE) } MOVIE_CFG_REC_MODE; // emum for MOVIEMULTI_PARAM_FILE_FORMAT typedef enum { _CFG_FILE_FORMAT_MP4 = MEDIA_FILEFORMAT_MP4, _CFG_FILE_FORMAT_TS = MEDIA_FILEFORMAT_TS, _CFG_FILE_FORMAT_MOV = MEDIA_FILEFORMAT_MOV, _CFG_FILE_FORMAT_JPG = MEDIA_FILEFORMAT_JPG, _CFG_FILE_FORMAT_UNKNOWN = 0, ENUM_DUMMY4WORD(MOVIE_CFG_FILE_FORMAT) } MOVIE_CFG_FILE_FORMAT; typedef enum { _CFG_EMR_OFF = 0x00000000, /// EMR off _CFG_MAIN_EMR_BOTH = 0x00000001, /// Main remains + EMR _CFG_MAIN_EMR_PAUSE = 0x00000002, /// Main paused + EMR _CFG_MAIN_EMR_ONLY = 0x00000004, /// Main EMR only _CFG_MAIN_EMR_LOOP = 0x00000008, /// Main EMR loop _CFG_CLONE_EMR_BOTH = 0x00000010, /// Clone remains + EMR _CFG_CLONE_EMR_PAUSE = 0x00000020, /// Clone paused + EMR _CFG_CLONE_EMR_ONLY = 0x00000040, /// Clone EMR only _CFG_CLONE_EMR_LOOP = 0x00000080, /// Clone EMR loop _CFG_EMR_SET_CRASH = 0x00000100, /// set crash ENUM_DUMMY4WORD(MOVIE_CFG_FILE_OPTION) } MOVIE_CFG_FILE_OPTION; typedef UINT32 MOVIE_CFG_FILE_ENDTYPE; typedef enum { //H264 profile _CFG_H264_PROFILE_BASELINE = HD_H264E_BASELINE_PROFILE, _CFG_H264_PROFILE_MAIN = HD_H264E_MAIN_PROFILE, _CFG_H264_PROFILE_HIGH = HD_H264E_HIGH_PROFILE, //H265 profile _CFG_H265_PROFILE_MAIN = HD_H265E_MAIN_PROFILE, ENUM_DUMMY4WORD(MOVIE_CFG_PROFILE) } MOVIE_CFG_PROFILE; typedef enum _MOVIE_CFG_LEVEL { //H264 level _CFG_H264_LEVEL_1 = HD_H264E_LEVEL_1, _CFG_H264_LEVEL_1_1 = HD_H264E_LEVEL_1_1, _CFG_H264_LEVEL_1_2 = HD_H264E_LEVEL_1_2, _CFG_H264_LEVEL_1_3 = HD_H264E_LEVEL_1_3, _CFG_H264_LEVEL_2 = HD_H264E_LEVEL_2, _CFG_H264_LEVEL_2_1 = HD_H264E_LEVEL_2_1, _CFG_H264_LEVEL_2_2 = HD_H264E_LEVEL_2_2, _CFG_H264_LEVEL_3 = HD_H264E_LEVEL_3, _CFG_H264_LEVEL_3_1 = HD_H264E_LEVEL_3_1, _CFG_H264_LEVEL_3_2 = HD_H264E_LEVEL_3_2, _CFG_H264_LEVEL_4 = HD_H264E_LEVEL_4, _CFG_H264_LEVEL_4_1 = HD_H264E_LEVEL_4_1, _CFG_H264_LEVEL_4_2 = HD_H264E_LEVEL_4_2, _CFG_H264_LEVEL_5 = HD_H264E_LEVEL_5, _CFG_H264_LEVEL_5_1 = HD_H264E_LEVEL_5_1, //H265 level _CFG_H265_LEVEL_1 = HD_H265E_LEVEL_1, _CFG_H265_LEVEL_2 = HD_H265E_LEVEL_2, _CFG_H265_LEVEL_2_1 = HD_H265E_LEVEL_2_1, _CFG_H265_LEVEL_3 = HD_H265E_LEVEL_3, _CFG_H265_LEVEL_3_1 = HD_H265E_LEVEL_3_1, _CFG_H265_LEVEL_4 = HD_H265E_LEVEL_4, _CFG_H265_LEVEL_4_1 = HD_H265E_LEVEL_4_1, _CFG_H265_LEVEL_5 = HD_H265E_LEVEL_5, _CFG_H265_LEVEL_5_1 = HD_H265E_LEVEL_5_1, _CFG_H265_LEVEL_5_2 = HD_H265E_LEVEL_5_2, _CFG_H265_LEVEL_6 = HD_H265E_LEVEL_6, _CFG_H265_LEVEL_6_1 = HD_H265E_LEVEL_6_1, _CFG_H265_LEVEL_6_2 = HD_H265E_LEVEL_6_2, ENUM_DUMMY4WORD(MOVIE_CFG_LEVEL) } MOVIE_CFG_LEVEL; typedef enum { _CFG_DAR_DEFAULT, // default video display aspect ratio (the same as encoded image) _CFG_DAR_16_9, // 16:9 video display aspect ratio ENUM_DUMMY4WORD(MOVIE_CFG_DAR) } MOVIE_CFG_DAR; typedef struct { INT32 aq_enable; UINT32 aq_str; INT32 sraq_init_aslog2; INT32 max_sraq; INT32 min_sraq; INT32 sraq_const_aslog2; } MOVIE_CFG_AQ_INFO; typedef struct { UINT32 uiEnable; UINT32 uiStaticTime; UINT32 uiFrameRate; UINT32 uiByteRate; UINT32 uiGOP; UINT32 uiInitIQp; UINT32 uiMinIQp; UINT32 uiMaxIQp; UINT32 uiInitPQp; UINT32 uiMinPQp; UINT32 uiMaxPQp; INT32 iIPWeight; UINT32 uiRowRcEnalbe; UINT32 uiRowRcQpRange; UINT32 uiRowRcQpStep; } MOVIE_CFG_CBR_INFO; typedef enum { _CFG_AUDIO_CH_LEFT, ///< Left _CFG_AUDIO_CH_RIGHT, ///< Right _CFG_AUDIO_CH_STEREO, ///< Stereo ENUM_DUMMY4WORD(MOVIE_CFG_AUDIO_CH) } MOVIE_CFG_AUDIO_CH; typedef struct { HD_PATH_ID vout_ctrl; HD_PATH_ID vout_path; USIZE ratio; HD_VIDEO_DIR dir; } MOVIEMULTI_CFG_DISP_INFO; typedef UINT32 MOVIE_CFG_FILE_SECOND; typedef struct { MOVIE_CFG_REC_ID rec_id; MOVIE_CFG_FILE_SECOND seamless_sec; // Seamless second MOVIE_CFG_FILE_OPTION emr_on; // pre-record emergency on MOVIE_CFG_FILE_SECOND emr_sec; // pre-record second for emergency (main_path) MOVIE_CFG_FILE_SECOND keep_sec; // post-record second for emergency (main path) MOVIE_CFG_FILE_SECOND overlap_sec; // overlap second MOVIE_CFG_FILE_ENDTYPE end_type; // such as MOVREC_ENDTYPE_CUTOVERLAP MOVIE_CFG_FILE_SECOND rollback_sec; // pre-record second for crash MOVIE_CFG_FILE_SECOND forward_sec; // post-record second for crash MOVIE_CFG_FILE_SECOND clone_emr_sec; // pre-record second for emergency (clone path) MOVIE_CFG_FILE_SECOND clone_keep_sec;// post-record second for emergency (clone path) } MOVIE_RECODE_FILE_OPTION; /// ========== Data structure area ========== typedef struct { MOVIE_CFG_REC_ID rec_id; MOVIE_CFG_VID_IN vid_in; MOVIE_CFG_IMG_SIZE size; MOVIE_CFG_FRAME_RATE frame_rate; MOVIE_CFG_TARGET_RATE target_bitrate; MOVIE_CFG_CODEC codec; MOVIE_CFG_AUD_CODEC aud_codec; MOVIE_CFG_REC_MODE rec_mode; MOVIE_CFG_FILE_FORMAT file_format; MOVIE_CFG_IMG_RATIO ratio; MOVIE_CFG_RAWENC_SIZE raw_enc_size; MOVIE_CFG_VCAP_FUNC vcap_func; MOVIE_CFG_DISP_ENABLE disp_enable; BOOL ipl_set_enable; MOVIE_CFG_DAR dar; MOVIE_CFG_AQ_INFO aq_info; MOVIE_CFG_CBR_INFO cbr_info; BOOL sensor_rotate; MOVIE_CFG_VPROC_FUNC vproc_func; MOVIE_CFG_IMG_RATIO disp_ratio; // video display aspect ratio } MOVIE_RECODE_INFO; typedef struct { MOVIE_CFG_REC_ID strm_id; MOVIE_CFG_VID_IN vid_in; MOVIE_CFG_IMG_SIZE size; MOVIE_CFG_FRAME_RATE frame_rate; MOVIE_CFG_TARGET_RATE max_bit_rate; MOVIE_CFG_CODEC codec; MOVIE_CFG_GOP_NUM gop_num; MOVIE_CFG_AUD_CODEC aud_codec; MOVIE_CFG_RTSP_STRM_OUT rstp_strm_out; MOVIE_CFG_AQ_INFO aq_info; MOVIE_CFG_CBR_INFO cbr_info; BOOL ipl_set_enable; MOVIE_CFG_IMG_RATIO ratio; BOOL userproc_pull; } MOVIE_STRM_INFO; typedef struct { UINT32 aud_rate; UINT32 aud_ch; UINT32 aud_ch_num; } MOVIEMULTI_AUDIO_INFO; typedef struct { UINT32 ImgFmt; USIZE ImgSize; URECT Window; UINT32 ImgFps; } MOVIE_ALG_IPL_INFO; typedef struct { MOVIE_ALG_IPL_INFO path13; MOVIE_ALG_IPL_INFO path14; MOVIE_CFG_REC_ID rec_id; } MOVIE_ALG_INFO; typedef struct { UINT32 MaxImgLink; UINT32 MaxDispLink; UINT32 MaxWifiLink; UINT32 MaxAudCapLink; UINT32 MaxEthCamLink; } MOVIEMULTI_MAX_LINK_INFO; typedef struct { MOVIE_CFG_REC_ID rec_id; HD_VIDEOCAP_DRV_CONFIG vcap_cfg; HD_VIDEO_PXLFMT senout_pxlfmt; HD_VIDEO_PXLFMT capout_pxlfmt; UINT32 data_lane; SENSOR_PATH_INFO ae_path; SENSOR_PATH_INFO awb_path; SENSOR_PATH_INFO af_path; SENSOR_PATH_INFO iq_path; SENSOR_PATH_INFO iq_shading_path; SENSOR_PATH_INFO iq_dpc_path; SENSOR_PATH_INFO iq_ldc_path; char file_path[32]; } MOVIE_SENSOR_INFO; // emum for MOVIEMULTI_PARAM_RO_DEL_TYPE typedef enum { RO_DEL_TYPE_PERCENT = 0, RO_DEL_TYPE_NUM, ENUM_DUMMY4WORD(MOVIE_RO_DEL_TYPE) } MOVIE_RO_DEL_TYPE; // emum for MOVIEMULTI_PARAM_VCAP_CCIR_MODE typedef enum { CCIR_AUTO = 0, CCIR_INTERLACE, CCIR_PROGRESSIVE, ENUM_DUMMY4WORD(MOVIE_CCIR_MODE) } MOVIE_CCIR_MODE; typedef struct { UINT64 givenSpace; //in: free space //NMEDIAREC_CALCSEC_SETTING info[8]; } MOVIEMULTI_CALCSEC_SETTING2; typedef struct { MEM_RANGE mem_range; CHAR *p_root_path; CHAR drive; // 'A' ~ 'Z' } MOVIE_CFG_FDB_INFO; typedef struct { MOVIE_CFG_REC_ID rec_id; CHAR* movie; CHAR* emr; CHAR* snapshot; BOOL file_naming; } MOVIEMULTI_RECODE_FOLDER_NAMING; typedef struct { UINT32 width; UINT32 height; UINT32 codec; UINT32 header_size; UINT8 *header; } MOVIEMULTI_ETHCAM_DEC_INFO; typedef struct { UINT32 width; UINT32 height; UINT32 vfr; UINT32 tbr; UINT32 ar; UINT32 gop; UINT32 codec; UINT32 aud_codec; UINT32 rec_mode; UINT32 rec_format; UINT32 buf_pa; UINT32 buf_size; MOVIE_CFG_AQ_INFO aq_info; MOVIE_CFG_CBR_INFO cbr_info; } MOVIEMULTI_ETHCAM_REC_INFO; // structure for MOVIEMULTI_PARAM_VCAP_CROP typedef struct { URECT Win; } MOVIEMULTI_VCAP_CROP_INFO; // structure for MOVIEMULTI_PARAM_MAIN_IME_CROP / MOVIEMULTI_PARAM_CLONE_IME_CROP / MOVIEMULTI_PARAM_DISP_IME_CROP typedef struct { USIZE IMESize; URECT IMEWin; } MOVIEMULTI_IME_CROP_INFO; typedef struct { UINT32 en; UINT32 cnt1; UINT32 cnt2; } MOVIEMULTI_BS_DROP_CNT; #define MOVIEMULTI_DISK_MAX_DIR_NUM 8 //default typedef struct { CHAR dir_path[128]; UINT64 dir_size; UINT32 dir_ratio_of_disk; UINT32 file_num; UINT64 file_avg_size; UINT64 falloc_size; BOOL is_falloc; BOOL is_use; } MOVIEMULTI_DIR_INFO; typedef struct { UINT64 disk_size; UINT64 free_size; MOVIEMULTI_DIR_INFO dir_info[MOVIEMULTI_DISK_MAX_DIR_NUM]; UINT64 other_size; UINT32 dir_num; UINT32 dir_depth; BOOL is_format_free; //0:init 1:true 2:false } MOVIEMULTI_DISK_INFO; typedef struct { UINT32 video_cap[4]; UINT32 video_proc[4]; UINT32 video_encode; UINT32 video_decode; UINT32 video_out; } MOVIEMULTI_DRAM_CFG; typedef struct { CHAR path[128]; UINT32 duration; } MOVIEMULTI_CLOSE_FILE_INFO; // structure for MOVIEMULTI_PARAM_CODEC_PROFILE_LEVEL typedef struct { MOVIE_CFG_CODEC codec; MOVIE_CFG_PROFILE profile; MOVIE_CFG_LEVEL level; } MOVIE_CFG_CODEC_INFO; // structure for MOVIEMULTI_PARAM_VPRC_FPS typedef struct { UINT32 id; ///< IAMOVIE_VPRC_EX_PATH UINT32 fps; } MOVIEMULTI_VPRC_FPS; // structure for MOVIEMULTI_PARAM_VPRC_OUT_SIZE typedef struct { UINT32 id; ///< IAMOVIE_VPRC_EX_PATH BOOL crop_update; URECT crop_win; ///< only valid if crop_update == TRUE BOOL out_update; USIZE out_size; ///< only valid if out_update == TRUE } MOVIEMULTI_VPRC_SIZE; // structure for MOVIEMULTI_PARAM_VDO_ENC_PARAM typedef struct { MOVIE_CFG_CODEC codec; MOVIE_CFG_PROFILE profile; MOVIE_CFG_LEVEL level; UINT32 fps; UINT32 tbr; UINT32 gop; } MOVIEMULTI_VDO_ENC_PARAM; // structure for MOVIEMULTI_PARAM_DIS_FUNC typedef struct { BOOL enable; UINT32 scale_ratio; ///< config scale-ratio of DIS func (1100, 1200, 1400) MOVIE_CFG_LEVEL subsample; ///< config sub-sample of DIS func (0, 1, 2) } MOVIEMULTI_DIS_PARAM; // structure for MOVIEMULTI_PARAM_DIS_CROP_ALIGN typedef struct { IAMOVIE_VPRC_EX_PATH id; ///< path need align UINT32 align; ///< align size } MOVIEMULTI_DIS_CROP_ALIGN_PARAM; // structure for MOVIEMULTI_PARAM_FILE_CUST_TAG typedef struct { UINT32 on; UINT32 tag; UINT32 addr; UINT32 size; } MOVIEMULTI_MOV_CUSTOM_TAG; // structure for MOVIEMULTI_PARAM_FILE_ENCRYPT typedef enum { MOVIEMULTI_ENCRYPT_TYPE_NONE = 0x00000000, MOVIEMULTI_ENCRYPT_TYPE_CONTAINER = 0x00000001, MOVIEMULTI_ENCRYPT_TYPE_I_FRAME = 0x00000002, MOVIEMULTI_ENCRYPT_TYPE_P_FRAME = 0x00000004, MOVIEMULTI_ENCRYPT_TYPE_ALL_FRAME = 0x00000006, MOVIEMULTI_ENCRYPT_TYPE_AUDIO = 0x00000008, ENUM_DUMMY4WORD(MOVIEMULTI_ENCRYPT_TYPE) } MOVIEMULTI_ENCRYPT_TYPE; typedef enum { MOVIEMULTI_ENCRYPT_MODE_AES128 = 0, MOVIEMULTI_ENCRYPT_MODE_AES256, ENUM_DUMMY4WORD(MOVIEMULTI_ENCRYPT_MODE) } MOVIEMULTI_ENCRYPT_MODE; typedef struct { MOVIEMULTI_ENCRYPT_TYPE type; MOVIEMULTI_ENCRYPT_MODE mode; UINT8 *key; UINT32 key_len; } MOVIEMULTI_FILE_ENCRYPT; // structure for MOVIEMULTI_PARAM_FILE_BUFLOCK_INFO typedef struct { UINT32 enable; UINT32 lock_sec_ms; UINT32 timeout_ms; } MOVIEMULTI_FILE_BUFLOCK; // structure for MOVIEMULTI_PARAM_IMGCAP_JPG_QUALITY typedef struct { UINT32 jpg_quality; // 1~100 UINT32 buf_size; // unit: byte, real allocate buffer size will be buf_size * 1.5 } MOVIEMULTI_JPG_QUALITY; /// ========== Gyro data area ========== #define GYRO_DATA_NUM 32 #define GYRO_DATA_SIZE (4 + 4 * GYRO_DATA_NUM * 6) // =================== User Event Callback =================== typedef enum { MOVIE_USER_CB_EVENT_START = 0x0000E300, // EVENT MOVIE_USER_CB_EVENT_VIDEO_READY = MOVIE_USER_CB_EVENT_START, MOVIE_USER_CB_EVENT_STAMP_CB, // value: (MP_VDOENC_YUV_SRC*) MOVIE_USER_CB_EVENT_REC_ONE_SECOND, MOVIE_USER_CB_EVENT_REC_STOP, MOVIE_USER_CB_EVENT_CARD_FULL, MOVIE_USER_CB_EVENT_REC_FILE_COMPLETED, MOVIE_USER_CB_EVENT_EMR_FILE_COMPLETED, MOVIE_USER_CB_EVENT_CARSH_FILE_COMPLETED, MOVIE_USER_CB_EVENT_SNAPSHOT_OK, MOVIE_USER_CB_EVENT_TIMELAPSE_ONESHOT, MOVIE_USER_CB_EVENT_FILENAMING_MOV_CB, MOVIE_USER_CB_EVENT_FILENAMING_EMR_CB, MOVIE_USER_CB_EVENT_FILENAMING_SNAPSHOT_CB, MOVIE_USER_CB_EVENT_KICKTHUMB, MOVIE_USER_CB_EVENT_CUTFILE, MOVIE_USER_CB_EVENT_CLOSE_RESULT, MOVIE_USER_CB_EVENT_OVERTIME, MOVIE_USER_CB_EVENT_RAWENC_PREPARED, MOVIE_USER_CB_EVENT_CLOSE_FILE_COMPLETED, MOVIE_USRR_CB_EVENT_TRIGGER_ETHCAM_THUMB, MOVIE_USRR_CB_EVENT_FILE_DELETED, MOVIE_USER_CB_EVENT_JENC_PREPARED, MOVIE_USER_CB_EVENT_JENC_DONE, MOVIE_USER_CB_EVENT_UVAC, MOVIE_USER_CB_EVENT_PREV_CARSH_FILE_COMPLETED, MOVIE_USER_CB_EVENT_SET_ENC_RC_INFO, // ERROR MOVIE_USER_CB_ERROR_CARD_SLOW = 0x0000E400, MOVIE_USER_CB_ERROR_CARD_WR_ERR, MOVIE_USER_CB_ERROR_SEAMLESS_REC_FULL, MOVIE_USER_CB_ERROR_SNAPSHOT_ERR, MOVIE_USER_CB_ERROR_PROC_DATA_FAIL, ENUM_DUMMY4WORD(MOVIE_USER_CB_EVENT) } MOVIE_USER_CB_EVENT; typedef enum { MOVIE_IMGCAP_THUMB = 0, MOVIE_IMGCAP_RAWENC, MOVIE_IMGCAP_EXIF_THUMB, ENUM_DUMMY4WORD(MOVIE_IMGCAP_TYPE) } MOVIE_IMGCAP_TYPE; // enum for MOVIEMULTI_PARAM_IMGCAP_SOUT_BUF_TYPE typedef enum { MOVIE_IMGCAP_SOUT_PRIVATE = 0, MOVIE_IMGCAP_SOUT_COMMON, MOVIE_IMGCAP_SOUT_NONE, // not support this mode for NT9657x/NT9658x MOVIE_IMGCAP_SOUT_MAX, ENUM_DUMMY4WORD(MOVIE_IMGCAP_SOUT_TYPE) } MOVIE_IMGCAP_SOUT_TYPE; // enum for MOVIEMULTI_PARAM_IMGCAP_YUVSRC typedef enum { MOVIE_IMGCAP_YUVSRC_MAIN = 0, MOVIE_IMGCAP_YUVSRC_CLONE, MOVIE_IMGCAP_YUVSRC_DISP, MOVIE_IMGCAP_YUVSRC_STRM, MOVIE_IMGCAP_YUVSRC_ALG, MOVIE_IMGCAP_YUCSRC_MAX, ENUM_DUMMY4WORD(MOVIE_IMGCAP_YUVSRC) } MOVIE_IMGCAP_YUVSRC; // enum for MOVIEMULTI_PARAM_PSEUDO_REC_MODE typedef enum { MOVIE_PSEUDO_REC_NONE = 0, /// normal recording MOVIE_PSEUDO_REC_MODE_1, /// only start vcap & vprc & fileout MOVIE_PSEUDO_REC_MODE_2, /// only start vcap & vprc & venc & fileout (acap & aenc if rec_mode==_CFG_REC_TYPE_AV) MOVIE_PSEUDO_REC_MODE_3, /// only start vcap & vprc & venc (acap & aenc if rec_mode==_CFG_REC_TYPE_AV) MOVIE_PSEUDO_REC_MODE_MAX, ENUM_DUMMY4WORD(MOVIE_PSEUDO_REC_TYPE) } MOVIE_PSEUDO_REC_TYPE; typedef enum { MOVIE_VPE_NONE = 0x00000000, MOVIE_VPE_1 = 0x00000001, MOVIE_VPE_2 = 0x00000002, MOVIE_VPE_1_2 = (MOVIE_VPE_1 | MOVIE_VPE_2), ENUM_DUMMY4WORD(MOVIE_VPE) } MOVIE_VPE; typedef struct { HD_PATH_ID path_id; MOVIE_IMGCAP_TYPE type; USIZE img_size; } MOVIE_IMGCAP_INFO; typedef struct { UINT32 sign; UINT32 addr_pa; UINT32 addr_va; UINT32 size; } MOVIE_JPEG_INFO; typedef struct { MOVIE_CFG_REC_ID rec_id; UINT32 vin_id; /// BYTE[3]: reserved, BYTE[2]: ad_detcet_type (enum AD_DET_TYPE), BYTE[1]: chip_id, BYTE[0]: vin_id UINT32 vcap_id_bit; } MOVIE_AD_MAP; // Notice: need #include "ad.h" #define MAKEADMAPID(chip_id, vin_id) (((chip_id & 0x000000ff) << 8) | (vin_id & 0x000000ff)) #define MAKEADMAPIDTYPE(chip_id, vin_id, ad_type) (((ad_type & 0x000000ff) << 16) | ((chip_id & 0x000000ff) << 8) | (vin_id & 0x000000ff)) typedef void (MovieUserEventCb)(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT32 value); typedef void (MovieAudCapCb)(UINT32 pa, UINT32 va, UINT32 size); typedef void (MovieAudBsCb)(MOVIE_CFG_REC_ID id, HD_AUDIO_BS *paenc_data); typedef void (MovieVdoBsCb)(MOVIE_CFG_REC_ID id, HD_VIDEOENC_BS *pvenc_data); typedef void (*ETHCAM_SND_FUNC)(char* addr, int* size); typedef enum { MOVIE_VPE_STATE_INIT, MOVIE_VPE_STATE_RUN, MOVIE_VPE_STATE_UNINIT, } MOVIE_VPE_STATE; typedef void (MovieVpeCb)(MOVIE_CFG_REC_ID id, MOVIE_VPE_STATE state, void *param); // =================== Parameters =================== enum { /// Notice: MOVIEMULTI_PARAM_START = 0x0000ED000, /// means argument value uses xxx type/structure pointer to pass information // ipl group MOVIEMULTI_PARAM_IPL_GROUP_BEGIN = MOVIEMULTI_PARAM_START, MOVIEMULTI_PARAM_IPL_MIRROR = MOVIEMULTI_PARAM_IPL_GROUP_BEGIN, /// of definition (Set only) MOVIEMULTI_PARAM_VCAP_OUTFUNC, /// of enum combination (Set only) MOVIEMULTI_PARAM_IPL_FORCED_IMG_SIZE, /// of enum (Set only) MOVIEMULTI_PARAM_IPL_USER_IMG_SIZE, /// structure pointer (Set only) MOVIEMULTI_PARAM_VCAP_CCIR_FMT, /// of emum (Set only) MOVIEMULTI_PARAM_VCAP_CCIR_MIRROR_FLIP, /// of definition, ccir sensor only (Set only) MOVIEMULTI_PARAM_VCAP_CCIR_MODE, /// of enum, ccir sensor only (Set only) MOVIEMULTI_PARAM_VCAP_CROP, /// structure pointer (Set only) MOVIEMULTI_PARAM_FORCED_UNIQUE_3DNR_PATH, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_FORCED_USE_YUVAUX, /// of boolean, ccir sensor only, default: disable (Set only) MOVIEMULTI_PARAM_VCAP_OUT_SIZE, /// structure pointer, sie scaling down setting, 9657x/9658x is not supported (Set only) MOVIEMULTI_PARAM_VCAP_CCIR_DET_LOOP, /// , one loop will add extra 50ms delay (Set only) MOVIEMULTI_PARAM_VCAP_PAT_GEN, /// of enum (Set only) MOVIEMULTI_PARAM_VPRC_FPS, /// <<>> structure pointer, wifi path only (Set only) MOVIEMULTI_PARAM_DIS_FUNC, /// structure pointer (Set only) MOVIEMULTI_PARAM_VPRC_OUT_SIZE, /// structure pointer (Set only) MOVIEMULTI_PARAM_DIS_CROP_ALIGN, /// structure pointer (Set only, IAMOVIE_VPRC_EX_DISP only) MOVIEMULTI_PARAM_SIE_REMAP, /// , enable to remap csi1 to sie2, default: disable (Set only) MOVIEMULTI_PARAM_VPE_EN, /// of enum (Set only) MOVIEMULTI_PARAM_VPE_REG_CB, /// callback function (Set only) MOVIEMULTI_PARAM_VPE_SCENE, /// of enum (Set only) MOVIEMULTI_PARAM_FORCED_USE_VPE, /// of boolean, NT98580/NT98529 only, ccir sensor only, default: disable MOVIEMULTI_PARAM_VCAP_GYRO_FUNC_EN, /// of boolean, enable vcap gyro function, default: disable MOVIEMULTI_PARAM_VPRC_EIS_FUNC_EN, /// of boolean, enable vprc eis function, default: disable MOVIEMULTI_PARAM_IPL_GROUP_END, // image group MOVIEMULTI_PARAM_IMG_GROUP_BEGIN = MOVIEMULTI_PARAM_START + 0x0100, MOVIEMULTI_PARAM_MAIN_IME_CROP, /// structure pointer (Set only) MOVIEMULTI_PARAM_CLONE_IME_CROP, /// structure pointer (Set only) MOVIEMULTI_PARAM_IMG_GROUP_END, // video codec group MOVIEMULTI_PARAM_CODEC_GROUP_BEGIN = MOVIEMULTI_PARAM_START + 0x0200, MOVIEMULTI_PARAM_CODEC = MOVIEMULTI_PARAM_CODEC_GROUP_BEGIN, /// of enum (Set / Get) MOVIEMULTI_PARAM_TIMELAPSE_TIME, /// , timelapse time in unit ms (Set only) MOVIEMULTI_PARAM_ENCBUF_MS, /// , venc buffer time in unit ms (Set only) MOVIEMULTI_PARAM_VDO_ENC_REQUEST_I, /// , always set 0 (Set only) MOVIEMULTI_PARAM_VDO_ENC_REG_CB, /// callback function (Set only) MOVIEMULTI_PARAM_VDO_QUALITY_BASE_MODE_EN, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_TARGETRATE, /// , tbr in unit byte (Set only) MOVIEMULTI_PARAM_TIMER_TRIGGER_COMPENSATION, /// of boolean, default: enable (Set only) MOVIEMULTI_PARAM_VUI_EN, /// of boolean, default: enable (Set only) MOVIEMULTI_PARAM_VDO_ENC_MAX_FRAME_SIZE, /// , size in unit byte (Set only) MOVIEMULTI_PARAM_CODEC_PROFILE_LEVEL, /// structure pointer, (Set / Get) MOVIEMULTI_PARAM_VDO_ENC_PARAM, /// structure pointer, wifi path only (Set only) MOVIEMULTI_PARAM_CODEC_XVR_APP, /// of enum (Set only) MOVIEMULTI_PARAM_CODEC_SKIP_FRAME_MODE, /// , HI16 for target fps, LO16 for src fps. Set 0 to disble (Set only) MOVIEMULTI_PARAM_CODEC_SVC, /// , of enum MOVIEMULTI_PARAM_CODEC_LOW_POWER_MODE, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_CODEC_GROUP_END, // imgcap group MOVIEMULTI_PARAM_IMGCAP_GROUP_BEGIN = MOVIEMULTI_PARAM_START + 0x0300, MOVIEMULTI_PARAM_IMGCAP_EXIF_EN = MOVIEMULTI_PARAM_IMGCAP_GROUP_BEGIN, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_IMGCAP_THUM_SIZE, /// structure pointer (Set only) MOVIEMULTI_PARAM_IMGCAP_USE_VENC_BUF, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_IMGCAP_SOUT_BUF_TYPE, /// of enum (Set only) MOVIEMULTI_PARAM_IMGCAP_YUVSRC, /// of enum (Set only) MOVIEMULTI_PARAM_IMGCAP_THUM_WITH_EXIF, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_IMGCAP_THUM_AUTO_SCALING_EN, /// of boolean, enable this will re-calculated MP4 thumbnail size with aspect ratio, default: enable (Set only) MOVIEMULTI_PARAM_IMGCAP_EXIF_THUM_AUTO_SCALING_EN, /// of boolean, enable this will re-calculated EXIF thumbnail size with aspect ratio, default: enable (Set only) MOVIEMULTI_PARAM_IMGCAP_JPG_QUALITY, /// structure pointer, set before ImageApp_MovieMulti_Open (Set only) MOVIEMULTI_PARAM_IMGCAP_GROUP_END, // audio codec group MOVIEMULTI_PARAM_AUD_GROUP_BEGIN = MOVIEMULTI_PARAM_START + 0x0400, MOVIEMULTI_PARAM_AUD_MUTE_ENC = MOVIEMULTI_PARAM_AUD_GROUP_BEGIN, /// of boolean, mute from acap if MOVIEMULTI_PARAM_AUD_MUTE_ENC_FUNC_EN is not set, default: disable (Set only) NOVIEMULTI_PARAM_AUD_ACAP_BY_HDAL, /// of boolean, Linux SDK only, default: enable (Set only) MOVIEMULTI_PARAM_AUD_MUTE_ENC_FUNC_EN, /// of boolean, keep acap but only mute aenc, default: disable (Set only) MOVIEMULTI_PARAM_AUD_CAP_REG_CB, /// callback function (Set only) MOVIEMULTI_PARAM_AUD_ACAP_VOL, /// , 0~100 (Set / Get) MOVIEMULTI_PARAM_AUD_ACAP_ALC_EN, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_AUD_ENC_REG_CB, /// callback function (Set only) MOVIEMULTI_PARAM_AUD_ACAP_ANR, /// structure pointer, set before ImageApp_MovieMulti_Open (Set only) MOVIEMULTI_PARAM_AUD_ACAP_DEFAULT_SETTING, /// of enum, set after ImageApp_MovieMulti_Open and before audio start (Set only) MOVIEMULTI_PARAM_AUD_ACAP_NOISEGATE_THRESHOLD, /// , set after ImageApp_MovieMulti_Open and before audio start. -76 ~ -31 (Set only) MOVIEMULTI_PARAM_AUD_ENCBUF_MS, /// , aenc buffer time in unit ms (Set / Get) MOVIEMULTI_PARAM_AUD_ACAP_PREPWR_EN, /// of boolean, default: enable (Set only) MOVIEMULTI_PARAM_AUD_CAPBUF_MS, /// , acap buffer time in unit ms (Set / Get) MOVIEMULTI_PARAM_AUD_GROUP_END, // file group MOVIEMULTI_PARAM_FILE_GROUP_BEGIN = MOVIEMULTI_PARAM_START + 0x0500, MOVIEMULTI_PARAM_FILE_FORMAT = MOVIEMULTI_PARAM_FILE_GROUP_BEGIN, /// of enum (Set only) MOVIEMULTI_PARAM_REC_FORMAT, /// of enum (Set only) MOVIEMULTI_PARAM_FILE_SEAMLESSSEC, /// , seamless time in unit sec (Set only) MOVIEMULTI_PARAM_FILE_ENDTYPE, /// of definition (Set only) MOVIEMULTI_PARAM_FILE_PLAYFRAMERATE, /// (Set only) MOVIEMULTI_PARAM_FILE_BUFRESSEC, /// , bsmux buffer (normal and emr path) in unit sec (Set only) MOVIEMULTI_PARAM_FILE_ROLLBACKSEC, /// , EMR roll back time in unit sec (Set only) MOVIEMULTI_PARAM_FILE_KEEPSEC, /// , EMR keep time in unit sec (Set only) MOVIEMULTI_PARAM_FILE_EMRON, /// of enum combination (Set only) MOVIEMULTI_PARAM_FILE_FLUSH_SEC, /// , bsmux flush time in unit sec (Set only) MOVIEMULTI_PARAM_FILE_WRITE_BLKSIZE, /// , bsmux flush block size in unit byte, the value should aligned to MB (Set only) MOVIEMULTI_PARAM_FILE_GPS_DATA, /// structure pointer (Set only) MOVIEMULTI_PARAM_FILE_FRONT_MOOV, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_FILE_FRONT_MOOV_FLUSH_SEC, /// , bsmux flush time (front moov) in unit sec (Set only) MOVIEMULTI_PARAM_FILE_2V1A_MODE, /// of boolean, change mode is required, default: disable (Set / Get) MOVIEMULTI_PARAM_FILE_BSMUX_FAST_PUT, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_FILE_DROP_FRAME_WITHOUT_SLOW_CB, /// of boolean, default: disable (Set to _CFG_CTRL_ID path only) MOVIEMULTI_PARAM_RO_DEL_TYPE, /// of enum (Set only) MOVIEMULTI_PARAM_RO_DEL_PERCENT, /// , RO delete percentage (Set only) MOVIEMULTI_PARAM_RO_DEL_NUM, /// , RO delete number (Set only) MOVIEMULTI_PARAM_FILE_GPS_EN, /// of boolean, default: enable (Set only) MOVIEMULTI_PARAM_FILE_GPS_RATE, /// (Set only) MOVIEMULTI_PARAM_FILE_MAX_POP_SIZE, /// , file pop size in unit byte, the value should aligned to MB (Set only) MOVIEMULTI_PARAM_EMR_BSQ_INCARD, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_FILE_RECOVERY_FUNC_EN, /// of boolean, enable/disable file recovery function, default: enable (Set to _CFG_CTRL_ID path only) MOVIEMULTI_PARAM_FILE_BITSTREAM_ALIGN_EN, /// of boolean, enable/disable bitstream data align function, default: enable (Set to _CFG_CTRL_ID path only) MOVIEMULTI_PARAM_FILE_GPS_BUF_SIZE, /// , gps data buffer size in unit byte (Set only) MOVIEMULTI_PARAM_FILE_CUST_TAG, /// structure pointer, set after ImageApp_MovieMulti_Open (Set only) MOVIEMULTI_PARAM_FILE_ENCRYPT, /// structure pointer, set before ImageApp_MovieMulti_Open (Set only) MOVIEMULTI_PARAM_FILE_FREA_EN, /// of boolean, use "frea" (enable) or "skip" (disable) atom to save private info. default: disable (Set to _CFG_CTRL_ID path only) MOVIEMULTI_PARAM_FILE_UTC_AUTO_EN, /// of boolean, enable it will not write time info into mp4 file. default: disable (Set to _CFG_CTRL_ID path only) MOVIEMULTI_PARAM_FILE_VAR_RATE, /// , play vfr, if set, the video file will become video only (Set only) MOVIEMULTI_PARAM_FILE_USE_FILEDB, /// of boolean, use fileDB to manage files. defualt enable for ver. 1.00.xxx, but disable for ver. 1.00.xxxa (Set only) MOVIEMULTI_PARAM_FILE_CB_CLOSED_FILE_INFO, /// of boolean, pass MOVIEMULTI_CLOSE_FILE_INFO when MOVIE_USER_CB_EVENT_CLOSE_FILE_COMPLETED callback. defualt disable for ver. 1.00.xxx, but enable for ver. 1.00.xxxa (Set only) MOVIEMULTI_PARAM_FILE_BUFRESSEC_EMR, /// , bsmux buffer (emr path) in unit sec (Set only) MOVIEMULTI_PARAM_FILE_BUFLOCK_INFO, /// structure pointer, the value of buf_sec_ms should < BUFRESSEC (Set only) MOVIEMULTI_PARAM_FILE_ROLLBACKSEC_CRASH, /// , pre-record second for crash (update rollback_sec of MOVIE_RECODE_FILE_OPTION) MOVIEMULTI_PARAM_FILE_KEEPSEC_CRASH, /// , post-record second for crash (update forward_sec of MOVIE_RECODE_FILE_OPTION) MOVIEMULTI_PARAM_FILE_SETCRASH_NOT_RO, /// , of boolean, enable it will not set ro attrib on crash file. default: disable (Set only) MOVIEMULTI_PARAM_FILE_EMR_NOT_RO, /// , of boolean, enable it will not set ro attrib on emr file. default: disable (Set only) MOVIEMULTI_PARAM_FILE_GROUP_END, // display group MOVIEMULTI_PARAM_DISP_GROUP_BEGIN = MOVIEMULTI_PARAM_START + 0x0600, MOVIEMULTI_PARAM_DISP_REG_CB = MOVIEMULTI_PARAM_DISP_GROUP_BEGIN, /// callback function (Set only) MOVIEMULTI_PARAM_DISP_IME_CROP, /// structure pointer (Set only) MOVIEMULTI_PARAM_DISP_MIRROR_FLIP, /// of definition (Set only) MOVIEMULTI_PARAM_DISP_IME_CROP_AUTO_SCALING_EN, /// of boolean, enable this will re-calculated image size with aspect ratio, default: enable (Set only) MOVIEMULTI_PARAM_DISP_WINDOW, /// structure pointer (Set only) MOVIEMULTI_PARAM_DISP_FPS, /// (Set only) MOVIEMULTI_PARAM_DISP_IME_CROP_FIXED_OUT_SIZE_EN, /// of boolean, enable this setting allow crop window size != display size, default: disable (Set only) MOVIEMULTI_PARAM_DISP_GROUP_END, // wifi group MOVIEMULTI_PARAM_WIFI_GROUP_BEGIN = MOVIEMULTI_PARAM_START + 0x0700, MOVIEMULTI_PARAM_WIFI_REG_CB = MOVIEMULTI_PARAM_WIFI_GROUP_BEGIN, /// callback function (Set only) MOVIEMULTI_PRARM_UVAC_FUNC, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_UVAC_VEND_DEV_DESC, /// structure pointer (Set only) MOVIEMULTI_PARAM_UVAC_VID_RESO_ARY, /// structure pointer (Set only) MOVIEMULTI_PARAM_UVAC_AUD_SAMPLERATE_ARY, /// structure pointer (Set only) MOVIEMULTI_PARAM_UVAC_VID_FMT_TYPE, /// of enum (Set only) MOVIEMULTI_PARAM_UVAC_CDC_EN, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_UVAC_CDC2_EN, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_UVAC_CDC_PSTN_REQ_CB, /// callback function (Set only) MOVIEMULTI_PARAM_WIFI_VENC_TIMER_MODE, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_WIFI_GROUP_END, // misc group MOVIEMULTI_PARAM_MISC_GROUP_BEGIN = MOVIEMULTI_PARAM_START + 0x0800, MOVIEMULTI_PARAM_FILEDB_FILTER = MOVIEMULTI_PARAM_MISC_GROUP_BEGIN, /// of definition combination (Set only) MOVIEMULTI_PRARM_FILEDB_MAX_MUM, /// (Set only) MOVIEMULTI_PARAM_YUV_COMPRESS, /// of boolean, default: disable (Set only) MOVIEMULTI_PRARM_DELETE_FILTER, /// of definition combination (Set only) MOVIEMULTI_PARAM_PSEUDO_REC_MODE, /// of enum (Set / Get) MOVIEMULTI_PARAM_TV_RANGE, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_MANUAL_PUSH_VDO_FRAME, /// of boolean, bind vprc->venc if set disable, default: disable (Set only) MOVIEMULTI_PARAM_MANUAL_PUSH_RAW_FRAME, /// of boolean, bind vcap->vprc if set disable, default: disable (Set only) MOVIEMULTI_PARAM_MISC_GROUP_END, // ethcam group MOVIEMULTI_PARAM_ETHCAM_GROUP_BEGIN = MOVIEMULTI_PARAM_START + 0x0900, MOVIEMULTI_RARAM_ETHCAM_RX_FUNC_EN = MOVIEMULTI_PARAM_ETHCAM_GROUP_BEGIN, /// of boolean, default: disable (Set only) MOVIEMULTI_PRARM_ETHCAM_DEC_INFO, /// structure pointer (Set only) MOVIEMULTI_PRARM_ETHCAM_REC_INFO, /// structure pointer (Set only) MOVIEMULTI_RARAM_ETHCAM_TX_CLONE_DIRECTTRIGGER_EN, /// of boolean, default: disable (Set only) MOVIEMULTI_PARAM_ETHCAM_GROUP_END, }; /// ========== Function Prototype area ========== /// ImageApp_MovieMulti extern ER ImageApp_MovieMulti_Open(void); extern ER ImageApp_MovieMulti_Close(void); extern ER ImageApp_MovieMulti_Config(UINT32 config_id, UINT32 value); extern ER ImageApp_MovieMulti_FileOption(MOVIE_RECODE_FILE_OPTION *prec_option); extern UINT32 ImageApp_MovieMulti_Recid2ImgLink(MOVIE_CFG_REC_ID id); extern UINT32 ImageApp_MovieMulti_Recid2BsPort(MOVIE_CFG_REC_ID id); extern UINT32 ImageApp_MovieMulti_BsPort2Recid(UINT32 port); extern UINT32 ImageApp_MovieMulti_BsPort2Imglink(UINT32 port); extern UINT32 ImageApp_MovieMulti_BsPort2EthCamlink(UINT32 port); extern UINT32 ImageApp_MovieMulti_VePort2Imglink(UINT32 port); extern HD_PATH_ID ImageApp_MovieMulti_GetVcapCtrlPort(MOVIE_CFG_REC_ID id); extern HD_PATH_ID ImageApp_MovieMulti_GetVcapPort(MOVIE_CFG_REC_ID id); extern HD_PATH_ID ImageApp_MovieMulti_GetVprcInPort(MOVIE_CFG_REC_ID id); extern HD_PATH_ID ImageApp_MovieMulti_GetVprc3DNRPort(MOVIE_CFG_REC_ID id); extern HD_PATH_ID ImageApp_MovieMulti_GetVdoEncPort(MOVIE_CFG_REC_ID id); extern HD_PATH_ID ImageApp_MovieMulti_GetRawEncPort(MOVIE_CFG_REC_ID id); extern HD_PATH_ID ImageApp_MovieMulti_GetVprcPort(MOVIE_CFG_REC_ID id, IAMOVIE_VPRC_EX_PATH path); extern HD_PATH_ID ImageApp_MovieMulti_GetAlgDataPort(MOVIE_CFG_REC_ID id, MOVIE_CFG_ALG_PATH path); extern HD_PATH_ID ImageApp_MovieMulti_GetAudEncPort(MOVIE_CFG_REC_ID id); extern void ImageApp_MovieMulti_Root_Path(CHAR *prootpath, UINT32 rec_id); extern UINT32 ImageApp_MovieMulti_Folder_Naming(MOVIEMULTI_RECODE_FOLDER_NAMING *pfolder_naming); extern BOOL ImageApp_MovieMulti_isFileNaming(MOVIE_CFG_REC_ID rec_id); /// ImageApp_MovieMulti_AudCapLink extern ER ImageApp_MovieMulti_AudCapStart(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_AudCapStop(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_AudCapGetFrame(MOVIE_CFG_REC_ID id, UINT8 *p_buf, UINT32 *p_len, INT32 wait_ms); extern ER ImageApp_MovieMulti_AudTranscodeStart(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_AudTranscodeStop(MOVIE_CFG_REC_ID id); /// ImageApp_MovieMulti_CB extern ER ImageApp_MovieMulti_RegUserCB(MovieUserEventCb *fncb); extern ER ImageApp_MovieMulti_InitCrash(MOVIE_CFG_REC_ID rec_id); extern ER ImageApp_MovieMulti_SetCrash(MOVIE_CFG_REC_ID rec_id, UINT32 is_set); /// ImageApp_MovieMulti_DispLink extern ER ImageApp_MovieMulti_DispStart(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_DispStop(MOVIE_CFG_REC_ID id); extern HD_RESULT ImageApp_MovieMulti_DispPullOut(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame, INT32 wait_ms); extern HD_RESULT ImageApp_MovieMulti_DispPushIn(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame, INT32 wait_ms); extern HD_RESULT ImageApp_MovieMulti_DispReleaseOut(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame); extern HD_RESULT ImageApp_MovieMulti_DispWindowEnable(MOVIE_CFG_REC_ID id, UINT32 En); /// ImageApp_MovieMulti_EthCamLink extern ER ImageApp_MovieMulti_EthCamLinkForDisp(MOVIE_CFG_REC_ID id, UINT32 action, BOOL allow_pull); extern UINT32 ImageApp_MovieMulti_EthCamLinkForDispStatus(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_EthCamLinkPushVdoBsToDecoder(MOVIE_CFG_REC_ID id, HD_VIDEODEC_BS *p_video_bs); extern ER ImageApp_MovieMulti_EthCamLinkPushVdoBsToBsMux(MOVIE_CFG_REC_ID id, HD_VIDEOENC_BS *p_video_bs); extern ER ImageApp_MovieMulti_EthCamLinkPushJpgToFileOut(MOVIE_CFG_REC_ID id, HD_FILEOUT_BUF *p_jpg); extern ER ImageApp_MovieMulti_EthCamLinkPushThumbToBsMux(MOVIE_CFG_REC_ID id, HD_BSMUX_PUT_DATA *p_thumb_info, UINT32 is_emr); /// ImageApp_MovieMulti_FileManage extern INT32 ImageApp_MovieMulti_FMAllocate(CHAR drive); extern INT32 ImageApp_MovieMulti_FMScan(CHAR drive, MOVIEMULTI_DISK_INFO* p_disk_info); extern INT32 ImageApp_MovieMulti_FMDump(CHAR drive); extern INT32 ImageApp_MovieMulti_FMOpen(CHAR drive); extern INT32 ImageApp_MovieMulti_FMClose(CHAR drive); extern INT32 ImageApp_MovieMulti_FMRefresh(CHAR drive); extern INT32 ImageApp_MovieMulti_FMConfig(MOVIE_CFG_FDB_INFO *p_cfg); extern void ImageApp_MovieMulti_FMSetSortBySN(CHAR *pDelimStr, UINT32 nDelimCount, UINT32 nNumOfSn); /// ImageApp_MovieMulti_ImgLink extern HD_RESULT ImageApp_MovieMulti_RecPullOut(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame, INT32 wait_ms); // pull out vdofrm from vprc extern HD_RESULT ImageApp_MovieMulti_RecPushIn(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame, INT32 wait_ms); // push in vdofrm to venc extern HD_RESULT ImageApp_MovieMulti_RecReleaseOut(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame); // release vdofrm from vprc extern HD_RESULT ImageApp_MovieMulti_RawFramePullOut(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame, INT32 wait_ms); // pull out rawfrm from vcap extern HD_RESULT ImageApp_MovieMulti_RawFramePushIn(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame, INT32 wait_ms); // push in rawfrm to vprc extern HD_RESULT ImageApp_MovieMulti_RawFrameReleaseOut(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame); // release rawfrm from vcap /// ImageApp_MovieMulti_Operation extern ER ImageApp_MovieMulti_ImgLinkForDisp(MOVIE_CFG_REC_ID id, UINT32 action, BOOL allow_pull); extern UINT32 ImageApp_MovieMulti_EthCamLinkForDispStatus(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_ImgLinkForStreaming(MOVIE_CFG_REC_ID id, UINT32 action, BOOL allow_pull); extern UINT32 ImageApp_MovieMulti_ImgLinkForStreamingStatus(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_ImgLinkForUVAC(MOVIE_CFG_REC_ID id, UINT32 action, BOOL allow_pull); extern UINT32 ImageApp_MovieMulti_ImgLinkForUVACStatus(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_ImgLinkForAlg(MOVIE_CFG_REC_ID id, MOVIE_CFG_ALG_PATH path, UINT32 action, BOOL allow_pull); extern UINT32 ImageApp_MovieMulti_ImgLinkForAlgStatus(MOVIE_CFG_REC_ID id, MOVIE_CFG_ALG_PATH path); extern ER ImageApp_MovieMulti_RecStart(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_RecStop(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_TriggerSnapshot(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_TrigEMR(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_TrigOnce(MOVIE_CFG_REC_ID id, UINT32 sec); extern ER ImageApp_MovieMulti_EthCamTxStart(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_EthCamTxStop(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_EthCam_TxTriggerThumb(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_TranscodeStart(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_TranscodeStop(MOVIE_CFG_REC_ID id); /// ImageApp_MovieMulti_Param extern ER ImageApp_MovieMulti_SetParam(MOVIE_CFG_REC_ID id, UINT32 param, UINT32 value); extern ER ImageApp_MovieMulti_GetParam(MOVIE_CFG_REC_ID id, UINT32 param, UINT32* value); /// ImageApp_MovieMulti_Utilities extern UINT32 ImageApp_MovieMulti_IsStreamRunning(MOVIE_CFG_REC_ID id); extern UINT32 ImageApp_MovieMulti_GetFreeRec(HD_BSMUX_CALC_SEC *pSetting); extern UINT32 ImageApp_MovieMulti_GetRemainSize(CHAR drive, UINT64 *p_size); extern UINT32 ImageApp_MovieMulti_SetReservedSize(CHAR drive, UINT64 size, UINT32 is_loop); extern UINT32 ImageApp_MovieMulti_SetExtendCrashInfo(MOVIE_CFG_REC_ID id, UINT32 unit, UINT32 max_num, UINT32 enable); extern UINT32 ImageApp_MovieMulti_IsExtendCrash(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_SetExtendCrash(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_GetDropCnt(MOVIE_CFG_REC_ID id, MOVIEMULTI_BS_DROP_CNT *pcnt); extern ER ImageApp_MovieMulti_GetAudEncBufInfo(MOVIE_CFG_REC_ID id, HD_AUDIOENC_BUFINFO *pinfo); extern ER ImageApp_MovieMulti_GetVdoEncBufInfo(MOVIE_CFG_REC_ID id, HD_VIDEOENC_BUFINFO *pinfo); extern ER ImageApp_MovieMulti_GetVcapSysInfo(MOVIE_CFG_REC_ID id, HD_VIDEOCAP_SYSINFO *pinfo); extern UINT32 ImageApp_MovieMulti_DetBufUsage(MOVIE_CFG_REC_ID id); extern INT32 ImageApp_MovieMulti_SetFormatFree(CHAR drive, BOOL is_on); extern INT32 ImageApp_MovieMulti_SetFolderInfo(CHAR *p_path, UINT32 ratio, UINT64 f_size); extern INT32 ImageApp_MovieMulti_GetFolderInfo(CHAR *p_path, UINT32 *ratio, UINT64 *f_size); extern INT32 ImageApp_MovieMulti_SetCyclicRec(CHAR *p_path, BOOL is_on); extern INT32 ImageApp_MovieMulti_SetExtStrType(CHAR drive, UINT32 type); extern INT32 ImageApp_MovieMulti_SetUseHiddenFirst(CHAR drive, BOOL value); extern INT32 ImageApp_MovieMulti_SetSyncTime(CHAR drive, BOOL value); extern INT32 ImageApp_MovieMulti_SetFileUnit(CHAR *p_path, UINT32 unit); extern INT32 ImageApp_MovieMulti_SetSkipReadOnly(CHAR drive, BOOL value); extern ER ImageApp_MovieMulti_GetDesc(MOVIE_CFG_REC_ID id, UINT32 codec, PMEM_RANGE desc, PMEM_RANGE sps, PMEM_RANGE pps, PMEM_RANGE vps); /// ImageApp_MovieMulti_WifiLink extern ER ImageApp_MovieMulti_StreamingStart(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_StreamingStop(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_UvacStart(MOVIE_CFG_REC_ID id); extern ER ImageApp_MovieMulti_UvacStop(MOVIE_CFG_REC_ID id); extern HD_RESULT ImageApp_MovieMulti_WifiPullOut(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame, INT32 wait_ms); extern HD_RESULT ImageApp_MovieMulti_WifiPushIn(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame, INT32 wait_ms); extern HD_RESULT ImageApp_MovieMulti_WifiReleaseOut(MOVIE_CFG_REC_ID id, HD_VIDEO_FRAME* p_video_frame); extern ER ImageApp_MovieMulti_EthCamTxRecId1_CBLink(HD_VIDEOENC_BS *pData, UINT32 SndFunc); extern ER ImageApp_MovieMulti_EthCamTxCloneId1_CBLink(HD_VIDEOENC_BS *pvenc_data, UINT32 SndFunc); extern ER ImageApp_MovieMulti_EthCamTxRecId1_DumpBsInfo(void); extern ER ImageApp_MovieMulti_EthCamTxCloneId1_DumpBsInfo(void); extern ER ImageApp_MovieMulti_EthCamTxRecId1_SetRawEncodeBuff(UINT32 WorkAddr, UINT WorkSize); extern ER ImageApp_MovieMulti_EthCamTxRecId1_TriggerRawEncode(UINT32 addr_va, UINT32 size); extern ER ImageApp_MovieMulti_EthCamTxRecId1_SetThumbBuff(UINT32 WorkAddr, UINT WorkSize); extern ER ImageApp_MovieMulti_EthCamTxRecId1_TriggerThumb(UINT32 addr_va, UINT32 size); extern ER ImageApp_MovieMulti_EthCamTxCloneId1_SetRawEncodeBuff(UINT32 WorkAddr, UINT WorkSize); extern ER ImageApp_MovieMulti_EthCamTxCloneId1_SetVdoEncVaAddr(UINT32 Pathid); extern ER ImageApp_MovieMulti_EthCamTxRecId1_SetVdoEncVaAddr(UINT32 Pathid); // =================== Special definition area start =================== #define ETHCAM_TX_MAGIC_KEY 0x67100000 #endif//IMAGEAPP_MOVIEMULTI_H