#ifndef _UIVIEWMOVIE_H_ #define _UIVIEWMOVIE_H_ #include "PrjInc.h" #include "UIApp/UIAppCommon.h" #include "ImageApp/ImageApp_MovieMulti.h" #if (defined(_NVT_ETHREARCAM_RX_)) #include "EthCam/EthCamSocket.h" #endif #define _LINUX_MOVIE_TODO_ 0 #define MOVOBJ_REC_JPEG_FORMAT444 0 #define MOVOBJ_REC_JPEG_FORMAT422 1 #define MOVOBJ_REC_JPEG_FORMAT420 2 #define MOVOBJ_REC_AUD_VID_BOTH 0 #define MOVOBJ_REC_VID_ONLY 1 #define MOVOBJ_REC_QUALITY_BEST 0 #define MOVOBJ_REC_QUALITY_NORMAL 1 #define MOVOBJ_REC_QUALITY_DRAFT 2 //----- record ----- #define MOVREC_REC_STATUS_NOT_OPENED 1 #define MOVREC_REC_STATUS_NOT_RECORD 2 #define MOVREC_REC_STATUS_NOT_RECORDING 3 #define MOVREC_EVENT_RESULT_NORMAL 1 //1 ///< Finish normally #define MOVREC_EVENT_RESULT_HW_ERR 2 //2 ///< Hardware error #define MOVREC_EVENT_RESULT_FULL 3 //3 ///< Card full #define MOVREC_EVENT_RESULT_SLOW 4 //4 ///< Write card too slowly #define MOVREC_EVENT_RESULT_NOTREADY 5 //5 ///< Not ready #define MOVREC_EVENT_ONE_SECOND 6 //6 ///< One second arrives #define MOVREC_EVENT_RESULT_OVERTIME 7 //7 ///< Overtime #define MOVREC_EVENT_RESULT_OVERWRITE 8 //8 ///< Buffer overwrite #define MOVREC_EVENT_RESULT_INVALIDFILE 9 //9 ///< SAVE INVALIDFILE #define MOVREC_EVENT_RESULT_WRITE_ERR 10 //10 #define MOVIE_VDO_DISP_SIZE_W 960 #define MOVIE_VDO_DISP_SIZE_H 180 #define MOVIE_THUMB_WIDTH 640 typedef enum { RECMOVIE_AUD_OFF = 0, // 0% RECMOVIE_AUD_VOL1 = 13, // 13% RECMOVIE_AUD_VOL2 = 25, // 25% RECMOVIE_AUD_VOL3 = 37, // 37% RECMOVIE_AUD_VOL4 = 50, // 50% RECMOVIE_AUD_VOL5 = 63, // 63% RECMOVIE_AUD_VOL6 = 75, // 75% RECMOVIE_AUD_VOL7 = 87, // 87% RECMOVIE_AUD_ON = 100, // 100% RECMOVIE_AUD_MAX } RECMOVIE_AUD_TYPE; typedef enum { RECMOVIE_AUD_TOTLVL16_OFF = 0, // 0% RECMOVIE_AUD_TOTLVL16_VOL1 = 7, // 7% RECMOVIE_AUD_TOTLVL16_VOL2 = 13, // 13% RECMOVIE_AUD_TOTLVL16_VOL3 = 19, // 19% RECMOVIE_AUD_TOTLVL16_VOL4 = 25, // 25% RECMOVIE_AUD_TOTLVL16_VOL5 = 31, // 31% RECMOVIE_AUD_TOTLVL16_VOL6 = 37, // 37% RECMOVIE_AUD_TOTLVL16_VOL7 = 44, // 44% RECMOVIE_AUD_TOTLVL16_VOL8 = 50, // 50% RECMOVIE_AUD_TOTLVL16_VOL9 = 56, // 56% RECMOVIE_AUD_TOTLVL16_VOL10 = 63, // 63% RECMOVIE_AUD_TOTLVL16_VOL11 = 69, // 69% RECMOVIE_AUD_TOTLVL16_VOL12 = 75, // 75% RECMOVIE_AUD_TOTLVL16_VOL13 = 81, // 81% RECMOVIE_AUD_TOTLVL16_VOL14 = 87, // 87% RECMOVIE_AUD_TOTLVL16_VOL15 = 93, // 93% RECMOVIE_AUD_TOTLVL16_ON = 100, // 100% RECMOVIE_AUD_TOTLVL16_MAX } RECMOVIE_AUD_TOTLVL16_TYPE; //------------------------------------------------------------ typedef enum { RECMOVIE_MAXSECOND, RECMOVIE_REC_STATUS, RECMOVIE_SAVING_STATUS, //#NT#2011/02/10#Photon Lin -begin //#Add file access RECMOVIE_QUEUE_STATUS, //#NT#2011/02/10#Photon Lin -end RECMOVIE_GET_DATATYPE_MAX } RECMOVIE_GET_DATATYPE; #if (GPS_FUNCTION==ENABLE) #include "GPS.h" #endif // APP event class typedef enum { NVTEVT_MOVIE_EVT_START = APPUSER_MOVIE_BASE, ///< Min value = 0x14001000 //Flow and basic parameter NVTEVT_EXE_MOVIE_REC_START = 0x14001000, NVTEVT_EXE_MOVIE_REC_STEP = 0x14001001, NVTEVT_EXE_MOVIE_REC_STOP = 0x14001002, NVTEVT_EXE_MOVIE_REC_PIM = 0x14001003, // picture in movie (still image is full resolution) NVTEVT_EXE_MOVIE_REC_RAWENC = 0x14001004, // raw encode (still image size is equal to or smaller than video size) NVTEVT_EXE_MOVIESIZE = 0x14001005, NVTEVT_EXE_MOVIEQUALITY = 0x14001006, NVTEVT_EXE_MOVIEDZOOM = 0x14001007, NVTEVT_EXE_MOVIE_AUDIO = 0x14001008, NVTEVT_EXE_MOVIE_AUDIO_VOL = 0x14001009, NVTEVT_EXE_DUAL_REC = 0x14001010, NVTEVT_EXE_MOVIE_AUDIO_REC = 0x14001011, NVTEVT_EXE_MOVIE_STRM_START = 0x14001012, NVTEVT_EXE_MOVIE_STRM_STOP = 0x14001013, NVTEVT_EXE_MOVIE_UVAC_START = 0x14001014, NVTEVT_EXE_MOVIE_UVAC_STOP = 0x14001015, /* INSERT NEW EVENT HRER */ //Preview AE,AWB,AF,Color,IQ,Stable,Distortion NVTEVT_EXE_MOVIE_EV = 0x14001100, NVTEVT_EXE_MOVIECONTAF = 0x14001101, NVTEVT_EXE_MOVIEMETERING = 0x14001102, NVTEVT_EXE_MOVIECOLOR = 0x14001103, NVTEVT_EXE_MOVIE_MCTF = 0x14001104, NVTEVT_EXE_MOVIE_EDGE = 0x14001105, NVTEVT_EXE_MOVIE_NR = 0x14001106, NVTEVT_EXE_MOVIE_RSC = 0x14001107, NVTEVT_EXE_MOVIE_HDR = 0x14001108, NVTEVT_EXE_MOVIE_WDR = 0x14001109, NVTEVT_EXE_MOVIEGDC = 0x1400110a, NVTEVT_EXE_MOVIESMEAR = 0x1400110b, NVTEVT_EXE_MOVIEDIS = 0x1400110c, NVTEVT_EXE_MOVIEDIS_ENABLE = 0x1400110d, NVTEVT_EXE_MOVIE_IR_CUT = 0x1400110e, NVTEVT_EXE_MOVIE_DEFOG = 0x1400110f, NVTEVT_EXE_MOVIE_SENSOR_ROTATE = 0x14001110, // Move to System obj!!! //#NT#2016/06/03#Charlie Chang -begin //#NT# addcontrast AudioIn,flip mirror, quality set NVTEVT_EXE_MOVIE_CONTRAST = 0x14001111, NVTEVT_EXE_MOVIE_AUDIOIN = 0x14001112, NVTEVT_EXE_MOVIE_AUDIOIN_SR = 0x14001113, NVTEVT_EXE_MOVIE_FLIP_MIRROR = 0x14001114, NVTEVT_EXE_MOVIE_QUALITY_SET = 0x14001115, //#NT#2016/06/03#Charlie Chang -end /* INSERT NEW EVENT HRER */ //Record func and Effect NVTEVT_EXE_MOVIE_FDEND = 0x14001200, NVTEVT_EXE_MOVIE_AUTO_REC = 0x14001201, NVTEVT_EXE_CYCLIC_REC = 0x14001202, NVTEVT_EXE_MOTION_DET = 0x14001203, NVTEVT_EXE_GSENSOR = 0x14001204, NVTEVT_EXE_DATEIMPRINT = 0x14001205, NVTEVT_EXE_MOVIE_DATE_IMPRINT = 0x14001206, NVTEVT_EXE_MOVIE_PROTECT_AUTO = 0x14001207, NVTEVT_EXE_MOVIE_PROTECT_MANUAL = 0x14001208, NVTEVT_EXE_MOVIE_PTZ = 0x14001209, NVTEVT_EXE_MOVIE_LDWS = 0x1400120a, NVTEVT_EXE_MOVIE_FCW = 0x1400120b, NVTEVT_EXE_VIDEO_PAUSE_RESUME = 0x1400120c, //#NT#2016/03/02#Lincy Lin -begin //#NT#Support object tracking function NVTEVT_EXE_MOVIE_OTEND = 0x1400120d, // object tracking process on frame track end //#NT#2016/03/02#Lincy Lin -end //#NT#2016/05/25#David Tsai -begin //#NT#Support tampering detection function NVTEVT_EXE_MOVIE_TDEND = 0x1400120e, // tampering detection process on frame track end //#NT#2016/05/25#David Tsai -end //#NT#2016/10/17#Bin Xiao -begin //#NT# Support Face Tracking Grading(FTG) NVTEVT_EXE_MOVIE_FTGEND = 0x1400120f, //#NT#2016/10/17#Bin Xiao -end //#NT#2016/10/14#Yuzhe Bian -begin //#NT# Support trip-wire detection & trip-zone detection function NVTEVT_EXE_MOVIE_TWDEND = 0x14001210, // trip-wire detection process on frame track end NVTEVT_EXE_MOVIE_TZDEND = 0x14001211, // trip-zone detection process on frame track end //#NT#2016/10/14#Yuzhe Bian -end //#NT#2016/06/08#Lincy Lin -begin //#NT#Implement generic OSD and video drawing mechanism for ALG function NVTEVT_EXE_MOVIE_ALGEND = 0x14001212, // alg process on end //#NT#2016/06/08#Lincy Lin -end NVTEVT_EXE_MOTION_DET_RUN = 0x14001213, NVTEVT_EXE_MOVIE_CODEC = 0x14001214, NVTEVT_EXE_MOVIE_SENSORHOTPLUG = 0x14001215, NVTEVT_EXE_MOVIE_ETHCAMHOTPLUG = 0x14001216, //#NT#2016/03/25#KCHong -begin //#NT#New ADAS // Evnet for ADAS NVTEVT_CB_ADAS_SETCROPWIN = 0x14001300, NVTEVT_CB_ADAS_SHOWALARM = 0x14001301, //#NT#2016/03/25#KCHong -end //#NT#2016/07/20#Brain Yen -begin //#NT#Event for DDD alarm NVTEVT_CB_DDD_SHOWALARM = 0x14001302, //#NT#2016/07/20#Brain Yen -end /* INSERT NEW EVENT HRER */ //Event post from IPLTsk NVTEVT_CB_PREVIEWSTABLE = 0x14001f00, NVTEVT_CB_OZOOMSTEPCHG = 0x14001f01, NVTEVT_CB_DZOOMSTEPCHG = 0x14001f02, /* INSERT NEW EVENT HRER */ //Event post from MediaTsk NVTEVT_CB_MOVIE_REC_ONE_SEC = 0x14001f10, NVTEVT_CB_MOVIE_REC_FINISH = 0x14001f11, NVTEVT_CB_MOVIE_FULL = 0x14001f12, NVTEVT_CB_MOVIE_SLOW = 0x14001f13, NVTEVT_CB_MOVIE_SLOWMEDIA = 0x14001f14, ///< slow media NVTEVT_CB_MOVIE_FILEACCESS = 0x14001f15, ///< file access with case of card full NVTEVT_CB_MOVIE_OVERTIME = 0x14001f16, NVTEVT_CB_MOVIE_PIM_READY = 0x14001f17, NVTEVT_CB_MOVIE_WR_ERROR = 0x14001f18, NVTEVT_CB_MOVIE_LOOPREC_FULL = 0x14001f19, NVTEVT_CB_MOVIE_CONTINUOUS_RECORD = 0x14001f1a, NVTEVT_CB_EMR_COMPLETED = 0x14001f1b, NVTEVT_CB_MOVIE_VEDIO_READY = 0x14001f1c, /* INSERT NEW EVENT HRER */ //Event post from MediaTsk RawEncode NVTEVT_CB_RAWENC_OK = 0x14001ff0, NVTEVT_CB_RAWENC_ERR = 0x14001ff1, NVTEVT_CB_RAWENC_WRITE_ERR = 0x14001ff2, NVTEVT_CB_RAWENC_DCF_FULL = 0x14001ff3, /* INSERT NEW EVENT HRER */ NVTEVT_MOVIE_EVT_END = APPUSER_MOVIE_BASE + 0x1000 - 1, ///< Max value = 0x14001fff } CUSTOM_MOVIE_EVENT; #if (GPS_FUNCTION==ENABLE) //#NT#2013/2/6#Philex -begin typedef struct { char IQVer[16]; char IQBuildDate[16]; RMCINFO rmcinfo; //#NT#2011/10/14#Spark Chou -begin //#NT# Video IQ debug info #if _MOVIE_IQLOG_ char IQDebugInfo[5120]; #endif //#NT#2011/10/14#Spark Chou -end } GPSDATA, *pGPSDATA; #endif //#NT#2016/03/25#KCHong -begin //#NT#New ADAS typedef enum _ADAS_ALARM { ADAS_ALARM_FC = 0, ADAS_ALARM_LD = 1, ADAS_ALARM_STOP = 2, ADAS_ALARM_GO = 3, ADAS_ALARM_MAX_CNT, ENUM_DUMMY4WORD(_ADAS_ALARM) } ADAS_ALARM; //#NT#2016/03/25#KCHong -end //#NT#2016/07/20#Brain Yen -begin //#NT#For DDD alarm typedef enum _DDD_ALARM { DDD_ALARM_PERCLOS = 0, DDD_ALARM_YAWN = 1, DDD_ALARM_DIS = 2, DDD_ALARM_NODE = 3, DDD_ALARM_EYE = 4, ENUM_DUMMY4WORD(_DDD_ALARM) } DDD_ALARM; //#NT#2016/07/20#Brain Yen -end extern VControl CustomMovieObjCtrl; extern MOVIE_RECODE_INFO gMovie_Rec_Info[]; extern MOVIE_RECODE_INFO gMovie_Clone_Info[]; extern MOVIE_STRM_INFO gMovie_Strm_Info; extern MOVIE_ALG_INFO gMovie_Alg_Info[]; extern MOVIEMULTI_AUDIO_INFO gMovie_Audio_Info; extern MOVIEMULTI_CFG_DISP_INFO gMovie_Disp_Info; extern MOVIE_RECODE_FILE_OPTION gMovie_Rec_Option; extern MOVIEMULTI_RECODE_FOLDER_NAMING gMovie_Folder_Naming[]; extern MOVIEMULTI_RECODE_FOLDER_NAMING gMovie_Clone_Folder_Naming[]; #if defined(_NVT_ETHREARCAM_RX_) extern MOVIEMULTI_RECODE_FOLDER_NAMING gMovie_EthCam_Folder_Naming[]; #endif extern void Movie_CommPoolInit(void); extern UINT32 Movie_GetSensorRecMask(void); extern void Movie_SetSensorRecMask(UINT32 mask); extern UINT32 Movie_GetMovieRecMask(void); extern UINT32 Movie_GetCloneRecMask(void); extern UINT32 Movie_GetImageRecCount(void); extern void Movie_GetRecSize(UINT32 rec_id, ISIZE *rec_size); extern UINT32 Movie_GetFreeSec(void); extern UINT32 MovieExe_GetPipStyle(void); extern HD_RESULT MovieExe_DetSensor(BOOL *plug); extern void MovieExe_ResetFileSN(void); extern UINT32 MovieExe_GetFileSN(void); extern BOOL MovieExe_CheckSNFull(void); extern BOOL FlowMovie_CheckReOpenItem(void); extern void MovieExe_TriggerPIMResultManual(UINT32 value); // Alg functions #define MOVIE_ALG_FUNC_AI2_MAX_OBJ_NUM 10 typedef struct { UINT32 obj_num; float score_threshold; HD_DIM dim; struct { float score; INT cid; HD_IRECT rect; } obj[MOVIE_ALG_FUNC_AI2_MAX_OBJ_NUM]; } MovieAlgFunc_AI2_Result; extern ER MovieAlgFunc_MD_InstallID(void); extern ER MovieAlgFunc_MD_UninstallID(void); extern ER MovieAlgFunc_AI2_InstallID(void); extern ER MovieAlgFunc_AI2_UninstallID(void); extern MovieAlgFunc_AI2_Result MovieAlgFunc_AI2_GetResult(void); extern UINT32 MovieAlgFunc_MD_GetResult(void); extern UINT32 MovieExe_GetCommonMemInitFinish(void); extern void Movie_SetUserData(UINT32 rec_id); #if 0 //Movie Config extern ISIZE Movie_GetBufferSize(void); //Movie Exe extern INT32 MovieExe_OnContAF(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray); extern INT32 MovieExe_OnMetering(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray); extern INT32 MovieExe_OnDis(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray); extern INT32 MovieExe_OnGdc(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray); extern INT32 MovieExe_OnSmear(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray); extern UINT32 MovieExe_GetMaxRecSec(void); extern UINT32 MovieExe_GetFreeRecSec(void); extern void MovieExe_RSC_SetSwitch(UINT32 index, UINT32 value); extern void MovieExe_IPL_SetIInfo(UINT32 index, UINT32 value); extern void Movie_RegCB(void); extern void UIMovie_IRCutCtrl(BOOL isON); extern VControl CustomMovieObjCtrl; extern void Movie_SetSDSlow(BOOL IsSlow); extern void MovieExe_SetMovieD2DModeEn(BOOL Enable); extern UINT32 Movie_GetSensorRecMask(void); extern void Movie_SetSensorRecMask(UINT32 mask); extern UINT32 Movie_GetMovieRecMask(void); extern UINT32 Movie_GetCloneRecMask(void); extern void Movie_SetResvSize(void); extern UINT32 Movie_GetFreeSec(void); // For UCTRL use extern UINT32 Movie_GetAudChannel(void); extern void Movie_SetAudChannel(UINT32 uiAudChannel); extern UINT32 Movie_GetAudSampleRate(void); extern void Movie_SetAudSampleRate(UINT32 uiAudSampleRate); extern UINT32 Movie_GetAudCodec(void); extern void Movie_SetAudCodec(UINT32 uiAudCodec); //#NT#2013/10/29#Isiah Chang -begin //#Implement YUV merge mode of recording func. extern void FlowMovie_RecSetYUVMergeMode(BOOL bEnable); extern BOOL FlowMovie_RecGetYUVMergeMode(void); extern void FlowMovie_RecSetYUVMergeRecInterval(UINT32 uiSec); extern UINT32 FlowMovie_RecGetYUVMergeRecInterval(void); extern void FlowMovie_RecSetYUVMergeRecCounter(UINT32 uiCount); extern UINT32 FlowMovie_RecGetYUVMergeRecCounter(void); extern void FlowMovie_RecYUVMergeCounterInc(void); //#NT#2013/10/29#Isiah Chang -end extern void FlowMovie_FileDBCreate(void); extern void FlowMovie_FileDBCreate_Fast(void); extern BOOL FlowMovie_CheckReOpenItem(void); //#NT#2016/03/07#KCHong -begin //#NT#Low power timelapse function #if (TIMELAPSE_LPR_FUNCTION == ENABLE) #define TIMELAPSE_FROM_HWRT 0 #define TIMELAPSE_FROM_UI 1 #define TIMELAPSE_FROM_TIMER 2 #define TIMELAPSE_FROM_PWRKEY 3 #define TL_FLOW_MOVIE 0x00 #define TL_FLOW_ORG 0x10 #define TL_FLOW_LPR 0x20 #define TL_STATE_DONTCARE 0x00 #define TL_STATE_STOP 0x01 #define TL_STATE_RECORD 0x02 #define TL_STATE_BUSY 0x03 #define TL_FLOW_MASK 0xf0 #define TL_STATE_MASK 0x0f #define TL_HWRT_BOOT_NORMAL 0 #define TL_HWRT_BOOT_ALARM 1 #define TL_HWRT_WORKING 2 #define TL_HWRT_TIMEUP 3 #define TL_BUFFER_SIZE ALIGN_CEIL_32(0x200000) #define TL_LPR_TIME_MIN_PERIOD MOVIE_TIMELAPSEREC_30SEC extern void MovieTLLPR_SetMem(UINT32 uiAddr, UINT32 uiSize); extern UINT32 MovieTLLPR_Process(INT32 CmdFrom); extern UINT32 MovieTLLPR_CheckHWRTStatus(void); extern UINT32 MovieTLLPR_GetStatus(void); #endif //#NT#2016/03/07#KCHong -end #endif extern void MovieExe_EthCam_ChgDispCB(UINT32 DualCam); extern UINT32 MovieExe_GetTBR(MOVIE_CFG_REC_ID rec_id); extern UINT32 MovieExe_GetFps(MOVIE_CFG_REC_ID rec_id); extern UINT32 MovieExe_GetGOP(MOVIE_CFG_REC_ID rec_id); extern UINT32 MovieExe_GetCodec(MOVIE_CFG_REC_ID rec_id); extern UINT32 MovieExe_GetEmrRollbackSec(void); extern UINT32 MovieExe_GetWidth(MOVIE_CFG_REC_ID rec_id); extern UINT32 MovieExe_GetHeight(MOVIE_CFG_REC_ID rec_id); extern MOVIE_RECODE_INFO MovieExe_GetRecInfo(MOVIE_CFG_REC_ID rec_id); //extern UINT32 MovieExe_GetCommonMemInitFinish(void); #if(defined(_NVT_ETHREARCAM_RX_)) UINT32 MovieExe_GetEthcamEncBufSec(ETHCAM_PATH_ID path_id); void MovieExe_SetEthcamEncBufSec(ETHCAM_PATH_ID path_id, UINT32 Sec); #endif #endif //_UIVIEWMOVIE_H_