Commit c3d0b30dc55d3e3951ed369ab6cefc0717555295

Authored by Hu Chunming
1 parent 0b2e2301

代码优化,未做逻辑修改

vehicle_structure_platform.git0708-3080-trt-face/src/VPT/MutliSourceVideoProcess.cpp
@@ -132,7 +132,15 @@ static long long get_cur_time_ms(){ @@ -132,7 +132,15 @@ static long long get_cur_time_ms(){
132 std::function<void(DxGPUFrame&)> show_gpu_img_func = show_gpu_image_; 132 std::function<void(DxGPUFrame&)> show_gpu_img_func = show_gpu_image_;
133 133
134 void check_thread(void* handle); 134 void check_thread(void* handle);
135 -DWORD ThreadProcess(LPVOID param); 135 +
  136 +static void algorthim_process_thread(void* arg) {
  137 + CMutliSourceVideoProcess* _this=(CMutliSourceVideoProcess*)arg;
  138 + if(_this != nullptr){
  139 + _this->algorthim_process();
  140 + } else {
  141 + LOG_ERROR("算法处理线程启动失败 !");
  142 + }
  143 +}
136 144
137 145
138 //std::ofstream g_os("./cudaMem.txt", std::ofstream::out | std::ofstream::trunc); 146 //std::ofstream g_os("./cudaMem.txt", std::ofstream::out | std::ofstream::trunc);
@@ -140,57 +148,6 @@ CMutliSourceVideoProcess::CMutliSourceVideoProcess() @@ -140,57 +148,6 @@ CMutliSourceVideoProcess::CMutliSourceVideoProcess()
140 { 148 {
141 } 149 }
142 150
143 -// dump�ļ�  
144 -//static LONG WINAPI CustomExceptionCrashHandler(_In_ EXCEPTION_POINTERS *CONST pException)  
145 -//{  
146 -// char dumpPath[MAX_PATH];  
147 -//  
148 -// BOOL tempDump = FALSE;  
149 -// do {  
150 -//  
151 -// if (0 == GetTempPath(_countof(dumpPath), dumpPath))  
152 -// break;  
153 -//  
154 -// // %temp%Ŀ¼���½�dump�ļ���  
155 -// if (!PathAppend(dumpPath, "dump"))  
156 -// break;  
157 -// CreateDirectory(dumpPath, NULL);  
158 -// // dump�ļ�����dump�ļ��ļ��� ���Զ����޸�  
159 -// if (!PathAppend(dumpPath, "HSTProcessor"))  
160 -// break;  
161 -//  
162 -// SYSTEMTIME lclTm;  
163 -// GetLocalTime(&lclTm);  
164 -// char ext[29];  
165 -// // dump�ļ�������ʱ����  
166 -// if (FAILED(StringCchPrintf(ext, _countof(ext), ".%04hu%02hu%02hu%02hu%02hu%02hu.unhdlexc.dmp", lclTm.wYear, lclTm.wMonth, lclTm.wDay, lclTm.wHour, lclTm.wMinute, lclTm.wSecond)))  
167 -// break;  
168 -// if (FAILED(StringCchCat(dumpPath, _countof(dumpPath), ext)))  
169 -// break;  
170 -//  
171 -// tempDump = TRUE;  
172 -// } while (FALSE);  
173 -// HANDLE CONST dumpFile = CreateFile(dumpPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);  
174 -// if (INVALID_HANDLE_VALUE == dumpPath)  
175 -// {  
176 -// return EXCEPTION_EXECUTE_HANDLER;  
177 -// }  
178 -//  
179 -// MINIDUMP_EXCEPTION_INFORMATION dumpInfo;  
180 -// dumpInfo.ThreadId = GetCurrentThreadId();  
181 -// dumpInfo.ExceptionPointers = pException;  
182 -// dumpInfo.ClientPointers = TRUE;  
183 -//  
184 -// if (FAILED(MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), dumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL)))  
185 -// {  
186 -// CloseHandle(dumpFile);  
187 -// }  
188 -// CloseHandle(dumpFile);  
189 -//  
190 -// return EXCEPTION_EXECUTE_HANDLER;  
191 -//}  
192 -  
193 -  
194 CMutliSourceVideoProcess::~CMutliSourceVideoProcess() 151 CMutliSourceVideoProcess::~CMutliSourceVideoProcess()
195 { 152 {
196 //��־����ʼ�� 153 //��־����ʼ��
@@ -345,7 +302,7 @@ int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_IN @@ -345,7 +302,7 @@ int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_IN
345 m_face_det_config = vptParam.face_det_config; 302 m_face_det_config = vptParam.face_det_config;
346 303
347 m_snaphot_helper.snapshot_helper_init(vptParam.gpuid, gpu_total_memory, vptParam.vrdbpath, vptParam.auth_license, vptParam.wait_framecount, m_hp_analysis_config, \ 304 m_snaphot_helper.snapshot_helper_init(vptParam.gpuid, gpu_total_memory, vptParam.vrdbpath, vptParam.auth_license, vptParam.wait_framecount, m_hp_analysis_config, \
348 - m_hcp_analysis_config, m_vehicle_analysis_config, m_vehicle_recg_config, m_vehicle_plate_det_recg_config, m_hf_recg_config, m_hcf_recg_config, m_vcf_recg_config); 305 + m_hcp_analysis_config, m_vehicle_analysis_config, m_vehicle_recg_config, m_vehicle_plate_det_recg_config, m_hf_recg_config, m_hcf_recg_config, m_vcf_recg_config, m_face_det_config);
349 if (ret == SUCCESS) //�ɹ� 306 if (ret == SUCCESS) //�ɹ�
350 { 307 {
351 licence_status = 0; 308 licence_status = 0;
@@ -634,12 +591,13 @@ bool CMutliSourceVideoProcess::AddTask(task_param tparam) //debug by zsh @@ -634,12 +591,13 @@ bool CMutliSourceVideoProcess::AddTask(task_param tparam) //debug by zsh
634 591
635 if (!ProcessFlag) { 592 if (!ProcessFlag) {
636 m_bProcessExit = false; 593 m_bProcessExit = false;
637 - ProcessThread = std::thread(ThreadProcess, this); 594 + ProcessThread = std::thread(algorthim_process_thread, this);
638 ProcessFlag = true; 595 ProcessFlag = true;
639 } 596 }
640 -  
641 - printf("-----------------------add task: %d-----------------------\n", tasks.size() - 1); 597 +
642 AddTaskSucFlag = 1; 598 AddTaskSucFlag = 1;
  599 +
  600 + LOG_INFO("add task: {}", new_task.taskID);
643 return true; 601 return true;
644 } 602 }
645 603
@@ -766,61 +724,6 @@ void CMutliSourceVideoProcess::OperatorTask() @@ -766,61 +724,6 @@ void CMutliSourceVideoProcess::OperatorTask()
766 } 724 }
767 } 725 }
768 726
769 -  
770 -int CMutliSourceVideoProcess::SaveResultInFile(const OBJ_KEY & obj_key, const OBJ_VALUE & obj_value)  
771 -{  
772 - if (0 == obj_value.index.index && obj_value.snapShotLittle.width == HP_WIDTH && obj_value.snapShotLittle.height == HP_HEIGHT)  
773 - {  
774 - if (m_face_det_config == SY_CONFIG_OPEN)  
775 - {  
776 - m_snaphot_helper.save_face_snapshot(obj_key);  
777 - }  
778 -  
779 - if (m_hp_analysis_config == SY_CONFIG_OPEN || m_hf_recg_config == SY_CONFIG_OPEN)  
780 - {  
781 - m_snaphot_helper.save_snapshot(obj_key);  
782 - m_snaphot_helper.hp_analysis(obj_key);  
783 - }  
784 - else  
785 - {  
786 - m_snaphot_helper.save_without_analysis(obj_key);  
787 - }  
788 - }  
789 - else if ((1 == obj_value.index.index || 2 == obj_value.index.index) && obj_value.snapShotLittle.width == HCP_WIDTH && obj_value.snapShotLittle.height == HCP_HEIGHT)  
790 - {  
791 - if (m_hcp_analysis_config == SY_CONFIG_OPEN || m_hcf_recg_config == SY_CONFIG_OPEN)  
792 - {  
793 - m_snaphot_helper.save_snapshot(obj_key);  
794 - m_snaphot_helper.hcp_analysis(obj_key);  
795 - }  
796 - else  
797 - {  
798 - m_snaphot_helper.save_without_analysis(obj_key);  
799 - }  
800 - }  
801 - else if ((8 == obj_value.index.index || (obj_value.index.index >= 4 && obj_value.index.index <= 6)) && obj_value.snapShotLittle.width == VEHICLE_WIDTH && obj_value.snapShotLittle.height == VEHICLE_HEIGHT)  
802 - {  
803 - //VEHICLEAnalysis(obj_key, obj_value);  
804 - if (m_vehicle_analysis_config == SY_CONFIG_OPEN || m_vcf_recg_config == SY_CONFIG_OPEN)  
805 - {  
806 - m_snaphot_helper.save_snapshot(obj_key);  
807 - m_snaphot_helper.vehicle_analysis(obj_key);  
808 - }  
809 - else  
810 - {  
811 - m_snaphot_helper.save_without_analysis(obj_key);  
812 - }  
813 -  
814 - }  
815 - else  
816 - {  
817 - m_snaphot_helper.save_without_analysis(obj_key);  
818 - }  
819 -  
820 - return 0;  
821 -}  
822 -  
823 -  
824 //#define LOG_INFO 727 //#define LOG_INFO
825 void CMutliSourceVideoProcess::callTaskObjInfoCallbackFunc(int objCount, VPT_ObjInfo *obj, int taskFrameCount, int taskId) 728 void CMutliSourceVideoProcess::callTaskObjInfoCallbackFunc(int objCount, VPT_ObjInfo *obj, int taskFrameCount, int taskId)
826 { 729 {
@@ -866,7 +769,7 @@ void CMutliSourceVideoProcess::callTaskObjInfoCallbackFunc(int objCount, VPT_Obj @@ -866,7 +769,7 @@ void CMutliSourceVideoProcess::callTaskObjInfoCallbackFunc(int objCount, VPT_Obj
866 769
867 } 770 }
868 } 771 }
869 -DWORD ThreadProcess(LPVOID param) 772 +void CMutliSourceVideoProcess::algorthim_process()
870 { 773 {
871 set<int> k; 774 set<int> k;
872 int count = 0; 775 int count = 0;
@@ -874,12 +777,10 @@ DWORD ThreadProcess(LPVOID param) @@ -874,12 +777,10 @@ DWORD ThreadProcess(LPVOID param)
874 777
875 DxGPUFrame frame = {}; 778 DxGPUFrame frame = {};
876 779
877 - CMutliSourceVideoProcess *pThreadParam = (CMutliSourceVideoProcess *)param;  
878 -  
879 - cudaSetDevice(pThreadParam->mgpuid); 780 + cudaSetDevice(mgpuid);
880 781
881 CUdevice cuDevice; 782 CUdevice cuDevice;
882 - cuDeviceGet(&cuDevice, pThreadParam->mgpuid); 783 + cuDeviceGet(&cuDevice, mgpuid);
883 CUcontext context; 784 CUcontext context;
884 cuCtxCreate(&context, 0, cuDevice); 785 cuCtxCreate(&context, 0, cuDevice);
885 cuCtxPushCurrent(context); 786 cuCtxPushCurrent(context);
@@ -892,9 +793,9 @@ DWORD ThreadProcess(LPVOID param) @@ -892,9 +793,9 @@ DWORD ThreadProcess(LPVOID param)
892 long long last_time = get_cur_time_ms(); 793 long long last_time = get_cur_time_ms();
893 794
894 { 795 {
895 - while (!pThreadParam->m_bProcessExit) 796 + while (!m_bProcessExit)
896 { 797 {
897 - if (pThreadParam->licence_status <= -3) 798 + if (licence_status <= -3)
898 { 799 {
899 printf("authority failed!\n"); 800 printf("authority failed!\n");
900 break; 801 break;
@@ -902,24 +803,23 @@ DWORD ThreadProcess(LPVOID param) @@ -902,24 +803,23 @@ DWORD ThreadProcess(LPVOID param)
902 803
903 double time_val, time_val_p = 0; 804 double time_val, time_val_p = 0;
904 { 805 {
905 - std::lock_guard<std::mutex> l(pThreadParam->taskMutex);  
906 - pThreadParam->OperatorTask(); 806 + std::lock_guard<std::mutex> l(taskMutex);
  807 + OperatorTask();
907 } 808 }
908 - pThreadParam->taskCondVar.notify_all(); 809 + taskCondVar.notify_all();
909 810
910 - int curTaskSize = pThreadParam->tasks.size(); 811 + int curTaskSize = tasks.size();
911 812
912 count = 0; 813 count = 0;
913 static int ncount = 0; 814 static int ncount = 0;
914 map<int, vector<int>> finishTaskDeleteObj; 815 map<int, vector<int>> finishTaskDeleteObj;
915 int curPlayTaskCount = 0; 816 int curPlayTaskCount = 0;
916 817
917 - //�жϵ�ǰPLAY����Ľ���״̬��������ڽ����쳣��·������������·����  
918 for (int i = 0; i < curTaskSize; i++) 818 for (int i = 0; i < curTaskSize; i++)
919 { 819 {
920 - if ((pThreadParam->tasks[i].taskState == PLAY || pThreadParam->tasks[i].taskState == DECODEERROR)) 820 + if ((tasks[i].taskState == PLAY || tasks[i].taskState == DECODEERROR))
921 { 821 {
922 - if (!pThreadParam->tasks[i].taskTcuvid->DxDecoderIsRun()) 822 + if (!tasks[i].taskTcuvid->DxDecoderIsRun())
923 { 823 {
924 cudaError_t cudaStatus = cudaGetLastError(); 824 cudaError_t cudaStatus = cudaGetLastError();
925 if (cudaStatus != cudaSuccess) { 825 if (cudaStatus != cudaSuccess) {
@@ -927,18 +827,18 @@ DWORD ThreadProcess(LPVOID param) @@ -927,18 +827,18 @@ DWORD ThreadProcess(LPVOID param)
927 } 827 }
928 828
929 cout << "***************** Task " << i << " is Finished *****************" << endl; 829 cout << "***************** Task " << i << " is Finished *****************" << endl;
930 - pThreadParam->tasks[i].taskState = FINISH; 830 + tasks[i].taskState = FINISH;
931 831
932 - pThreadParam->FinishTask(pThreadParam->tasks[i].taskID); 832 + FinishTask(tasks[i].taskID);
933 833
934 - pThreadParam->tasks[i].taskTcuvid->DxCloseDecoder();  
935 - delete pThreadParam->tasks[i].taskTcuvid;  
936 - pThreadParam->tasks[i].taskTcuvid = NULL;  
937 - int taskid = pThreadParam->tasks[i].taskID; 834 + tasks[i].taskTcuvid->DxCloseDecoder();
  835 + delete tasks[i].taskTcuvid;
  836 + tasks[i].taskTcuvid = NULL;
  837 + int taskid = tasks[i].taskID;
938 838
939 //ѭ���ȴ� ֱ��finished_analysis_ss_info�����и�·Ŀ�궼�Ѿ����ظ��û����ſ��������������� 839 //ѭ���ȴ� ֱ��finished_analysis_ss_info�����и�·Ŀ�궼�Ѿ����ظ��û����ſ���������������
940 - std::unique_lock<std::mutex> lock(pThreadParam->m_snaphot_helper.analysisThreadMutex);  
941 - while (std::find_if(pThreadParam->m_snaphot_helper.finished_analysis_ss_info.begin(), pThreadParam->m_snaphot_helper.finished_analysis_ss_info.end(), [&taskid](const std::pair<OBJ_KEY, video_object_snapshot> & item) ->bool { 840 + std::unique_lock<std::mutex> lock(m_snaphot_helper.analysisThreadMutex);
  841 + while (std::find_if(m_snaphot_helper.finished_analysis_ss_info.begin(), m_snaphot_helper.finished_analysis_ss_info.end(), [&taskid](const std::pair<OBJ_KEY, video_object_snapshot> & item) ->bool {
942 if (item.first.videoID == taskid) 842 if (item.first.videoID == taskid)
943 { 843 {
944 return true; 844 return true;
@@ -948,7 +848,7 @@ DWORD ThreadProcess(LPVOID param) @@ -948,7 +848,7 @@ DWORD ThreadProcess(LPVOID param)
948 return false; 848 return false;
949 } 849 }
950 850
951 - }) != pThreadParam->m_snaphot_helper.finished_analysis_ss_info.end()) 851 + }) != m_snaphot_helper.finished_analysis_ss_info.end())
952 { 852 {
953 lock.unlock(); 853 lock.unlock();
954 std::this_thread::yield(); 854 std::this_thread::yield();
@@ -957,27 +857,27 @@ DWORD ThreadProcess(LPVOID param) @@ -957,27 +857,27 @@ DWORD ThreadProcess(LPVOID param)
957 } 857 }
958 858
959 //�ص�֪ͨ�û� ��·����������� 859 //�ص�֪ͨ�û� ��·�����������
960 - if (pThreadParam->taskFinishCallbackFunc != nullptr) 860 + if (taskFinishCallbackFunc != nullptr)
961 { 861 {
962 - std::lock_guard<std::mutex> l(pThreadParam->m_snaphot_helper.callback_tx);  
963 - pThreadParam->taskFinishCallbackFunc(pThreadParam->tasks[i].taskID); 862 + std::lock_guard<std::mutex> l(m_snaphot_helper.callback_tx);
  863 + taskFinishCallbackFunc(tasks[i].taskID);
964 } 864 }
965 865
966 - pThreadParam->TaskinPlay--; 866 + TaskinPlay--;
967 } 867 }
968 } 868 }
969 869
970 - if (pThreadParam->tasks[i].taskState == FINISH) 870 + if (tasks[i].taskState == FINISH)
971 count++; 871 count++;
972 } 872 }
973 873
974 //�������������FINISH״̬ 874 //�������������FINISH״̬
975 - if (count >= pThreadParam->tasks.size()) //have no decode video, break 875 + if (count >= tasks.size()) //have no decode video, break
976 { 876 {
977 { 877 {
978 - std::lock_guard<std::mutex> l(pThreadParam->taskMutex); 878 + std::lock_guard<std::mutex> l(taskMutex);
979 //�ж���������ȴ������Ƿ����µ��������� 879 //�ж���������ȴ������Ƿ����µ���������
980 - if (pThreadParam->HasNewTask()) 880 + if (HasNewTask())
981 { 881 {
982 continue; 882 continue;
983 } 883 }
@@ -991,38 +891,38 @@ DWORD ThreadProcess(LPVOID param) @@ -991,38 +891,38 @@ DWORD ThreadProcess(LPVOID param)
991 //continue; 891 //continue;
992 892
993 //printf("0708\n"); 893 //printf("0708\n");
994 - //pThreadParam->ProcessFlag = false; 894 + //ProcessFlag = false;
995 break; 895 break;
996 } 896 }
997 } 897 }
998 } 898 }
999 899
1000 //��ǰû��PLAY������ ѭ���ȴ� 900 //��ǰû��PLAY������ ѭ���ȴ�
1001 - curPlayTaskCount = pThreadParam->TaskinPlay; 901 + curPlayTaskCount = TaskinPlay;
1002 if (curPlayTaskCount <= 0) { 902 if (curPlayTaskCount <= 0) {
1003 Sleep(30); 903 Sleep(30);
1004 continue; 904 continue;
1005 } 905 }
1006 906
1007 k.clear(); 907 k.clear();
1008 - pThreadParam->TaskinPlayID.clear(); 908 + TaskinPlayID.clear();
1009 909
1010 //��ȡ�������� 910 //��ȡ��������
1011 getdata_flag: 911 getdata_flag:
1012 for (int i = 0; i < curTaskSize; i++) 912 for (int i = 0; i < curTaskSize; i++)
1013 { 913 {
1014 - if (k.find(i) == k.end() && pThreadParam->tasks[i].taskState == PLAY && pThreadParam->tasks[i].taskTcuvid->DxDecoderIsRun()) 914 + if (k.find(i) == k.end() && tasks[i].taskState == PLAY && tasks[i].taskTcuvid->DxDecoderIsRun())
1015 { 915 {
1016 - if(pThreadParam->tasks[i].taskTcuvid->DxLockFrame(&pThreadParam->tasks[i].task_algorithm_data) == 0) { 916 + if(tasks[i].taskTcuvid->DxLockFrame(&tasks[i].task_algorithm_data) == 0) {
1017 k.insert(i); 917 k.insert(i);
1018 - pThreadParam->TaskinPlayID.insert(pThreadParam->tasks[i].taskID); 918 + TaskinPlayID.insert(tasks[i].taskID);
1019 } 919 }
1020 } 920 }
1021 - else if (k.find(i) == k.end() && pThreadParam->tasks[i].taskState == PLAY && !pThreadParam->tasks[i].taskTcuvid->DxDecoderIsRun()) 921 + else if (k.find(i) == k.end() && tasks[i].taskState == PLAY && !tasks[i].taskTcuvid->DxDecoderIsRun())
1022 { 922 {
1023 - pThreadParam->tasks[i].taskState = DECODEERROR; 923 + tasks[i].taskState = DECODEERROR;
1024 curPlayTaskCount--; 924 curPlayTaskCount--;
1025 - FinishTaskTracker(pThreadParam->VPT_Handle, pThreadParam->tasks[i].taskID); 925 + FinishTaskTracker(VPT_Handle, tasks[i].taskID);
1026 } 926 }
1027 } 927 }
1028 928
@@ -1053,19 +953,19 @@ DWORD ThreadProcess(LPVOID param) @@ -1053,19 +953,19 @@ DWORD ThreadProcess(LPVOID param)
1053 ///////////////////////////////////////////////////////////// 953 /////////////////////////////////////////////////////////////
1054 954
1055 vector<vector<int>> deleteObjectID; 955 vector<vector<int>> deleteObjectID;
1056 - set<int>::iterator iter = pThreadParam->TaskinPlayID.begin(); 956 + set<int>::iterator iter = TaskinPlayID.begin();
1057 957
1058 int cur_batch_size = 0; 958 int cur_batch_size = 0;
1059 - cur_batch_size = pThreadParam->section_batch_size; 959 + cur_batch_size = section_batch_size;
1060 960
1061 if (0) 961 if (0)
1062 { 962 {
1063 - if (pThreadParam->section_batch_size == 20)  
1064 - cur_batch_size = pThreadParam->section_batch_size; 963 + if (section_batch_size == 20)
  964 + cur_batch_size = section_batch_size;
1065 else 965 else
1066 { 966 {
1067 - if (curPlayTaskCount <= 2 * pThreadParam->section_batch_size)  
1068 - cur_batch_size = pThreadParam->section_batch_size; 967 + if (curPlayTaskCount <= 2 * section_batch_size)
  968 + cur_batch_size = section_batch_size;
1069 else if (curPlayTaskCount >= 2 * MAX_BATCH) 969 else if (curPlayTaskCount >= 2 * MAX_BATCH)
1070 cur_batch_size = MAX_BATCH; 970 cur_batch_size = MAX_BATCH;
1071 else 971 else
@@ -1077,7 +977,7 @@ DWORD ThreadProcess(LPVOID param) @@ -1077,7 +977,7 @@ DWORD ThreadProcess(LPVOID param)
1077 977
1078 vector<vector<VPT_Result>> unUsedResult; 978 vector<vector<VPT_Result>> unUsedResult;
1079 vector<unsigned long long> vec_frameIndex; 979 vector<unsigned long long> vec_frameIndex;
1080 - unUsedResult.resize(pThreadParam->VPTResult.size()); 980 + unUsedResult.resize(VPTResult.size());
1081 int cycleTimes = curPlayTaskCount / cur_batch_size + (curPlayTaskCount % cur_batch_size == 0 ? 0 : 1); 981 int cycleTimes = curPlayTaskCount / cur_batch_size + (curPlayTaskCount % cur_batch_size == 0 ? 0 : 1);
1082 for (int c = 0; c < cycleTimes; c++) 982 for (int c = 0; c < cycleTimes; c++)
1083 { 983 {
@@ -1087,7 +987,7 @@ DWORD ThreadProcess(LPVOID param) @@ -1087,7 +987,7 @@ DWORD ThreadProcess(LPVOID param)
1087 vec_frameIndex.clear(); 987 vec_frameIndex.clear();
1088 for (int i = 0; i < batchsize; i++) 988 for (int i = 0; i < batchsize; i++)
1089 { 989 {
1090 - DxGPUFrame task_algorithm_data = pThreadParam->tasks[*iter].task_algorithm_data; 990 + DxGPUFrame task_algorithm_data = tasks[*iter].task_algorithm_data;
1091 int w = task_algorithm_data.width; 991 int w = task_algorithm_data.width;
1092 int h = task_algorithm_data.height; 992 int h = task_algorithm_data.height;
1093 int npitch = task_algorithm_data.size; 993 int npitch = task_algorithm_data.size;
@@ -1099,7 +999,7 @@ DWORD ThreadProcess(LPVOID param) @@ -1099,7 +999,7 @@ DWORD ThreadProcess(LPVOID param)
1099 999
1100 vector<vector<int>> tempDeleteObjectID; 1000 vector<vector<int>> tempDeleteObjectID;
1101 tempDeleteObjectID.resize(batchsize); 1001 tempDeleteObjectID.resize(batchsize);
1102 - int flag = VPT_Process_GPU(pThreadParam->GetVPT_Handle(), batch_img, startbatch, batchsize, vec_frameIndex, pThreadParam->VPTResult, tempDeleteObjectID, unUsedResult); 1002 + int flag = VPT_Process_GPU(GetVPT_Handle(), batch_img, startbatch, batchsize, vec_frameIndex, VPTResult, tempDeleteObjectID, unUsedResult);
1103 process_times++ ; 1003 process_times++ ;
1104 1004
1105 for (auto iter : tempDeleteObjectID) 1005 for (auto iter : tempDeleteObjectID)
@@ -1114,89 +1014,89 @@ DWORD ThreadProcess(LPVOID param) @@ -1114,89 +1014,89 @@ DWORD ThreadProcess(LPVOID param)
1114 1014
1115 long long result_analysis_time = get_cur_time_ms(); 1015 long long result_analysis_time = get_cur_time_ms();
1116 1016
1117 - iter = pThreadParam->TaskinPlayID.begin(); 1017 + iter = TaskinPlayID.begin();
1118 for (int i = 0; i < curPlayTaskCount; i++) 1018 for (int i = 0; i < curPlayTaskCount; i++)
1119 { 1019 {
1120 - pThreadParam->tasks[*iter].taskFrameCount = pThreadParam->tasks[*iter].task_algorithm_data.timestamp; 1020 + tasks[*iter].taskFrameCount = tasks[*iter].task_algorithm_data.timestamp;
1121 //若该路任务当前帧未检测到目标,返回ID为-1的目标表明未检测到目标 1021 //若该路任务当前帧未检测到目标,返回ID为-1的目标表明未检测到目标
1122 - if (pThreadParam->VPTResult[i].objCount == 0) 1022 + if (VPTResult[i].objCount == 0)
1123 { 1023 {
1124 - pThreadParam->callTaskObjInfoCallbackFunc(0, nullptr, pThreadParam->tasks[*iter].taskFrameCount, *iter); 1024 + callTaskObjInfoCallbackFunc(0, nullptr, tasks[*iter].taskFrameCount, *iter);
1125 } 1025 }
1126 1026
1127 //实时查看模块,若存在实时查看,把当前视频画面cp回内存 1027 //实时查看模块,若存在实时查看,把当前视频画面cp回内存
1128 bool view = false; 1028 bool view = false;
1129 - int frameHeight = pThreadParam->tasks[*iter].task_algorithm_data.height;  
1130 - int frameWidth = pThreadParam->tasks[*iter].task_algorithm_data.width; 1029 + int frameHeight = tasks[*iter].task_algorithm_data.height;
  1030 + int frameWidth = tasks[*iter].task_algorithm_data.width;
1131 1031
1132 - if (*iter == pThreadParam->viewTaskID) 1032 + if (*iter == viewTaskID)
1133 { 1033 {
1134 - cudaMemcpy(pThreadParam->tasks[*iter].frameImage.data, pThreadParam->tasks[*iter].task_algorithm_data.frame, 3 * pThreadParam->tasks[*iter].task_algorithm_data.width * pThreadParam->tasks[*iter].task_algorithm_data.height * sizeof(unsigned char), cudaMemcpyDeviceToHost); 1034 + cudaMemcpy(tasks[*iter].frameImage.data, tasks[*iter].task_algorithm_data.frame, 3 * tasks[*iter].task_algorithm_data.width * tasks[*iter].task_algorithm_data.height * sizeof(unsigned char), cudaMemcpyDeviceToHost);
1135 view = true; 1035 view = true;
1136 } 1036 }
1137 1037
1138 //跟踪帧也需要返回跟踪的结果 1038 //跟踪帧也需要返回跟踪的结果
1139 - if (pThreadParam->tasks[*iter].taskLastFrameCount > 0) 1039 + if (tasks[*iter].taskLastFrameCount > 0)
1140 { 1040 {
1141 vector<VPT_Result> OneUnUsedResult = unUsedResult[i]; 1041 vector<VPT_Result> OneUnUsedResult = unUsedResult[i];
1142 if (OneUnUsedResult.size() == 0) 1042 if (OneUnUsedResult.size() == 0)
1143 { 1043 {
1144 - pThreadParam->callTaskObjInfoCallbackFunc(0, nullptr, pThreadParam->tasks[*iter].taskLastFrameCount + 1, *iter); 1044 + callTaskObjInfoCallbackFunc(0, nullptr, tasks[*iter].taskLastFrameCount + 1, *iter);
1145 } 1045 }
1146 for (int k = 0; k < OneUnUsedResult.size(); ++k) 1046 for (int k = 0; k < OneUnUsedResult.size(); ++k)
1147 { 1047 {
1148 if (OneUnUsedResult[k].objCount == 0) 1048 if (OneUnUsedResult[k].objCount == 0)
1149 { 1049 {
1150 - pThreadParam->callTaskObjInfoCallbackFunc(0, nullptr, pThreadParam->tasks[*iter].taskLastFrameCount + k + 1, *iter); 1050 + callTaskObjInfoCallbackFunc(0, nullptr, tasks[*iter].taskLastFrameCount + k + 1, *iter);
1151 } 1051 }
1152 else 1052 else
1153 { 1053 {
1154 //cout << "OneUnUsedResult.size = " << OneUnUsedResult.size() << " k=" << k << " OneUnUsedResult[k].objCount = " << OneUnUsedResult[k].objCount << endl; 1054 //cout << "OneUnUsedResult.size = " << OneUnUsedResult.size() << " k=" << k << " OneUnUsedResult[k].objCount = " << OneUnUsedResult[k].objCount << endl;
1155 - pThreadParam->callTaskObjInfoCallbackFunc(OneUnUsedResult[k].objCount, OneUnUsedResult[k].obj, pThreadParam->tasks[*iter].taskLastFrameCount + k + 1, *iter); 1055 + callTaskObjInfoCallbackFunc(OneUnUsedResult[k].objCount, OneUnUsedResult[k].obj, tasks[*iter].taskLastFrameCount + k + 1, *iter);
1156 } 1056 }
1157 } 1057 }
1158 } 1058 }
1159 - pThreadParam->tasks[*iter].taskLastFrameCount = pThreadParam->tasks[*iter].taskFrameCount; 1059 + tasks[*iter].taskLastFrameCount = tasks[*iter].taskFrameCount;
1160 1060
1161 - unsigned char* snapshot_image_data[MAX_OBJ_COUNT]{};// = new unsigned char*[pThreadParam->VPTResult[i].objCount];  
1162 - int snapshot_left[MAX_OBJ_COUNT]{};// = new int[pThreadParam->VPTResult[i].objCount];  
1163 - int snapshot_right[MAX_OBJ_COUNT]{};// = new int[pThreadParam->VPTResult[i].objCount];  
1164 - int snapshot_top[MAX_OBJ_COUNT]{};// = new int[pThreadParam->VPTResult[i].objCount];  
1165 - int snapshot_bottom[MAX_OBJ_COUNT]{};// = new int[pThreadParam->VPTResult[i].objCount];  
1166 - int snapshot_dst_width[MAX_OBJ_COUNT]{};// = new int[pThreadParam->VPTResult[i].objCount];  
1167 - int snapshot_dst_height[MAX_OBJ_COUNT]{};// = new int[pThreadParam->VPTResult[i].objCount]; 1061 + unsigned char* snapshot_image_data[MAX_OBJ_COUNT]{};// = new unsigned char*[VPTResult[i].objCount];
  1062 + int snapshot_left[MAX_OBJ_COUNT]{};// = new int[VPTResult[i].objCount];
  1063 + int snapshot_right[MAX_OBJ_COUNT]{};// = new int[VPTResult[i].objCount];
  1064 + int snapshot_top[MAX_OBJ_COUNT]{};// = new int[VPTResult[i].objCount];
  1065 + int snapshot_bottom[MAX_OBJ_COUNT]{};// = new int[VPTResult[i].objCount];
  1066 + int snapshot_dst_width[MAX_OBJ_COUNT]{};// = new int[VPTResult[i].objCount];
  1067 + int snapshot_dst_height[MAX_OBJ_COUNT]{};// = new int[VPTResult[i].objCount];
1168 1068
1169 int copy_obj_count = 0; //用于记录该路有多少个目标需要进行显存图像的更新 1069 int copy_obj_count = 0; //用于记录该路有多少个目标需要进行显存图像的更新
1170 vector<int> human_idx; //用于记录快照数组中那些是人脸 1070 vector<int> human_idx; //用于记录快照数组中那些是人脸
1171 vector<OBJ_KEY> human_obj_keys; 1071 vector<OBJ_KEY> human_obj_keys;
1172 1072
1173 - pThreadParam->callTaskObjInfoCallbackFunc(pThreadParam->VPTResult[i].objCount, pThreadParam->VPTResult[i].obj, pThreadParam->tasks[*iter].taskFrameCount, *iter);  
1174 - for (int c = 0; c < pThreadParam->VPTResult[i].objCount; c++) 1073 + callTaskObjInfoCallbackFunc(VPTResult[i].objCount, VPTResult[i].obj, tasks[*iter].taskFrameCount, *iter);
  1074 + for (int c = 0; c < VPTResult[i].objCount; c++)
1175 { 1075 {
1176 - OBJ_KEY newObj = { (*iter), pThreadParam->VPTResult[i].obj[c].id }; 1076 + OBJ_KEY newObj = { (*iter), VPTResult[i].obj[c].id };
1177 1077
1178 int index = 0; 1078 int index = 0;
1179 - if (pThreadParam->m_snaphot_helper.snapShotInfo.find(newObj) == pThreadParam->m_snaphot_helper.snapShotInfo.end())  
1180 - index = pThreadParam->VPTResult[i].obj[c].index; 1079 + if (m_snaphot_helper.snapShotInfo.find(newObj) == m_snaphot_helper.snapShotInfo.end())
  1080 + index = VPTResult[i].obj[c].index;
1181 else 1081 else
1182 - index = pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index; 1082 + index = m_snaphot_helper.snapShotInfo[newObj].index.index;
1183 1083
1184 //实时查看模块 绘制目标框到画面上 1084 //实时查看模块 绘制目标框到画面上
1185 if (view) 1085 if (view)
1186 { 1086 {
1187 //cout << "---- vew ---- "; 1087 //cout << "---- vew ---- ";
1188 - int p1 = pThreadParam->VPTResult[i].obj[c].left - 10 > 0 ? pThreadParam->VPTResult[i].obj[c].left - 10 : 0;  
1189 - int p2 = pThreadParam->VPTResult[i].obj[c].top - 15 > 0 ? pThreadParam->VPTResult[i].obj[c].top - 15 : 0; 1088 + int p1 = VPTResult[i].obj[c].left - 10 > 0 ? VPTResult[i].obj[c].left - 10 : 0;
  1089 + int p2 = VPTResult[i].obj[c].top - 15 > 0 ? VPTResult[i].obj[c].top - 15 : 0;
1190 1090
1191 - cv::rectangle(pThreadParam->tasks[*iter].frameImage, Rect(pThreadParam->VPTResult[i].obj[c].left, pThreadParam->VPTResult[i].obj[c].top,  
1192 - pThreadParam->VPTResult[i].obj[c].right - pThreadParam->VPTResult[i].obj[c].left,  
1193 - pThreadParam->VPTResult[i].obj[c].bottom - pThreadParam->VPTResult[i].obj[c].top), Scalar(158, 52, 254), 3, 1, 0); 1091 + cv::rectangle(tasks[*iter].frameImage, Rect(VPTResult[i].obj[c].left, VPTResult[i].obj[c].top,
  1092 + VPTResult[i].obj[c].right - VPTResult[i].obj[c].left,
  1093 + VPTResult[i].obj[c].bottom - VPTResult[i].obj[c].top), Scalar(158, 52, 254), 3, 1, 0);
1194 #ifdef _MSC_VER 1094 #ifdef _MSC_VER
1195 string resss = "" + to_string(index) + " " + ObjTypes[index]; 1095 string resss = "" + to_string(index) + " " + ObjTypes[index];
1196 - putTextZH(pThreadParam->tasks[*iter].frameImage, resss.c_str(), { p1, p2 }, Scalar(20, 255, 20), 14, "Arial"); 1096 + putTextZH(tasks[*iter].frameImage, resss.c_str(), { p1, p2 }, Scalar(20, 255, 20), 14, "Arial");
1197 #else 1097 #else
1198 - string resss = "" + to_string(pThreadParam->VPTResult[i].obj[c].id) + " " + ObjTypesEnglish[pThreadParam->VPTResult[i].obj[c].index];  
1199 - cv::putText(pThreadParam->tasks[*iter].frameImage, resss.c_str(), cv::Point(p1, p2), cv::FONT_HERSHEY_COMPLEX, 2, Scalar(20, 255, 20), 2, 8, 0); 1098 + string resss = "" + to_string(VPTResult[i].obj[c].id) + " " + ObjTypesEnglish[VPTResult[i].obj[c].index];
  1099 + cv::putText(tasks[*iter].frameImage, resss.c_str(), cv::Point(p1, p2), cv::FONT_HERSHEY_COMPLEX, 2, Scalar(20, 255, 20), 2, 8, 0);
1200 #endif 1100 #endif
1201 } 1101 }
1202 1102
@@ -1204,54 +1104,54 @@ DWORD ThreadProcess(LPVOID param) @@ -1204,54 +1104,54 @@ DWORD ThreadProcess(LPVOID param)
1204 int boundary = 10; 1104 int boundary = 10;
1205 int boundaryLittle = 4; 1105 int boundaryLittle = 4;
1206 1106
1207 - int cur_real_width = (pThreadParam->VPTResult[i].obj[c].right - pThreadParam->VPTResult[i].obj[c].left);  
1208 - int cur_real_height = (pThreadParam->VPTResult[i].obj[c].bottom - pThreadParam->VPTResult[i].obj[c].top);  
1209 - int cur_real_index = pThreadParam->VPTResult[i].obj[c].index; 1107 + int cur_real_width = (VPTResult[i].obj[c].right - VPTResult[i].obj[c].left);
  1108 + int cur_real_height = (VPTResult[i].obj[c].bottom - VPTResult[i].obj[c].top);
  1109 + int cur_real_index = VPTResult[i].obj[c].index;
1210 1110
1211 //第一次添加快照 1111 //第一次添加快照
1212 - if (pThreadParam->m_snaphot_helper.snapShotInfo.find(newObj) == pThreadParam->m_snaphot_helper.snapShotInfo.end()) 1112 + if (m_snaphot_helper.snapShotInfo.find(newObj) == m_snaphot_helper.snapShotInfo.end())
1213 { 1113 {
1214 //DxAppendLog(DxLOG_INFO, "30"); 1114 //DxAppendLog(DxLOG_INFO, "30");
1215 - if (LegalMinArea(cur_real_width, cur_real_height, pThreadParam->tasks[*iter].task_min_boxsize[cur_real_index])) 1115 + if (LegalMinArea(cur_real_width, cur_real_height, tasks[*iter].task_min_boxsize[cur_real_index]))
1216 { 1116 {
1217 //DxAppendLog(DxLOG_INFO, "31"); 1117 //DxAppendLog(DxLOG_INFO, "31");
1218 //--------------------- 保存快照视频截图 -----------------------------// 1118 //--------------------- 保存快照视频截图 -----------------------------//
1219 1119
1220 - int left = max(0, (int)(pThreadParam->VPTResult[i].obj[c].left - boundaryLittle));  
1221 - int top = max(0, (int)(pThreadParam->VPTResult[i].obj[c].top - boundaryLittle));  
1222 - int right = min({ frameWidth - 1, (int)(pThreadParam->VPTResult[i].obj[c].right + boundaryLittle) });  
1223 - int bottom = min({ frameHeight - 1, (int)(pThreadParam->VPTResult[i].obj[c].bottom + boundaryLittle) });  
1224 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].frameCount = pThreadParam->tasks[*iter].taskFrameCount;  
1225 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].isupdate = true;  
1226 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].lost = 0; 1120 + int left = max(0, (int)(VPTResult[i].obj[c].left - boundaryLittle));
  1121 + int top = max(0, (int)(VPTResult[i].obj[c].top - boundaryLittle));
  1122 + int right = min({ frameWidth - 1, (int)(VPTResult[i].obj[c].right + boundaryLittle) });
  1123 + int bottom = min({ frameHeight - 1, (int)(VPTResult[i].obj[c].bottom + boundaryLittle) });
  1124 + m_snaphot_helper.snapShotInfo[newObj].frameCount = tasks[*iter].taskFrameCount;
  1125 + m_snaphot_helper.snapShotInfo[newObj].isupdate = true;
  1126 + m_snaphot_helper.snapShotInfo[newObj].lost = 0;
1227 1127
1228 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.count++;  
1229 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index = pThreadParam->VPTResult[i].obj[c].index; 1128 + m_snaphot_helper.snapShotInfo[newObj].index.count++;
  1129 + m_snaphot_helper.snapShotInfo[newObj].index.index = VPTResult[i].obj[c].index;
1230 1130
1231 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].confidence = pThreadParam->VPTResult[i].obj[c].confidence; 1131 + m_snaphot_helper.snapShotInfo[newObj].confidence = VPTResult[i].obj[c].confidence;
1232 1132
1233 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.left = left;  
1234 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.top = top;  
1235 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.right = right;  
1236 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.bottom = bottom;  
1237 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].lastArea = (bottom - top)*(right - left); 1133 + m_snaphot_helper.snapShotInfo[newObj].box.left = left;
  1134 + m_snaphot_helper.snapShotInfo[newObj].box.top = top;
  1135 + m_snaphot_helper.snapShotInfo[newObj].box.right = right;
  1136 + m_snaphot_helper.snapShotInfo[newObj].box.bottom = bottom;
  1137 + m_snaphot_helper.snapShotInfo[newObj].lastArea = (bottom - top)*(right - left);
1238 1138
1239 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].flags[0] = left < minDistance[0] + SCALE_OUT ? 0 : 1; //left  
1240 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].flags[1] = top < minDistance[1] + SCALE_OUT ? 0 : 1; //top  
1241 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].flags[2] = right > frameWidth - minDistance[2] - SCALE_OUT ? 0 : 1; //right  
1242 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].flags[3] = bottom > frameHeight - minDistance[3] - SCALE_OUT ? 0 : 1; //bottom 1139 + m_snaphot_helper.snapShotInfo[newObj].flags[0] = left < minDistance[0] + SCALE_OUT ? 0 : 1; //left
  1140 + m_snaphot_helper.snapShotInfo[newObj].flags[1] = top < minDistance[1] + SCALE_OUT ? 0 : 1; //top
  1141 + m_snaphot_helper.snapShotInfo[newObj].flags[2] = right > frameWidth - minDistance[2] - SCALE_OUT ? 0 : 1; //right
  1142 + m_snaphot_helper.snapShotInfo[newObj].flags[3] = bottom > frameHeight - minDistance[3] - SCALE_OUT ? 0 : 1; //bottom
1243 1143
1244 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame = NULL;  
1245 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShot.frame = NULL; 1144 + m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame = NULL;
  1145 + m_snaphot_helper.snapShotInfo[newObj].snapShot.frame = NULL;
1246 1146
1247 - if (pThreadParam->tasks[*iter].folderName != NULL) 1147 + if (tasks[*iter].folderName != NULL)
1248 { 1148 {
1249 //DxAppendLog(DxLOG_INFO, "32"); 1149 //DxAppendLog(DxLOG_INFO, "32");
1250 - FRAME_KEY frame_id = { (*iter),pThreadParam->tasks[*iter].taskFrameCount };  
1251 - pThreadParam->m_snaphot_helper.ImgSaveCache.insert(newObj, frame_id, pThreadParam->tasks[*iter].task_algorithm_data); 1150 + FRAME_KEY frame_id = { (*iter),tasks[*iter].taskFrameCount };
  1151 + m_snaphot_helper.ImgSaveCache.insert(newObj, frame_id, tasks[*iter].task_algorithm_data);
1252 1152
1253 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShot.height = frameHeight;  
1254 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShot.width = frameWidth; 1153 + m_snaphot_helper.snapShotInfo[newObj].snapShot.height = frameHeight;
  1154 + m_snaphot_helper.snapShotInfo[newObj].snapShot.width = frameWidth;
1255 } 1155 }
1256 1156
1257 1157
@@ -1261,18 +1161,18 @@ DWORD ThreadProcess(LPVOID param) @@ -1261,18 +1161,18 @@ DWORD ThreadProcess(LPVOID param)
1261 int vRight = 0; 1161 int vRight = 0;
1262 int vBottom = 0; 1162 int vBottom = 0;
1263 1163
1264 - vLeft = max(0, pThreadParam->VPTResult[i].obj[c].left - boundary);  
1265 - vTop = max(0, pThreadParam->VPTResult[i].obj[c].top - boundary);  
1266 - vRight = min({ frameWidth - 1, pThreadParam->VPTResult[i].obj[c].right + boundary });  
1267 - vBottom = min({ frameHeight - 1, pThreadParam->VPTResult[i].obj[c].bottom + boundary }); 1164 + vLeft = max(0, VPTResult[i].obj[c].left - boundary);
  1165 + vTop = max(0, VPTResult[i].obj[c].top - boundary);
  1166 + vRight = min({ frameWidth - 1, VPTResult[i].obj[c].right + boundary });
  1167 + vBottom = min({ frameHeight - 1, VPTResult[i].obj[c].bottom + boundary });
1268 //DxAppendLog(DxLOG_INFO, "34"); 1168 //DxAppendLog(DxLOG_INFO, "34");
1269 - if (pThreadParam->tasks[*iter].folderNameLittle != NULL) 1169 + if (tasks[*iter].folderNameLittle != NULL)
1270 { 1170 {
1271 //DxAppendLog(DxLOG_INFO, "35"); 1171 //DxAppendLog(DxLOG_INFO, "35");
1272 int cur_width = 0; 1172 int cur_width = 0;
1273 int cur_height = 0; 1173 int cur_height = 0;
1274 1174
1275 - if (0 == pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index) 1175 + if (0 == m_snaphot_helper.snapShotInfo[newObj].index.index)
1276 { 1176 {
1277 cur_width = HP_WIDTH; 1177 cur_width = HP_WIDTH;
1278 cur_height = HP_HEIGHT; 1178 cur_height = HP_HEIGHT;
@@ -1280,12 +1180,12 @@ DWORD ThreadProcess(LPVOID param) @@ -1280,12 +1180,12 @@ DWORD ThreadProcess(LPVOID param)
1280 human_idx.emplace_back(copy_obj_count); 1180 human_idx.emplace_back(copy_obj_count);
1281 human_obj_keys.emplace_back (newObj); 1181 human_obj_keys.emplace_back (newObj);
1282 } 1182 }
1283 - else if (1 == pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index || 2 == pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index) 1183 + else if (1 == m_snaphot_helper.snapShotInfo[newObj].index.index || 2 == m_snaphot_helper.snapShotInfo[newObj].index.index)
1284 { 1184 {
1285 cur_width = HCP_WIDTH; 1185 cur_width = HCP_WIDTH;
1286 cur_height = HCP_HEIGHT; 1186 cur_height = HCP_HEIGHT;
1287 } 1187 }
1288 - else if (8 == pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index || (pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index >= 4 && pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index <= 6)) 1188 + else if (8 == m_snaphot_helper.snapShotInfo[newObj].index.index || (m_snaphot_helper.snapShotInfo[newObj].index.index >= 4 && m_snaphot_helper.snapShotInfo[newObj].index.index <= 6))
1289 { 1189 {
1290 cur_width = VEHICLE_WIDTH; 1190 cur_width = VEHICLE_WIDTH;
1291 cur_height = VEHICLE_HEIGHT; 1191 cur_height = VEHICLE_HEIGHT;
@@ -1298,11 +1198,11 @@ DWORD ThreadProcess(LPVOID param) @@ -1298,11 +1198,11 @@ DWORD ThreadProcess(LPVOID param)
1298 1198
1299 if (cur_width != 0 && cur_height != 0) 1199 if (cur_width != 0 && cur_height != 0)
1300 { 1200 {
1301 - cudaMalloc((void**)&pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, IMG_CHANNELS * cur_width * cur_height * sizeof(unsigned char));  
1302 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height = cur_height;  
1303 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width = cur_width; 1201 + cudaMalloc((void**)&m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, IMG_CHANNELS * cur_width * cur_height * sizeof(unsigned char));
  1202 + m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height = cur_height;
  1203 + m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width = cur_width;
1304 1204
1305 - snapshot_image_data[copy_obj_count] = (unsigned char*)pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame; 1205 + snapshot_image_data[copy_obj_count] = (unsigned char*)m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame;
1306 snapshot_left[copy_obj_count] = vLeft; 1206 snapshot_left[copy_obj_count] = vLeft;
1307 snapshot_top[copy_obj_count] = vTop; 1207 snapshot_top[copy_obj_count] = vTop;
1308 snapshot_right[copy_obj_count] = vRight; 1208 snapshot_right[copy_obj_count] = vRight;
@@ -1318,59 +1218,59 @@ DWORD ThreadProcess(LPVOID param) @@ -1318,59 +1218,59 @@ DWORD ThreadProcess(LPVOID param)
1318 { 1218 {
1319 //DxAppendLog(DxLOG_INFO, "36"); 1219 //DxAppendLog(DxLOG_INFO, "36");
1320 bool updateShotInfo = false; 1220 bool updateShotInfo = false;
1321 - int oldIndex = pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index;  
1322 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].frameCount = pThreadParam->tasks[*iter].taskFrameCount;  
1323 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].isupdate = true;  
1324 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].lost = 0; 1221 + int oldIndex = m_snaphot_helper.snapShotInfo[newObj].index.index;
  1222 + m_snaphot_helper.snapShotInfo[newObj].frameCount = tasks[*iter].taskFrameCount;
  1223 + m_snaphot_helper.snapShotInfo[newObj].isupdate = true;
  1224 + m_snaphot_helper.snapShotInfo[newObj].lost = 0;
1325 1225
1326 - if (pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.count == 0) 1226 + if (m_snaphot_helper.snapShotInfo[newObj].index.count == 0)
1327 { 1227 {
1328 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.count++;  
1329 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index = pThreadParam->VPTResult[i].obj[c].index; 1228 + m_snaphot_helper.snapShotInfo[newObj].index.count++;
  1229 + m_snaphot_helper.snapShotInfo[newObj].index.index = VPTResult[i].obj[c].index;
1330 } 1230 }
1331 else 1231 else
1332 { 1232 {
1333 - if (pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index == pThreadParam->VPTResult[i].obj[c].index)  
1334 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.count++; 1233 + if (m_snaphot_helper.snapShotInfo[newObj].index.index == VPTResult[i].obj[c].index)
  1234 + m_snaphot_helper.snapShotInfo[newObj].index.count++;
1335 else 1235 else
1336 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.count--; 1236 + m_snaphot_helper.snapShotInfo[newObj].index.count--;
1337 } 1237 }
1338 - if (oldIndex != pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index) 1238 + if (oldIndex != m_snaphot_helper.snapShotInfo[newObj].index.index)
1339 { 1239 {
1340 updateShotInfo = true; 1240 updateShotInfo = true;
1341 } 1241 }
1342 1242
1343 - int left = max(0, (int)(pThreadParam->VPTResult[i].obj[c].left - boundaryLittle));  
1344 - int top = max(0, (int)(pThreadParam->VPTResult[i].obj[c].top - boundaryLittle));  
1345 - int right = min(frameWidth - 1, (int)(pThreadParam->VPTResult[i].obj[c].right + boundaryLittle));  
1346 - int bottom = min(frameHeight - 1, (int)(pThreadParam->VPTResult[i].obj[c].bottom + boundaryLittle)); 1243 + int left = max(0, (int)(VPTResult[i].obj[c].left - boundaryLittle));
  1244 + int top = max(0, (int)(VPTResult[i].obj[c].top - boundaryLittle));
  1245 + int right = min(frameWidth - 1, (int)(VPTResult[i].obj[c].right + boundaryLittle));
  1246 + int bottom = min(frameHeight - 1, (int)(VPTResult[i].obj[c].bottom + boundaryLittle));
1347 1247
1348 - int maxArea = (pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.right - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.left)*(pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.bottom - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.top); 1248 + int maxArea = (m_snaphot_helper.snapShotInfo[newObj].box.right - m_snaphot_helper.snapShotInfo[newObj].box.left)*(m_snaphot_helper.snapShotInfo[newObj].box.bottom - m_snaphot_helper.snapShotInfo[newObj].box.top);
1349 1249
1350 - if ((LegalArea(maxArea, pThreadParam->m_snaphot_helper.snapShotInfo[newObj].lastArea, left, top, right, bottom)  
1351 - && LegalPos(pThreadParam->m_snaphot_helper.snapShotInfo[newObj].flags, left, top, right, bottom, frameHeight, frameWidth)  
1352 - && LegalMinArea(cur_real_width, cur_real_height, pThreadParam->tasks[*iter].task_min_boxsize[cur_real_index])) || updateShotInfo) 1250 + if ((LegalArea(maxArea, m_snaphot_helper.snapShotInfo[newObj].lastArea, left, top, right, bottom)
  1251 + && LegalPos(m_snaphot_helper.snapShotInfo[newObj].flags, left, top, right, bottom, frameHeight, frameWidth)
  1252 + && LegalMinArea(cur_real_width, cur_real_height, tasks[*iter].task_min_boxsize[cur_real_index])) || updateShotInfo)
1353 { 1253 {
1354 //DxAppendLog(DxLOG_INFO, "37"); 1254 //DxAppendLog(DxLOG_INFO, "37");
1355 - int boundary_w = (pThreadParam->VPTResult[i].obj[c].right - pThreadParam->VPTResult[i].obj[c].left) * 0.1;  
1356 - int boundary_h = (pThreadParam->VPTResult[i].obj[c].bottom - pThreadParam->VPTResult[i].obj[c].top)* 0.1; 1255 + int boundary_w = (VPTResult[i].obj[c].right - VPTResult[i].obj[c].left) * 0.1;
  1256 + int boundary_h = (VPTResult[i].obj[c].bottom - VPTResult[i].obj[c].top)* 0.1;
1357 1257
1358 int boundary_left = boundary_w, boundary_right = boundary_w, boundary_top = boundary_h, boundary_bottom = boundary_h; 1258 int boundary_left = boundary_w, boundary_right = boundary_w, boundary_top = boundary_h, boundary_bottom = boundary_h;
1359 1259
1360 - ExpandMargin((left - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.left),  
1361 - (bottom - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.bottom), 1260 + ExpandMargin((left - m_snaphot_helper.snapShotInfo[newObj].box.left),
  1261 + (bottom - m_snaphot_helper.snapShotInfo[newObj].box.bottom),
1362 boundary_w, boundary_h, boundary_left, boundary_right, boundary_top, boundary_bottom); 1262 boundary_w, boundary_h, boundary_left, boundary_right, boundary_top, boundary_bottom);
1363 1263
1364 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.left = left;  
1365 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.top = top;  
1366 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.right = right;  
1367 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].box.bottom = bottom; 1264 + m_snaphot_helper.snapShotInfo[newObj].box.left = left;
  1265 + m_snaphot_helper.snapShotInfo[newObj].box.top = top;
  1266 + m_snaphot_helper.snapShotInfo[newObj].box.right = right;
  1267 + m_snaphot_helper.snapShotInfo[newObj].box.bottom = bottom;
1368 //printf("ori: %d %d %d %d\n", left, top, right - left, bottom - top); 1268 //printf("ori: %d %d %d %d\n", left, top, right - left, bottom - top);
1369 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].confidence = pThreadParam->VPTResult[i].obj[c].confidence;  
1370 - if (pThreadParam->tasks[*iter].folderName != NULL) 1269 + m_snaphot_helper.snapShotInfo[newObj].confidence = VPTResult[i].obj[c].confidence;
  1270 + if (tasks[*iter].folderName != NULL)
1371 { 1271 {
1372 - FRAME_KEY frame_id = { (*iter),pThreadParam->tasks[*iter].taskFrameCount };  
1373 - pThreadParam->m_snaphot_helper.ImgSaveCache.insert(newObj, frame_id, pThreadParam->tasks[*iter].task_algorithm_data); 1272 + FRAME_KEY frame_id = { (*iter),tasks[*iter].taskFrameCount };
  1273 + m_snaphot_helper.ImgSaveCache.insert(newObj, frame_id, tasks[*iter].task_algorithm_data);
1374 } 1274 }
1375 1275
1376 1276
@@ -1380,27 +1280,27 @@ DWORD ThreadProcess(LPVOID param) @@ -1380,27 +1280,27 @@ DWORD ThreadProcess(LPVOID param)
1380 int vRight = 0; 1280 int vRight = 0;
1381 int vBottom = 0; 1281 int vBottom = 0;
1382 1282
1383 - vLeft = max(0, pThreadParam->VPTResult[i].obj[c].left - boundary_left);  
1384 - vTop = max(0, pThreadParam->VPTResult[i].obj[c].top - boundary_top);  
1385 - vRight = min(frameWidth - 1, pThreadParam->VPTResult[i].obj[c].right + boundary_right);  
1386 - vBottom = min(frameHeight - 1, pThreadParam->VPTResult[i].obj[c].bottom + boundary_bottom);  
1387 - if (pThreadParam->tasks[*iter].folderNameLittle != NULL) 1283 + vLeft = max(0, VPTResult[i].obj[c].left - boundary_left);
  1284 + vTop = max(0, VPTResult[i].obj[c].top - boundary_top);
  1285 + vRight = min(frameWidth - 1, VPTResult[i].obj[c].right + boundary_right);
  1286 + vBottom = min(frameHeight - 1, VPTResult[i].obj[c].bottom + boundary_bottom);
  1287 + if (tasks[*iter].folderNameLittle != NULL)
1388 { 1288 {
1389 1289
1390 - if (0 == pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index) 1290 + if (0 == m_snaphot_helper.snapShotInfo[newObj].index.index)
1391 { 1291 {
1392 - if (pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width != HP_WIDTH || pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height != HP_HEIGHT) 1292 + if (m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width != HP_WIDTH || m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height != HP_HEIGHT)
1393 { 1293 {
1394 - cudaFree(pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame); //释放显存  
1395 - cudaMalloc((void**)&pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, 3 * HP_WIDTH * HP_HEIGHT * sizeof(unsigned char));  
1396 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width = HP_WIDTH;  
1397 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height = HP_HEIGHT; 1294 + cudaFree(m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame); //释放显存
  1295 + cudaMalloc((void**)&m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, 3 * HP_WIDTH * HP_HEIGHT * sizeof(unsigned char));
  1296 + m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width = HP_WIDTH;
  1297 + m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height = HP_HEIGHT;
1398 } 1298 }
1399 1299
1400 human_idx.push_back(copy_obj_count); 1300 human_idx.push_back(copy_obj_count);
1401 human_obj_keys.emplace_back(newObj); 1301 human_obj_keys.emplace_back(newObj);
1402 1302
1403 - snapshot_image_data[copy_obj_count] = (unsigned char*)pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame; 1303 + snapshot_image_data[copy_obj_count] = (unsigned char*)m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame;
1404 snapshot_left[copy_obj_count] = vLeft; 1304 snapshot_left[copy_obj_count] = vLeft;
1405 snapshot_top[copy_obj_count] = vTop; 1305 snapshot_top[copy_obj_count] = vTop;
1406 snapshot_right[copy_obj_count] = vRight; 1306 snapshot_right[copy_obj_count] = vRight;
@@ -1410,19 +1310,19 @@ DWORD ThreadProcess(LPVOID param) @@ -1410,19 +1310,19 @@ DWORD ThreadProcess(LPVOID param)
1410 snapshot_dst_height[copy_obj_count++] = HP_HEIGHT; 1310 snapshot_dst_height[copy_obj_count++] = HP_HEIGHT;
1411 1311
1412 } 1312 }
1413 - else if (1 == pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index || 2 == pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index) 1313 + else if (1 == m_snaphot_helper.snapShotInfo[newObj].index.index || 2 == m_snaphot_helper.snapShotInfo[newObj].index.index)
1414 { 1314 {
1415 //DxAppendLog(DxLOG_INFO, "42"); 1315 //DxAppendLog(DxLOG_INFO, "42");
1416 - if (pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width != HCP_WIDTH || pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height != HCP_HEIGHT) 1316 + if (m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width != HCP_WIDTH || m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height != HCP_HEIGHT)
1417 { 1317 {
1418 //DxAppendLog(DxLOG_INFO, "43"); 1318 //DxAppendLog(DxLOG_INFO, "43");
1419 - cudaFree(pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame); //释放显存  
1420 - cudaMalloc((void**)&pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, 3 * HCP_WIDTH * HCP_HEIGHT * sizeof(unsigned char));  
1421 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width = HCP_WIDTH;  
1422 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height = HCP_HEIGHT; 1319 + cudaFree(m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame); //释放显存
  1320 + cudaMalloc((void**)&m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, 3 * HCP_WIDTH * HCP_HEIGHT * sizeof(unsigned char));
  1321 + m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width = HCP_WIDTH;
  1322 + m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height = HCP_HEIGHT;
1423 } 1323 }
1424 1324
1425 - snapshot_image_data[copy_obj_count] = (unsigned char*)pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame; 1325 + snapshot_image_data[copy_obj_count] = (unsigned char*)m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame;
1426 snapshot_left[copy_obj_count] = vLeft; 1326 snapshot_left[copy_obj_count] = vLeft;
1427 snapshot_top[copy_obj_count] = vTop; 1327 snapshot_top[copy_obj_count] = vTop;
1428 snapshot_right[copy_obj_count] = vRight; 1328 snapshot_right[copy_obj_count] = vRight;
@@ -1432,19 +1332,19 @@ DWORD ThreadProcess(LPVOID param) @@ -1432,19 +1332,19 @@ DWORD ThreadProcess(LPVOID param)
1432 snapshot_dst_height[copy_obj_count++] = HCP_HEIGHT; 1332 snapshot_dst_height[copy_obj_count++] = HCP_HEIGHT;
1433 1333
1434 } 1334 }
1435 - else if (8 == pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index || (pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index >= 4 && pThreadParam->m_snaphot_helper.snapShotInfo[newObj].index.index <= 6)) 1335 + else if (8 == m_snaphot_helper.snapShotInfo[newObj].index.index || (m_snaphot_helper.snapShotInfo[newObj].index.index >= 4 && m_snaphot_helper.snapShotInfo[newObj].index.index <= 6))
1436 { 1336 {
1437 //DxAppendLog(DxLOG_INFO, "43.1"); 1337 //DxAppendLog(DxLOG_INFO, "43.1");
1438 - if (pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width != VEHICLE_WIDTH || pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height != VEHICLE_HEIGHT) 1338 + if (m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width != VEHICLE_WIDTH || m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height != VEHICLE_HEIGHT)
1439 { 1339 {
1440 //DxAppendLog(DxLOG_INFO, "44"); 1340 //DxAppendLog(DxLOG_INFO, "44");
1441 - cudaFree(pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame); //释放显存  
1442 - cudaMalloc((void**)&pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, 3 * VEHICLE_WIDTH * VEHICLE_HEIGHT * sizeof(unsigned char));  
1443 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width = VEHICLE_WIDTH;  
1444 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height = VEHICLE_HEIGHT; 1341 + cudaFree(m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame); //释放显存
  1342 + cudaMalloc((void**)&m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, 3 * VEHICLE_WIDTH * VEHICLE_HEIGHT * sizeof(unsigned char));
  1343 + m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width = VEHICLE_WIDTH;
  1344 + m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height = VEHICLE_HEIGHT;
1445 } 1345 }
1446 1346
1447 - snapshot_image_data[copy_obj_count] = (unsigned char*)pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame; 1347 + snapshot_image_data[copy_obj_count] = (unsigned char*)m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame;
1448 snapshot_left[copy_obj_count] = vLeft; 1348 snapshot_left[copy_obj_count] = vLeft;
1449 snapshot_top[copy_obj_count] = vTop; 1349 snapshot_top[copy_obj_count] = vTop;
1450 snapshot_right[copy_obj_count] = vRight; 1350 snapshot_right[copy_obj_count] = vRight;
@@ -1462,20 +1362,20 @@ DWORD ThreadProcess(LPVOID param) @@ -1462,20 +1362,20 @@ DWORD ThreadProcess(LPVOID param)
1462 int cur_height = vBottom - vTop; 1362 int cur_height = vBottom - vTop;
1463 if (cur_width != 0 && cur_height != 0) { 1363 if (cur_width != 0 && cur_height != 0) {
1464 //---------------------------------------- 1364 //----------------------------------------
1465 - cudaFree(pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame); //释放显存  
1466 - cudaMalloc((void**)&pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, 3 * (vBottom - vTop)*(vRight - vLeft) * sizeof(unsigned char));  
1467 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height = vBottom - vTop;  
1468 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width = vRight - vLeft; 1365 + cudaFree(m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame); //释放显存
  1366 + cudaMalloc((void**)&m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, 3 * (vBottom - vTop)*(vRight - vLeft) * sizeof(unsigned char));
  1367 + m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.height = vBottom - vTop;
  1368 + m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.width = vRight - vLeft;
1469 1369
1470 //printf("begin partMemCopy: %d %d %d %d %d %d\n", vLeft, vTop, vRight, vBottom, frameWidth, frameHeight); 1370 //printf("begin partMemCopy: %d %d %d %d %d %d\n", vLeft, vTop, vRight, vBottom, frameWidth, frameHeight);
1471 - partMemCopy((unsigned char*)pThreadParam->tasks[*iter].task_algorithm_data.frame, frameWidth, frameHeight,  
1472 - (unsigned char*)pThreadParam->m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, vLeft, vTop, vRight, vBottom); 1371 + partMemCopy((unsigned char*)tasks[*iter].task_algorithm_data.frame, frameWidth, frameHeight,
  1372 + (unsigned char*)m_snaphot_helper.snapShotInfo[newObj].snapShotLittle.frame, vLeft, vTop, vRight, vBottom);
1473 } 1373 }
1474 } 1374 }
1475 1375
1476 } 1376 }
1477 } 1377 }
1478 - pThreadParam->m_snaphot_helper.snapShotInfo[newObj].lastArea = (bottom - top)*(right - left); 1378 + m_snaphot_helper.snapShotInfo[newObj].lastArea = (bottom - top)*(right - left);
1479 } 1379 }
1480 1380
1481 } 1381 }
@@ -1483,14 +1383,14 @@ DWORD ThreadProcess(LPVOID param) @@ -1483,14 +1383,14 @@ DWORD ThreadProcess(LPVOID param)
1483 //若待抠图的快照数不为0 则进行批量抠图 1383 //若待抠图的快照数不为0 则进行批量抠图
1484 if (0 != copy_obj_count) 1384 if (0 != copy_obj_count)
1485 { 1385 {
1486 - cudaSetDevice(pThreadParam->mgpuid); 1386 + cudaSetDevice(mgpuid);
1487 cuCtxPushCurrent(context); 1387 cuCtxPushCurrent(context);
1488 - PartMemResizeBatch((unsigned char*)pThreadParam->tasks[*iter].task_algorithm_data.frame, frameWidth, frameHeight, 1388 + PartMemResizeBatch((unsigned char*)tasks[*iter].task_algorithm_data.frame, frameWidth, frameHeight,
1489 snapshot_image_data, copy_obj_count, snapshot_left, snapshot_top, snapshot_right, snapshot_bottom, snapshot_dst_width, snapshot_dst_height, 0, 0, 0, 1, 1, 1); 1389 snapshot_image_data, copy_obj_count, snapshot_left, snapshot_top, snapshot_right, snapshot_bottom, snapshot_dst_width, snapshot_dst_height, 0, 0, 0, 1, 1, 1);
1490 cuCtxPopCurrent(&context); 1390 cuCtxPopCurrent(&context);
1491 1391
1492 //最新刚添加的人脸检测模块,针对存在的行人快照进行人脸检测+人脸快照框的优选 1392 //最新刚添加的人脸检测模块,针对存在的行人快照进行人脸检测+人脸快照框的优选
1493 - if (pThreadParam->m_face_det_config == SY_CONFIG_OPEN && !human_idx.empty()) 1393 + if (m_face_det_config == SY_CONFIG_OPEN && !human_idx.empty())
1494 { 1394 {
1495 //需要做人脸检测 1395 //需要做人脸检测
1496 int human_count = human_idx.size(); 1396 int human_count = human_idx.size();
@@ -1511,7 +1411,7 @@ DWORD ThreadProcess(LPVOID param) @@ -1511,7 +1411,7 @@ DWORD ThreadProcess(LPVOID param)
1511 face_det_result[fd_i].info = new fd_info[10]; //内存由外部申请 1411 face_det_result[fd_i].info = new fd_info[10]; //内存由外部申请
1512 } 1412 }
1513 1413
1514 - if (pThreadParam->m_face_det_module->face_det_module_process(human_img, human_count, face_det_result, ori_points) == SUCCESS) 1414 + if (m_face_det_module->face_det_module_process(human_img, human_count, face_det_result, ori_points) == SUCCESS)
1515 { 1415 {
1516 //printf("finish face_det_module_process: %d\n", human_count); 1416 //printf("finish face_det_module_process: %d\n", human_count);
1517 for (int idx = 0; idx < human_count; idx++) 1417 for (int idx = 0; idx < human_count; idx++)
@@ -1543,7 +1443,7 @@ DWORD ThreadProcess(LPVOID param) @@ -1543,7 +1443,7 @@ DWORD ThreadProcess(LPVOID param)
1543 } 1443 }
1544 1444
1545 fd_info& cur_det_info = cur_det_res.info[face_idx]; 1445 fd_info& cur_det_info = cur_det_res.info[face_idx];
1546 - if (pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame == nullptr) 1446 + if (m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame == nullptr)
1547 { 1447 {
1548 sy_rect face_ori_rect = { (int)(snapshot_left[ii] + cur_det_info.face_position.left_ ), 1448 sy_rect face_ori_rect = { (int)(snapshot_left[ii] + cur_det_info.face_position.left_ ),
1549 (int)(snapshot_top[ii] + cur_det_info.face_position.top_), 1449 (int)(snapshot_top[ii] + cur_det_info.face_position.top_),
@@ -1551,8 +1451,8 @@ DWORD ThreadProcess(LPVOID param) @@ -1551,8 +1451,8 @@ DWORD ThreadProcess(LPVOID param)
1551 1451
1552 int new_left = max(0, face_ori_rect.left_ - face_ori_rect.width_); 1452 int new_left = max(0, face_ori_rect.left_ - face_ori_rect.width_);
1553 int new_top = max(0, face_ori_rect.top_ - face_ori_rect.height_); 1453 int new_top = max(0, face_ori_rect.top_ - face_ori_rect.height_);
1554 - int new_right = min((int)pThreadParam->tasks[*iter].task_algorithm_data.width - 1, (face_ori_rect.left_ + 2 * face_ori_rect.width_));  
1555 - int new_bottom = min((int)pThreadParam->tasks[*iter].task_algorithm_data.height - 1, (face_ori_rect.top_ + 2 * face_ori_rect.height_)); 1454 + int new_right = min((int)tasks[*iter].task_algorithm_data.width - 1, (face_ori_rect.left_ + 2 * face_ori_rect.width_));
  1455 + int new_bottom = min((int)tasks[*iter].task_algorithm_data.height - 1, (face_ori_rect.top_ + 2 * face_ori_rect.height_));
1556 int new_width = new_right - new_left; 1456 int new_width = new_right - new_left;
1557 int new_height = new_bottom - new_top; 1457 int new_height = new_bottom - new_top;
1558 1458
@@ -1560,18 +1460,18 @@ DWORD ThreadProcess(LPVOID param) @@ -1560,18 +1460,18 @@ DWORD ThreadProcess(LPVOID param)
1560 1460
1561 int face_img_length = 3 * face_expand_rect.width_ * face_expand_rect.height_; 1461 int face_img_length = 3 * face_expand_rect.width_ * face_expand_rect.height_;
1562 1462
1563 - cudaError_t cudaStatus = cudaMalloc((void**)&pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame, face_img_length * sizeof(unsigned char)); 1463 + cudaError_t cudaStatus = cudaMalloc((void**)&m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame, face_img_length * sizeof(unsigned char));
1564 if (cudaStatus != cudaSuccess) { 1464 if (cudaStatus != cudaSuccess) {
1565 fprintf(stderr, "here cudaMalloc frame[0] failed! error: %s\n", cudaGetErrorString(cudaStatus)); 1465 fprintf(stderr, "here cudaMalloc frame[0] failed! error: %s\n", cudaGetErrorString(cudaStatus));
1566 break; 1466 break;
1567 } 1467 }
1568 1468
1569 - pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.width = face_expand_rect.width_;  
1570 - pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.height = face_expand_rect.height_;  
1571 - memcpy((void*)&pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].face_info, (void*)&cur_det_info, sizeof(fd_info)); 1469 + m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.width = face_expand_rect.width_;
  1470 + m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.height = face_expand_rect.height_;
  1471 + memcpy((void*)&m_snaphot_helper.snapShotInfo[cur_obj_key].face_info, (void*)&cur_det_info, sizeof(fd_info));
1572 1472
1573 //矫正坐标 从行人抠图检测结果 -> 人脸外扩抠图坐标 1473 //矫正坐标 从行人抠图检测结果 -> 人脸外扩抠图坐标
1574 - fd_info& tmp_info = pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].face_info; 1474 + fd_info& tmp_info = m_snaphot_helper.snapShotInfo[cur_obj_key].face_info;
1575 1475
1576 for (int p = 0; p < FACIALFEAPOINTSIZE; p++) 1476 for (int p = 0; p < FACIALFEAPOINTSIZE; p++)
1577 { 1477 {
@@ -1581,14 +1481,14 @@ DWORD ThreadProcess(LPVOID param) @@ -1581,14 +1481,14 @@ DWORD ThreadProcess(LPVOID param)
1581 tmp_info.facial_fea_point[p].y_ - tmp_info.face_position.top_ + (face_ori_rect.top_ - face_expand_rect.top_); 1481 tmp_info.facial_fea_point[p].y_ - tmp_info.face_position.top_ + (face_ori_rect.top_ - face_expand_rect.top_);
1582 } 1482 }
1583 1483
1584 - pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].face_info.face_position = 1484 + m_snaphot_helper.snapShotInfo[cur_obj_key].face_info.face_position =
1585 { (face_ori_rect.left_ - face_expand_rect.left_), (face_ori_rect.top_ - face_expand_rect.top_), face_ori_rect.width_, face_ori_rect.height_ }; 1485 { (face_ori_rect.left_ - face_expand_rect.left_), (face_ori_rect.top_ - face_expand_rect.top_), face_ori_rect.width_, face_ori_rect.height_ };
1586 1486
1587 1487
1588 - cudacommon::CropImgGpu((unsigned char*)pThreadParam->tasks[*iter].task_algorithm_data.frame, pThreadParam->tasks[*iter].task_algorithm_data.width, pThreadParam->tasks[*iter].task_algorithm_data.height,  
1589 - (unsigned char*)pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame, face_expand_rect.left_, face_expand_rect.top_, face_expand_rect.width_, face_expand_rect.height_); 1488 + cudacommon::CropImgGpu((unsigned char*)tasks[*iter].task_algorithm_data.frame, tasks[*iter].task_algorithm_data.width, tasks[*iter].task_algorithm_data.height,
  1489 + (unsigned char*)m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame, face_expand_rect.left_, face_expand_rect.top_, face_expand_rect.width_, face_expand_rect.height_);
1590 1490
1591 - //show_gpu_img_func(pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace); 1491 + //show_gpu_img_func(m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace);
1592 } 1492 }
1593 else 1493 else
1594 { 1494 {
@@ -1598,12 +1498,12 @@ DWORD ThreadProcess(LPVOID param) @@ -1598,12 +1498,12 @@ DWORD ThreadProcess(LPVOID param)
1598 1498
1599 //更新人脸快照条件:① 角度满足条件 ② 面积比之前人脸面积大 1499 //更新人脸快照条件:① 角度满足条件 ② 面积比之前人脸面积大
1600 if (validAngle(cur_det_res.info[face_idx].roll, cur_det_res.info[face_idx].yaw, cur_det_res.info[face_idx].pitch, 15.0, 20.0) 1500 if (validAngle(cur_det_res.info[face_idx].roll, cur_det_res.info[face_idx].yaw, cur_det_res.info[face_idx].pitch, 15.0, 20.0)
1601 - && betterArea(face_ori_rect, pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].face_info.face_position)) 1501 + && betterArea(face_ori_rect, m_snaphot_helper.snapShotInfo[cur_obj_key].face_info.face_position))
1602 { 1502 {
1603 int new_left = max(0, face_ori_rect.left_ - face_ori_rect.width_); 1503 int new_left = max(0, face_ori_rect.left_ - face_ori_rect.width_);
1604 int new_top = max(0, face_ori_rect.top_ - face_ori_rect.height_); 1504 int new_top = max(0, face_ori_rect.top_ - face_ori_rect.height_);
1605 - int new_right = min((int)pThreadParam->tasks[*iter].task_algorithm_data.width - 1, (face_ori_rect.left_ + 2 * face_ori_rect.width_));  
1606 - int new_bottom = min((int)pThreadParam->tasks[*iter].task_algorithm_data.height - 1, (face_ori_rect.top_ + 2 * face_ori_rect.height_)); 1505 + int new_right = min((int)tasks[*iter].task_algorithm_data.width - 1, (face_ori_rect.left_ + 2 * face_ori_rect.width_));
  1506 + int new_bottom = min((int)tasks[*iter].task_algorithm_data.height - 1, (face_ori_rect.top_ + 2 * face_ori_rect.height_));
1607 int new_width = new_right - new_left; 1507 int new_width = new_right - new_left;
1608 int new_height = new_bottom - new_top; 1508 int new_height = new_bottom - new_top;
1609 1509
@@ -1612,19 +1512,19 @@ DWORD ThreadProcess(LPVOID param) @@ -1612,19 +1512,19 @@ DWORD ThreadProcess(LPVOID param)
1612 //更新快照 1512 //更新快照
1613 int face_img_length = 3 * face_expand_rect.width_ * face_expand_rect.height_; 1513 int face_img_length = 3 * face_expand_rect.width_ * face_expand_rect.height_;
1614 1514
1615 - cudaFree(pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame);  
1616 - cudaError_t cudaStatus = cudaMalloc((void**)&pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame, face_img_length * sizeof(unsigned char)); 1515 + cudaFree(m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame);
  1516 + cudaError_t cudaStatus = cudaMalloc((void**)&m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame, face_img_length * sizeof(unsigned char));
1617 if (cudaStatus != cudaSuccess) { 1517 if (cudaStatus != cudaSuccess) {
1618 fprintf(stderr, "here cudaMalloc frame[0] failed! error: %s\n", cudaGetErrorString(cudaStatus)); 1518 fprintf(stderr, "here cudaMalloc frame[0] failed! error: %s\n", cudaGetErrorString(cudaStatus));
1619 break; 1519 break;
1620 } 1520 }
1621 1521
1622 - pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.width = face_expand_rect.width_;  
1623 - pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.height = face_expand_rect.height_;  
1624 - memcpy((void*)&pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].face_info, (void*)&cur_det_info, sizeof(fd_info)); 1522 + m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.width = face_expand_rect.width_;
  1523 + m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.height = face_expand_rect.height_;
  1524 + memcpy((void*)&m_snaphot_helper.snapShotInfo[cur_obj_key].face_info, (void*)&cur_det_info, sizeof(fd_info));
1625 1525
1626 //矫正坐标 从行人抠图检测结果 -> 人脸外扩抠图坐标 1526 //矫正坐标 从行人抠图检测结果 -> 人脸外扩抠图坐标
1627 - fd_info& tmp_info = pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].face_info; 1527 + fd_info& tmp_info = m_snaphot_helper.snapShotInfo[cur_obj_key].face_info;
1628 1528
1629 for (int p = 0; p < FACIALFEAPOINTSIZE; p++) 1529 for (int p = 0; p < FACIALFEAPOINTSIZE; p++)
1630 { 1530 {
@@ -1634,15 +1534,15 @@ DWORD ThreadProcess(LPVOID param) @@ -1634,15 +1534,15 @@ DWORD ThreadProcess(LPVOID param)
1634 tmp_info.facial_fea_point[p].y_ - tmp_info.face_position.top_ + (face_ori_rect.top_ - face_expand_rect.top_); 1534 tmp_info.facial_fea_point[p].y_ - tmp_info.face_position.top_ + (face_ori_rect.top_ - face_expand_rect.top_);
1635 } 1535 }
1636 1536
1637 - pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].face_info.face_position = 1537 + m_snaphot_helper.snapShotInfo[cur_obj_key].face_info.face_position =
1638 {(face_ori_rect.left_ - face_expand_rect.left_), (face_ori_rect.top_ - face_expand_rect.top_), face_ori_rect.width_, face_ori_rect.height_}; 1538 {(face_ori_rect.left_ - face_expand_rect.left_), (face_ori_rect.top_ - face_expand_rect.top_), face_ori_rect.width_, face_ori_rect.height_};
1639 1539
1640 - cudacommon::CropImgGpu((unsigned char*)pThreadParam->tasks[*iter].task_algorithm_data.frame, pThreadParam->tasks[*iter].task_algorithm_data.width, pThreadParam->tasks[*iter].task_algorithm_data.height,  
1641 - (unsigned char*)pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame, face_expand_rect.left_, face_expand_rect.top_, face_expand_rect.width_, face_expand_rect.height_); 1540 + cudacommon::CropImgGpu((unsigned char*)tasks[*iter].task_algorithm_data.frame, tasks[*iter].task_algorithm_data.width, tasks[*iter].task_algorithm_data.height,
  1541 + (unsigned char*)m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace.frame, face_expand_rect.left_, face_expand_rect.top_, face_expand_rect.width_, face_expand_rect.height_);
1642 1542
1643 - //show_gpu_image_withfdinfo_(pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace, cur_det_info); 1543 + //show_gpu_image_withfdinfo_(m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace, cur_det_info);
1644 1544
1645 - //show_gpu_image_withfdinfo_(pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace, pThreadParam->m_snaphot_helper.snapShotInfo[cur_obj_key].face_info); 1545 + //show_gpu_image_withfdinfo_(m_snaphot_helper.snapShotInfo[cur_obj_key].snapShotFace, m_snaphot_helper.snapShotInfo[cur_obj_key].face_info);
1646 } 1546 }
1647 } 1547 }
1648 } 1548 }
@@ -1663,11 +1563,11 @@ DWORD ThreadProcess(LPVOID param) @@ -1663,11 +1563,11 @@ DWORD ThreadProcess(LPVOID param)
1663 //实时查看 绘制目标轨迹 回调函数返回 1563 //实时查看 绘制目标轨迹 回调函数返回
1664 if (view) 1564 if (view)
1665 { 1565 {
1666 - DrawTracker(pThreadParam->VPT_Handle, *iter, &pThreadParam->tasks[*iter].frameImage);  
1667 - if (pThreadParam->tasks[*iter].taskRealTimeCallbackFunc != nullptr)  
1668 - pThreadParam->tasks[*iter].taskRealTimeCallbackFunc(pThreadParam->tasks[*iter].frameImage.data, pThreadParam->tasks[*iter].frameImage.rows, pThreadParam->tasks[*iter].frameImage.cols); 1566 + DrawTracker(VPT_Handle, *iter, &tasks[*iter].frameImage);
  1567 + if (tasks[*iter].taskRealTimeCallbackFunc != nullptr)
  1568 + tasks[*iter].taskRealTimeCallbackFunc(tasks[*iter].frameImage.data, tasks[*iter].frameImage.rows, tasks[*iter].frameImage.cols);
1669 } 1569 }
1670 - // pThreadParam->tasks[*iter].taskFrameCount += pThreadParam->skip_frame_; 1570 + // tasks[*iter].taskFrameCount += skip_frame_;
1671 iter++; 1571 iter++;
1672 } 1572 }
1673 1573
@@ -1677,9 +1577,9 @@ DWORD ThreadProcess(LPVOID param) @@ -1677,9 +1577,9 @@ DWORD ThreadProcess(LPVOID param)
1677 #endif 1577 #endif
1678 1578
1679 1579
1680 - auto task_iter = pThreadParam->TaskinPlayID.begin(); 1580 + auto task_iter = TaskinPlayID.begin();
1681 1581
1682 - pThreadParam->AttributionAnalysis = false; 1582 + AttributionAnalysis = false;
1683 1583
1684 long long second_analysis_time = get_cur_time_ms(); 1584 long long second_analysis_time = get_cur_time_ms();
1685 1585
@@ -1689,20 +1589,20 @@ DWORD ThreadProcess(LPVOID param) @@ -1689,20 +1589,20 @@ DWORD ThreadProcess(LPVOID param)
1689 { 1589 {
1690 OBJ_KEY deleteObj = { *task_iter, deleteObjectID[i][j] }; 1590 OBJ_KEY deleteObj = { *task_iter, deleteObjectID[i][j] };
1691 1591
1692 - if (pThreadParam->m_snaphot_helper.snapShotInfo.find(deleteObj) == pThreadParam->m_snaphot_helper.snapShotInfo.end()) 1592 + if (m_snaphot_helper.snapShotInfo.find(deleteObj) == m_snaphot_helper.snapShotInfo.end())
1693 continue; 1593 continue;
1694 1594
1695 - auto iter = pThreadParam->m_snaphot_helper.snapShotInfo.find(deleteObj); 1595 + auto iter = m_snaphot_helper.snapShotInfo.find(deleteObj);
1696 iter->second.finishTracker = true; 1596 iter->second.finishTracker = true;
1697 1597
1698 - pThreadParam->SaveResultInFile(iter->first, iter->second); 1598 + m_snaphot_helper.SaveResultInFile(iter->first, iter->second);
1699 } 1599 }
1700 1600
1701 task_iter++; 1601 task_iter++;
1702 } 1602 }
1703 1603
1704 - for (auto task_id: pThreadParam->TaskinPlayID) {  
1705 - cudaFree(pThreadParam->tasks[task_id].task_algorithm_data.frame); 1604 + for (auto task_id: TaskinPlayID) {
  1605 + cudaFree(tasks[task_id].task_algorithm_data.frame);
1706 } 1606 }
1707 1607
1708 1608
@@ -1710,7 +1610,7 @@ DWORD ThreadProcess(LPVOID param) @@ -1710,7 +1610,7 @@ DWORD ThreadProcess(LPVOID param)
1710 vector<int>().swap(deleteObjectID[i]); 1610 vector<int>().swap(deleteObjectID[i]);
1711 vector<vector<int>>().swap(deleteObjectID); 1611 vector<vector<int>>().swap(deleteObjectID);
1712 1612
1713 - pThreadParam->m_snaphot_helper.object_attri_analysis(); 1613 + m_snaphot_helper.object_attri_analysis();
1714 1614
1715 #ifdef LOG_INFO2 1615 #ifdef LOG_INFO2
1716 long long second_analysis_time2 = get_cur_time_ms(); 1616 long long second_analysis_time2 = get_cur_time_ms();
@@ -1743,8 +1643,8 @@ DWORD ThreadProcess(LPVOID param) @@ -1743,8 +1643,8 @@ DWORD ThreadProcess(LPVOID param)
1743 long long costTime1 = get_cur_time_ms() - begintime1; 1643 long long costTime1 = get_cur_time_ms() - begintime1;
1744 LOG_INFO("Process Thread is Finished. total frame cost time = {} ms, process times: {}", costTime1, process_times); 1644 LOG_INFO("Process Thread is Finished. total frame cost time = {} ms, process times: {}", costTime1, process_times);
1745 1645
1746 - pThreadParam->m_snaphot_helper.snapShotInfo.clear();  
1747 - pThreadParam->ProcessFlag = false; 1646 + m_snaphot_helper.snapShotInfo.clear();
  1647 + ProcessFlag = false;
1748 1648
1749 if (batch_img != NULL) 1649 if (batch_img != NULL)
1750 { 1650 {
@@ -1754,8 +1654,6 @@ DWORD ThreadProcess(LPVOID param) @@ -1754,8 +1654,6 @@ DWORD ThreadProcess(LPVOID param)
1754 1654
1755 cuCtxPopCurrent(nullptr); 1655 cuCtxPopCurrent(nullptr);
1756 cuCtxDestroy(context); 1656 cuCtxDestroy(context);
1757 -  
1758 - return 0;  
1759 } 1657 }
1760 1658
1761 int CMutliSourceVideoProcess::GetRuningNb() { 1659 int CMutliSourceVideoProcess::GetRuningNb() {
@@ -1779,9 +1677,9 @@ void check_thread(void* handle) @@ -1779,9 +1677,9 @@ void check_thread(void* handle)
1779 char * time = wtime; 1677 char * time = wtime;
1780 #endif 1678 #endif
1781 1679
1782 - CMutliSourceVideoProcess *pThreadParam = (CMutliSourceVideoProcess *)handle; 1680 + CMutliSourceVideoProcess *_this = (CMutliSourceVideoProcess *)handle;
1783 1681
1784 - while (!pThreadParam->m_bExit) 1682 + while (!_this->m_bExit)
1785 { 1683 {
1786 //printf("xxx check status on process...\n"); 1684 //printf("xxx check status on process...\n");
1787 #ifdef _MSC_VER 1685 #ifdef _MSC_VER
@@ -1792,14 +1690,14 @@ void check_thread(void* handle) @@ -1792,14 +1690,14 @@ void check_thread(void* handle)
1792 #endif 1690 #endif
1793 if (res < 0) 1691 if (res < 0)
1794 { 1692 {
1795 - pThreadParam->licence_status = pThreadParam->licence_status - 1; 1693 + _this->licence_status = _this->licence_status - 1;
1796 printf("CMutliSourceVideoProcess licence error, ret: %d \n", res); 1694 printf("CMutliSourceVideoProcess licence error, ret: %d \n", res);
1797 } 1695 }
1798 else 1696 else
1799 { 1697 {
1800 - if (pThreadParam->licence_status < 0) 1698 + if (_this->licence_status < 0)
1801 { 1699 {
1802 - pThreadParam->licence_status = 0; 1700 + _this->licence_status = 0;
1803 } 1701 }
1804 } 1702 }
1805 std::this_thread::sleep_for(std::chrono::seconds(300)); 1703 std::this_thread::sleep_for(std::chrono::seconds(300));
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/MutliSourceVideoProcess.h
@@ -225,11 +225,12 @@ public: @@ -225,11 +225,12 @@ public:
225 void ViewTask(const int taskID); 225 void ViewTask(const int taskID);
226 void FinishViewTask(); 226 void FinishViewTask();
227 int FinishProcessThread(); 227 int FinishProcessThread();
228 - int SaveResultInFile(const OBJ_KEY & obj_key, const OBJ_VALUE & obj_value);  
229 void FinishDecode(const int taskID); 228 void FinishDecode(const int taskID);
230 229
231 int GetRuningNb(); 230 int GetRuningNb();
232 231
  232 + void algorthim_process();
  233 +
233 private: 234 private:
234 //bool ChangeTask; 235 //bool ChangeTask;
235 //HANDLE handle_process; 236 //HANDLE handle_process;
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/snapshot_analysis/HumanCarParsing.cpp
@@ -73,7 +73,7 @@ int HumanCarParsing::init(int gpuid, char* auth_license) @@ -73,7 +73,7 @@ int HumanCarParsing::init(int gpuid, char* auth_license)
73 73
74 int HumanCarParsing::process(sy_img * batch_img, int batch_size, hcp_analysis_result *&result) 74 int HumanCarParsing::process(sy_img * batch_img, int batch_size, hcp_analysis_result *&result)
75 { 75 {
76 - LOG_INFO("batch_size: {}", batch_size); 76 + LOG_DEBUG("batch_size: {}", batch_size);
77 hcp_batch(handle, batch_img, batch_size, result); 77 hcp_batch(handle, batch_img, batch_size, result);
78 78
79 for (int b = 0; b < batch_size; b++) 79 for (int b = 0; b < batch_size; b++)
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/snapshot_analysis/snapshot_helper.cpp
@@ -90,7 +90,7 @@ void SnapshotImageWriteThreadProcess(const void * userPtr){ @@ -90,7 +90,7 @@ void SnapshotImageWriteThreadProcess(const void * userPtr){
90 } 90 }
91 91
92 void snapshot_helper::snapshot_helper_init(int gpuid, double gpu_total_memory, char* dbpath, char* auth_license, int wait_framecount, sy_command hp_analysis_config, \ 92 void snapshot_helper::snapshot_helper_init(int gpuid, double gpu_total_memory, char* dbpath, char* auth_license, int wait_framecount, sy_command hp_analysis_config, \
93 - sy_command hcp_analysis_config, sy_command vehicle_analysis_config, sy_command vehicle_recg_config, sy_command vehicle_plate_det_recg_config, sy_command hf_recg_config, sy_command hcf_recg_config, sy_command vcf_recg_config) 93 + sy_command hcp_analysis_config, sy_command vehicle_analysis_config, sy_command vehicle_recg_config, sy_command vehicle_plate_det_recg_config, sy_command hf_recg_config, sy_command hcf_recg_config, sy_command vcf_recg_config, sy_command face_detect_config)
94 { 94 {
95 hp_analysis_cf = hp_analysis_config; 95 hp_analysis_cf = hp_analysis_config;
96 hcp_analysis_cf = hcp_analysis_config; 96 hcp_analysis_cf = hcp_analysis_config;
@@ -98,6 +98,7 @@ void snapshot_helper::snapshot_helper_init(int gpuid, double gpu_total_memory, c @@ -98,6 +98,7 @@ void snapshot_helper::snapshot_helper_init(int gpuid, double gpu_total_memory, c
98 hf_recg_cf = hf_recg_config; 98 hf_recg_cf = hf_recg_config;
99 hcf_recg_cf = hcf_recg_config; 99 hcf_recg_cf = hcf_recg_config;
100 vcf_recg_cf = vcf_recg_config; 100 vcf_recg_cf = vcf_recg_config;
  101 + face_detect_cf = face_detect_config;
101 char* dbpath_utf8 = nullptr; 102 char* dbpath_utf8 = nullptr;
102 #ifdef _MSC_VER 103 #ifdef _MSC_VER
103 //dbpath_utf8 = GbkToUtf8(dbpath); 104 //dbpath_utf8 = GbkToUtf8(dbpath);
@@ -2018,3 +2019,56 @@ int snapshot_helper::save_snapshot(bool is_image, bool on_image_display, OBJ_KEY @@ -2018,3 +2019,56 @@ int snapshot_helper::save_snapshot(bool is_image, bool on_image_display, OBJ_KEY
2018 } 2019 }
2019 return 1; 2020 return 1;
2020 } 2021 }
  2022 +
  2023 +int snapshot_helper::SaveResultInFile(const OBJ_KEY & obj_key, const OBJ_VALUE & obj_value)
  2024 +{
  2025 + if (0 == obj_value.index.index && obj_value.snapShotLittle.width == HP_WIDTH && obj_value.snapShotLittle.height == HP_HEIGHT)
  2026 + {
  2027 + if (face_detect_cf == SY_CONFIG_OPEN)
  2028 + {
  2029 + save_face_snapshot(obj_key);
  2030 + }
  2031 +
  2032 + if (hp_analysis_cf == SY_CONFIG_OPEN || hf_recg_cf == SY_CONFIG_OPEN)
  2033 + {
  2034 + save_snapshot(obj_key);
  2035 + hp_analysis(obj_key);
  2036 + }
  2037 + else
  2038 + {
  2039 + save_without_analysis(obj_key);
  2040 + }
  2041 + }
  2042 + else if ((1 == obj_value.index.index || 2 == obj_value.index.index) && obj_value.snapShotLittle.width == HCP_WIDTH && obj_value.snapShotLittle.height == HCP_HEIGHT)
  2043 + {
  2044 + if (hcp_analysis_cf == SY_CONFIG_OPEN || hcf_recg_cf == SY_CONFIG_OPEN)
  2045 + {
  2046 + save_snapshot(obj_key);
  2047 + hcp_analysis(obj_key);
  2048 + }
  2049 + else
  2050 + {
  2051 + save_without_analysis(obj_key);
  2052 + }
  2053 + }
  2054 + else if ((8 == obj_value.index.index || (obj_value.index.index >= 4 && obj_value.index.index <= 6)) && obj_value.snapShotLittle.width == VEHICLE_WIDTH && obj_value.snapShotLittle.height == VEHICLE_HEIGHT)
  2055 + {
  2056 + //VEHICLEAnalysis(obj_key, obj_value);
  2057 + if (vehicle_analysis_cf == SY_CONFIG_OPEN || vcf_recg_cf == SY_CONFIG_OPEN)
  2058 + {
  2059 + save_snapshot(obj_key);
  2060 + vehicle_analysis(obj_key);
  2061 + }
  2062 + else
  2063 + {
  2064 + save_without_analysis(obj_key);
  2065 + }
  2066 +
  2067 + }
  2068 + else
  2069 + {
  2070 + save_without_analysis(obj_key);
  2071 + }
  2072 +
  2073 + return 0;
  2074 +}
2021 \ No newline at end of file 2075 \ No newline at end of file
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/snapshot_analysis/snapshot_helper.h
@@ -51,26 +51,6 @@ struct AABBBOX @@ -51,26 +51,6 @@ struct AABBBOX
51 int bottom; 51 int bottom;
52 }; 52 };
53 53
54 -//struct OBJ_KEY {  
55 -// int videoID;  
56 -// int objID;  
57 -//  
58 -// bool operator< (OBJ_KEY const& _A) const  
59 -// {  
60 -// if (videoID < _A.videoID) return true;  
61 -// if (videoID == _A.videoID) return objID < _A.objID;  
62 -//  
63 -// return false;  
64 -// }  
65 -// bool operator== (OBJ_KEY const& _A) const  
66 -// {  
67 -// if (videoID == _A.videoID && objID == _A.objID)  
68 -// return true;  
69 -// else  
70 -// return false;  
71 -// }  
72 -//};  
73 -  
74 struct OBJ_INDEX { 54 struct OBJ_INDEX {
75 int index; 55 int index;
76 int count; //用于对index的计数 56 int count; //用于对index的计数
@@ -140,12 +120,6 @@ enum { @@ -140,12 +120,6 @@ enum {
140 VC_ALL_ANALYSIS 120 VC_ALL_ANALYSIS
141 }; 121 };
142 122
143 -//enum class VC_ANALYSIS_TYPE {  
144 -// VC_ANALYSIS,  
145 -// VR_VF_ANALYSIS,  
146 -// VPDR_ANALYSIS  
147 -//};  
148 -  
149 enum class V_ANALYSIS_TYPE { 123 enum class V_ANALYSIS_TYPE {
150 VC_ANALYSIS, 124 VC_ANALYSIS,
151 VR_VF_ANALYSIS, 125 VR_VF_ANALYSIS,
@@ -157,54 +131,6 @@ extern string ObjTypesEnglish[]; @@ -157,54 +131,6 @@ extern string ObjTypesEnglish[];
157 131
158 class snapshot_helper 132 class snapshot_helper
159 { 133 {
160 -private:  
161 - queue<OBJ_KEY> count_person;  
162 - queue<OBJ_KEY> count_bike;  
163 - queue<OBJ_KEY> count_vehicle;  
164 - //map<OBJ_KEY, hp_result> snapShotInfo_hpf;  
165 - //map<OBJ_KEY, hcp_result> snapShotInfo_hcpf;  
166 -  
167 - vector<OBJ_KEY> count_vehicle_v; //车的二次属性分析拆为三部分时,不再使用队列,只能使用数组  
168 -  
169 - vector<vehicle_result> vehicle_result_v;  
170 -  
171 - sy_img * batch_hp = nullptr;  
172 - sy_img * batch_hcp = nullptr;  
173 - sy_img * batch_vehicle = nullptr;  
174 - sy_img * batch_vehicle_vf = nullptr;  
175 -  
176 - void * hp_handle = nullptr;  
177 - void * vc_handle = nullptr;  
178 - void * vp_handle = nullptr;  
179 - void * vr_handle = nullptr;  
180 - void * vrr_handle = nullptr;  
181 - void * nvf_handle = nullptr;  
182 - void * vhd_handle = nullptr;  
183 - void * vf_handle = nullptr;  
184 - sy_command hp_analysis_cf;  
185 - sy_command hcp_analysis_cf;  
186 - sy_command vehicle_analysis_cf;  
187 -  
188 - sy_command hf_recg_cf;  
189 - sy_command hcf_recg_cf;  
190 - sy_command vcf_recg_cf;  
191 -  
192 - void * hf_handle = nullptr;  
193 - void * hcf_handle = nullptr;  
194 - sy_command vehicle_recg_cf;  
195 - sy_command vehicle_plate_det_recg_cf;  
196 - int count_vehivle_finishanalysis = 0;  
197 - int OBJ_SCALE = 2;  
198 - int OBJ_BATCH_COUNT = 0;  
199 - int OBJ_BATCH_COUNT_VEHICLE = 0;  
200 -  
201 - int hp_wait_count, hcp_wait_count, vehicle_wait_count;  
202 - int wait_framecount;  
203 -  
204 - std::thread* ProcessSnapshotThread;  
205 - std::vector<std::thread*> m_vec_writeThread;  
206 - bool m_bExit {false};  
207 -  
208 public: 134 public:
209 void snapshot_thread_process(); 135 void snapshot_thread_process();
210 void snapshot_imagewrite_thread_process(); 136 void snapshot_imagewrite_thread_process();
@@ -227,16 +153,13 @@ public: @@ -227,16 +153,13 @@ public:
227 //VC_ANALYSIS_TYPE vc_analysis; 153 //VC_ANALYSIS_TYPE vc_analysis;
228 V_ANALYSIS_TYPE v_analysis; 154 V_ANALYSIS_TYPE v_analysis;
229 void snapshot_helper_init(int gpuid, double gpu_total_memory, char* dbpath, char* auth_license, int wait_framecount, sy_command hp_analysis_config, \ 155 void snapshot_helper_init(int gpuid, double gpu_total_memory, char* dbpath, char* auth_license, int wait_framecount, sy_command hp_analysis_config, \
230 - sy_command hcp_analysis_config, sy_command vehicle_analysis_config, sy_command vehicle_recg_config, sy_command vehicle_plate_det_recg_config, sy_command hf_recg_config, sy_command hcf_recg_config, sy_command vcf_recg_config); 156 + sy_command hcp_analysis_config, sy_command vehicle_analysis_config, sy_command vehicle_recg_config, sy_command vehicle_plate_det_recg_config, sy_command hf_recg_config, sy_command hcf_recg_config, sy_command vcf_recg_config, sy_command face_detect_config);
231 void snapshot_helper_release(); 157 void snapshot_helper_release();
232 void add_task_info(int new_task_id, TASK_INFO new_task_info); 158 void add_task_info(int new_task_id, TASK_INFO new_task_info);
233 void delete_task_info(int new_task_id, TASK_INFO new_task_info); 159 void delete_task_info(int new_task_id, TASK_INFO new_task_info);
234 - int save_snapshot(bool is_image, bool on_image_display, OBJ_KEY obj_key, char* filename, char* mode, float* imgData, int width, int height, int taskID, int objID, int recFlag, int left, int top, int right, int bottom);  
235 - int save_snapshot(bool is_image, bool on_image_display, OBJ_KEY obj_key, char* filename, char* mode, unsigned char* imgData, int width, int height, int taskID, int objID, int recFlag, int left, int top, int right, int bottom);  
236 - int save_snapshot(OBJ_KEY obj_key);  
237 - int save_face_snapshot(OBJ_KEY obj_key); 160 +
  161 + int SaveResultInFile(const OBJ_KEY & obj_key, const OBJ_VALUE & obj_value);
238 162
239 - void save_without_analysis(OBJ_KEY obj_key);  
240 void erase_snapshotImage(OBJ_KEY obj_key); 163 void erase_snapshotImage(OBJ_KEY obj_key);
241 //整体的三种二次属性分析 164 //整体的三种二次属性分析
242 void hp_analysis(OBJ_KEY obj_key); 165 void hp_analysis(OBJ_KEY obj_key);
@@ -248,14 +171,69 @@ public: @@ -248,14 +171,69 @@ public:
248 bool vehicle_color_analysis(); 171 bool vehicle_color_analysis();
249 bool vehicle_recg_analysis(); 172 bool vehicle_recg_analysis();
250 bool vehicle_plate_dr_analysis(); 173 bool vehicle_plate_dr_analysis();
251 -  
252 174
253 void finish_task_ss_analysis(int task_id, sy_command hp_analysis_config, sy_command hcp_analysis_config, sy_command vehicle_analysis_config, sy_command hf_recg_config, sy_command hcf_recg_config, sy_command vcf_recg_config); 175 void finish_task_ss_analysis(int task_id, sy_command hp_analysis_config, sy_command hcp_analysis_config, sy_command vehicle_analysis_config, sy_command hf_recg_config, sy_command hcf_recg_config, sy_command vcf_recg_config);
254 - //针对车拆开的二次属性分析  
255 - void VehicleRecog_Process(sy_img * batch_img, int batchsize, vr_result *&vresult, OBJ_KEY* obj_keys); 176 +
256 void object_attri_analysis(); 177 void object_attri_analysis();
257 void snapshot_res_callback(OBJ_KEY obj_key,/* OBJ_VALUE obj_value,*/ void* analysisRes = NULL); 178 void snapshot_res_callback(OBJ_KEY obj_key,/* OBJ_VALUE obj_value,*/ void* analysisRes = NULL);
258 179
259 private: 180 private:
  181 + int save_snapshot(bool is_image, bool on_image_display, OBJ_KEY obj_key, char* filename, char* mode, float* imgData, int width, int height, int taskID, int objID, int recFlag, int left, int top, int right, int bottom);
  182 + int save_snapshot(bool is_image, bool on_image_display, OBJ_KEY obj_key, char* filename, char* mode, unsigned char* imgData, int width, int height, int taskID, int objID, int recFlag, int left, int top, int right, int bottom);
  183 + int save_snapshot(OBJ_KEY obj_key);
  184 + int save_face_snapshot(OBJ_KEY obj_key);
  185 +
  186 + void save_without_analysis(OBJ_KEY obj_key);
  187 +
  188 + //针对车拆开的二次属性分析
  189 + void VehicleRecog_Process(sy_img * batch_img, int batchsize, vr_result *&vresult, OBJ_KEY* obj_keys);
  190 +
  191 +private:
260 HumanCarParsing m_human_car_parsing; 192 HumanCarParsing m_human_car_parsing;
  193 +
  194 + queue<OBJ_KEY> count_person;
  195 + queue<OBJ_KEY> count_bike;
  196 + queue<OBJ_KEY> count_vehicle;
  197 +
  198 + vector<OBJ_KEY> count_vehicle_v; //车的二次属性分析拆为三部分时,不再使用队列,只能使用数组
  199 +
  200 + vector<vehicle_result> vehicle_result_v;
  201 +
  202 + sy_img * batch_hp = nullptr;
  203 + sy_img * batch_hcp = nullptr;
  204 + sy_img * batch_vehicle = nullptr;
  205 + sy_img * batch_vehicle_vf = nullptr;
  206 +
  207 + void * hp_handle = nullptr;
  208 + void * vc_handle = nullptr;
  209 + void * vp_handle = nullptr;
  210 + void * vr_handle = nullptr;
  211 + void * vrr_handle = nullptr;
  212 + void * nvf_handle = nullptr;
  213 + void * vhd_handle = nullptr;
  214 + void * vf_handle = nullptr;
  215 + sy_command hp_analysis_cf;
  216 + sy_command hcp_analysis_cf;
  217 + sy_command vehicle_analysis_cf;
  218 + sy_command hf_recg_cf;
  219 + sy_command hcf_recg_cf;
  220 + sy_command vcf_recg_cf;
  221 + sy_command vehicle_recg_cf;
  222 + sy_command vehicle_plate_det_recg_cf;
  223 + sy_command face_detect_cf;
  224 +
  225 + void * hf_handle = nullptr;
  226 + void * hcf_handle = nullptr;
  227 +
  228 + int count_vehivle_finishanalysis = 0;
  229 + int OBJ_SCALE = 2;
  230 + int OBJ_BATCH_COUNT = 0;
  231 + int OBJ_BATCH_COUNT_VEHICLE = 0;
  232 +
  233 + int hp_wait_count, hcp_wait_count, vehicle_wait_count;
  234 + int wait_framecount;
  235 +
  236 + std::thread* ProcessSnapshotThread;
  237 + std::vector<std::thread*> m_vec_writeThread;
  238 + bool m_bExit {false};
261 }; 239 };
262 \ No newline at end of file 240 \ No newline at end of file