|
|
@@ -3,7 +3,7 @@
|
|
|
#include <thread>
|
|
|
#include <vector>
|
|
|
#include <list>
|
|
|
-
|
|
|
+#include "Buffer.h"
|
|
|
#include "CDiscHelper.h"
|
|
|
#include "TSysThread.h"
|
|
|
#include "CAppLife.h"
|
|
|
@@ -11,24 +11,33 @@
|
|
|
|
|
|
#include "AnyCleaner.h"
|
|
|
|
|
|
-#define FRAME_CACHESIZE (3840*2160*16)
|
|
|
+#define FRAME_CACHESIZE 1024*1024*1024
|
|
|
#define GB(x) ((x.HighPart << 2) + (x.LowPart >> 20) / 1024.0) // 蛌遙峈GB等弇珆尨
|
|
|
-
|
|
|
+typedef void (*FRAMEDATACALLBACK)(char* frame_data, int frame_size, \
|
|
|
+ unsigned int frame_timesec, unsigned int frame_timeusec, bool is_iframe, \
|
|
|
+ void* user_data);
|
|
|
|
|
|
typedef struct tagRTPFILEDESC {
|
|
|
|
|
|
char file_name[256];
|
|
|
int file_size;
|
|
|
- std::string name;
|
|
|
+ char name[256];
|
|
|
char folder[256];
|
|
|
+ ULONGLONG file_number;
|
|
|
unsigned int start_timesec; // recording time_sec
|
|
|
unsigned int start_timeusec;
|
|
|
unsigned int end_timesec;
|
|
|
unsigned int end_timeusec;
|
|
|
unsigned int duration_sec;
|
|
|
-
|
|
|
} RTPFILEDESC;
|
|
|
+typedef struct tagTIME_SPAN {
|
|
|
+ unsigned int start_timesec;
|
|
|
+ //unsigned int start_timeusec;
|
|
|
+ unsigned int end_timesec;
|
|
|
+ //unsigned int end_timeusec;
|
|
|
+ //unsigned int duration_sec;
|
|
|
|
|
|
+} TIME_SPAN;
|
|
|
|
|
|
class CAppLifeThread : public TSysThreadImpl
|
|
|
{
|
|
|
@@ -86,21 +95,30 @@ public:
|
|
|
int remaining_memory;//郔苤等弇GB趼誹
|
|
|
std::string src_path;
|
|
|
std::string backup_path;
|
|
|
+ TIME_SPAN src_time_span;
|
|
|
+ TIME_SPAN back_time_span;
|
|
|
std::vector<char*> vec_src_foldernames;
|
|
|
std::vector<char*> vec_back_foldernames;
|
|
|
std::vector<char*> vec_src_date_folder;
|
|
|
std::vector<char*> vec_back_date_folder;
|
|
|
std::list<RTPFILEDESC*> list_src_rtpfiles;
|
|
|
+ std::list<RTPFILEDESC*> list_localDay_rtpfiles;
|
|
|
+ std::list<RTPFILEDESC*> list_lastDay_rtpfiles;
|
|
|
+ std::list<RTPFILEDESC*> list_nextDay_rtpfiles;
|
|
|
std::list<RTPFILEDESC*> list_backup_rtpfiles;
|
|
|
+ void Is_NextSame_Times(std::list<RTPFILEDESC*>* list_rtpfiles, RTPFILEDESC* paramer, unsigned int starttime, unsigned int endtime);
|
|
|
+ void Is_LastSame_Times(std::list<RTPFILEDESC*>* list_rtpfiles, RTPFILEDESC* paramer, unsigned int starttime, unsigned int endtime);
|
|
|
+ void Is_Same_Times(std::list<RTPFILEDESC*>* list_rtpfiles, RTPFILEDESC* paramer,unsigned int starttime, unsigned int endtime,bool &check_last,bool &check_next);
|
|
|
void Delete_file(std::string filename);
|
|
|
+ void Check_Channels(std::string src,std::string backup);
|
|
|
BOOL SHDeleteFolder(std::string pstrFolder, BOOL bAllowUndo);
|
|
|
int Get_Date_List(std::vector<char*>* pVecFolderName, char* folder_name);
|
|
|
void Get_DateFiles(std::vector<char*>* vec_foldernames, const char* src_folder);
|
|
|
int Identical_file_check();
|
|
|
bool LoadDeviceInfo();
|
|
|
void Get_Channels(const char* backup_folder, const char* src_folder);
|
|
|
- void Get_Channel(std::vector<char*>* vec_foldernames, const char* src_folder);
|
|
|
- int Get_Channel_List(std::vector<char*>* pVecFolderName, char* folder_name);
|
|
|
+ void Get_Folder(std::vector<char*>* vec_foldernames, const char* src_folder);
|
|
|
+ int Get_Folder_List(std::vector<char*>* pVecFolderName, char* folder_name);
|
|
|
void init();
|
|
|
// find src_folder all *.rtp within [start_time, end_time] to dst_folder with the same file structure
|
|
|
int Get_List_File(const char* backup_folder, const char* src_folder);
|
|
|
@@ -108,5 +126,10 @@ public:
|
|
|
int rtp_listfile(std::list<RTPFILEDESC*>* list_rtpfiles, const char* src_folder);
|
|
|
|
|
|
int Get_Disk_Free(std::string serial);
|
|
|
+ //
|
|
|
+ void Get_Rtp_Times(std::list<RTPFILEDESC*>* list_rtpfiles, TIME_SPAN &time_span);
|
|
|
+ void File_Sort(std::list<RTPFILEDESC*>* src_rtpfiles, std::list<RTPFILEDESC*>* dst_rtpfiles);
|
|
|
+ void Folder_Sort(std::vector<char*>* src_folder, std::vector<char*>* dst_folder);
|
|
|
+ std::string get_filename_time(std::string src);
|
|
|
};
|
|
|
|