Commit 938566bdf588fcdf4646ec38f164a1b3c63fa47c
1 parent
97243f56
删除无用代码;优化解码线程退出,避免任务结束时丢帧;代码优化
Showing
18 changed files
with
129 additions
and
270 deletions
.vscode/launch.json
@@ -2,29 +2,11 @@ | @@ -2,29 +2,11 @@ | ||
2 | "version": "0.2.0", | 2 | "version": "0.2.0", |
3 | "configurations": [ | 3 | "configurations": [ |
4 | { | 4 | { |
5 | - "name": "(gdb) Launch", | 5 | + "name": "mvpt", |
6 | "type": "cppdbg", | 6 | "type": "cppdbg", |
7 | "request": "launch", | 7 | "request": "launch", |
8 | "program": "${workspaceFolder}/Linux_3rdparty/video_structure_sdk_20220512/test", | 8 | "program": "${workspaceFolder}/Linux_3rdparty/video_structure_sdk_20220512/test", |
9 | - "args": ["file:///home/cmhu/data/video/Street.uvf?fastdecode=on","6","0","./db/mvpt.bin"], | ||
10 | - "stopAtEntry": false, | ||
11 | - "cwd": "${workspaceFolder}/Linux_3rdparty/video_structure_sdk_20220512", | ||
12 | - "environment": [], | ||
13 | - "externalConsole": false, | ||
14 | - "MIMode": "gdb", | ||
15 | - "setupCommands": [ | ||
16 | - { | ||
17 | - "description": "Enable pretty-printing for gdb", | ||
18 | - "text": "-enable-pretty-printing", | ||
19 | - "ignoreFailures": true | ||
20 | - } | ||
21 | - ] | ||
22 | - },{ | ||
23 | - "name": "test_ffnvdecoder", | ||
24 | - "type": "cppdbg", | ||
25 | - "request": "launch", | ||
26 | - "program": "${workspaceFolder}/Linux_3rdparty/video_structure_sdk_20220512/test", | ||
27 | - "args": ["/home/cmhu/data/video/Street.uvf","6","0","./db/mvpt.bin"], | 9 | + "args": ["/home/cmhu/data/video/123456-6.mp4","1","0","./db/mvpt.bin"], |
28 | "stopAtEntry": false, | 10 | "stopAtEntry": false, |
29 | "cwd": "${workspaceFolder}/Linux_3rdparty/video_structure_sdk_20220512", | 11 | "cwd": "${workspaceFolder}/Linux_3rdparty/video_structure_sdk_20220512", |
30 | "environment": [], | 12 | "environment": [], |
.vscode/settings.json
@@ -78,7 +78,8 @@ | @@ -78,7 +78,8 @@ | ||
78 | "numbers": "cpp", | 78 | "numbers": "cpp", |
79 | "semaphore": "cpp", | 79 | "semaphore": "cpp", |
80 | "stop_token": "cpp", | 80 | "stop_token": "cpp", |
81 | - "variant": "cpp" | 81 | + "variant": "cpp", |
82 | + "*.inc": "cpp" | ||
82 | }, | 83 | }, |
83 | "git.ignoreLimitWarning": true | 84 | "git.ignoreLimitWarning": true |
84 | } | 85 | } |
85 | \ No newline at end of file | 86 | \ No newline at end of file |
vehicle_structure_platform.git0708-3080-trt-face/src/FFNvDecoder/DxDecoderWrap.cpp
@@ -64,6 +64,7 @@ int DxDecoderWrap::DxOpenDecoder( const char * uri, unsigned int skip ) | @@ -64,6 +64,7 @@ int DxDecoderWrap::DxOpenDecoder( const char * uri, unsigned int skip ) | ||
64 | if(1 == m_decMode) { | 64 | if(1 == m_decMode) { |
65 | m_pDec->setDecKeyframe(true); | 65 | m_pDec->setDecKeyframe(true); |
66 | } | 66 | } |
67 | + m_bReal = m_pDec->isRealStream(); | ||
67 | m_pDec->start(); | 68 | m_pDec->start(); |
68 | LOG_INFO("[{}][{}]- 解码器初始化成功", m_name.c_str(), uri); | 69 | LOG_INFO("[{}][{}]- 解码器初始化成功", m_name.c_str(), uri); |
69 | return 0; | 70 | return 0; |
@@ -232,6 +233,10 @@ void DxDecoderWrap::post_decode_callback(GPUFrame * decodedFrame) { | @@ -232,6 +233,10 @@ void DxDecoderWrap::post_decode_callback(GPUFrame * decodedFrame) { | ||
232 | break; | 233 | break; |
233 | } else { | 234 | } else { |
234 | m_queue_frames_mutex.unlock(); | 235 | m_queue_frames_mutex.unlock(); |
236 | + if (m_bReal) { | ||
237 | + // 实时流不等待,直接弃帧 | ||
238 | + return; | ||
239 | + } | ||
235 | std::this_thread::sleep_for(std::chrono::milliseconds(10)); | 240 | std::this_thread::sleep_for(std::chrono::milliseconds(10)); |
236 | } | 241 | } |
237 | } | 242 | } |
vehicle_structure_platform.git0708-3080-trt-face/src/FFNvDecoder/DxDecoderWrap.h
vehicle_structure_platform.git0708-3080-trt-face/src/FFNvDecoder/FFNvDecoder.cpp
@@ -45,7 +45,6 @@ FFNvDecoder::FFNvDecoder() | @@ -45,7 +45,6 @@ FFNvDecoder::FFNvDecoder() | ||
45 | m_bReal = true; | 45 | m_bReal = true; |
46 | 46 | ||
47 | m_decode_thread = 0; | 47 | m_decode_thread = 0; |
48 | - m_post_decode_thread = 0; | ||
49 | 48 | ||
50 | m_bFinished = false; | 49 | m_bFinished = false; |
51 | m_dec_keyframe = false; | 50 | m_dec_keyframe = false; |
@@ -192,6 +191,8 @@ void FFNvDecoder::decode_thread() | @@ -192,6 +191,8 @@ void FFNvDecoder::decode_thread() | ||
192 | pkt = av_packet_alloc(); | 191 | pkt = av_packet_alloc(); |
193 | av_init_packet( pkt ); | 192 | av_init_packet( pkt ); |
194 | 193 | ||
194 | + m_bExitDisplay = false; | ||
195 | + pthread_t m_post_decode_thread = 0; | ||
195 | pthread_create(&m_post_decode_thread,0, | 196 | pthread_create(&m_post_decode_thread,0, |
196 | [](void* arg) | 197 | [](void* arg) |
197 | { | 198 | { |
@@ -255,6 +256,7 @@ void FFNvDecoder::decode_thread() | @@ -255,6 +256,7 @@ void FFNvDecoder::decode_thread() | ||
255 | if (result < 0){ | 256 | if (result < 0){ |
256 | av_packet_unref(pkt); | 257 | av_packet_unref(pkt); |
257 | LOG_ERROR("[{}] - Failed to send pkt: {}", m_dec_name, result); | 258 | LOG_ERROR("[{}] - Failed to send pkt: {}", m_dec_name, result); |
259 | + std::this_thread::sleep_for(std::chrono::milliseconds(3)); | ||
258 | continue; | 260 | continue; |
259 | } | 261 | } |
260 | 262 | ||
@@ -264,8 +266,10 @@ void FFNvDecoder::decode_thread() | @@ -264,8 +266,10 @@ void FFNvDecoder::decode_thread() | ||
264 | LOG_ERROR("[{}] - Failed to receive frame: {}", m_dec_name, result); | 266 | LOG_ERROR("[{}] - Failed to receive frame: {}", m_dec_name, result); |
265 | av_frame_free(&gpuFrame); | 267 | av_frame_free(&gpuFrame); |
266 | av_packet_unref(pkt); | 268 | av_packet_unref(pkt); |
269 | + std::this_thread::sleep_for(std::chrono::milliseconds(3)); | ||
267 | continue; | 270 | continue; |
268 | } | 271 | } |
272 | + | ||
269 | av_packet_unref(pkt); | 273 | av_packet_unref(pkt); |
270 | 274 | ||
271 | decoded_frame_count++; | 275 | decoded_frame_count++; |
@@ -295,8 +299,8 @@ void FFNvDecoder::decode_thread() | @@ -295,8 +299,8 @@ void FFNvDecoder::decode_thread() | ||
295 | // long end_time = get_cur_time(); | 299 | // long end_time = get_cur_time(); |
296 | // cout << "解码用时:" << end_time - start_time << endl; | 300 | // cout << "解码用时:" << end_time - start_time << endl; |
297 | 301 | ||
298 | - if (m_post_decode_thread != 0) | ||
299 | - { | 302 | + if (m_post_decode_thread != 0){ |
303 | + m_bExitDisplay = true; | ||
300 | pthread_join(m_post_decode_thread,0); | 304 | pthread_join(m_post_decode_thread,0); |
301 | } | 305 | } |
302 | 306 | ||
@@ -341,7 +345,7 @@ void FFNvDecoder::post_decode_thread(){ | @@ -341,7 +345,7 @@ void FFNvDecoder::post_decode_thread(){ | ||
341 | 345 | ||
342 | unsigned long long index = 0; | 346 | unsigned long long index = 0; |
343 | int frame_count = 0; | 347 | int frame_count = 0; |
344 | - while (m_bRunning) | 348 | + while (!m_bExitDisplay) |
345 | { | 349 | { |
346 | std::this_thread::sleep_for(std::chrono::milliseconds(2)); //给m_snapshot_mutex的喘息时间,避免截图一直截不到。避免线程资源占用。 | 350 | std::this_thread::sleep_for(std::chrono::milliseconds(2)); //给m_snapshot_mutex的喘息时间,避免截图一直截不到。避免线程资源占用。 |
347 | if(mFrameQueue.size() > 0){ | 351 | if(mFrameQueue.size() > 0){ |
@@ -429,4 +433,8 @@ float FFNvDecoder::fps(){ | @@ -429,4 +433,8 @@ float FFNvDecoder::fps(){ | ||
429 | 433 | ||
430 | unsigned long long FFNvDecoder::GetFrameCount() { | 434 | unsigned long long FFNvDecoder::GetFrameCount() { |
431 | return m_nb_frames; | 435 | return m_nb_frames; |
436 | +} | ||
437 | + | ||
438 | +bool FFNvDecoder::isRealStream() { | ||
439 | + return m_bReal; | ||
432 | } | 440 | } |
433 | \ No newline at end of file | 441 | \ No newline at end of file |
vehicle_structure_platform.git0708-3080-trt-face/src/FFNvDecoder/FFNvDecoder.h
@@ -33,6 +33,8 @@ public: | @@ -33,6 +33,8 @@ public: | ||
33 | 33 | ||
34 | DECODER_TYPE getDecoderType(){ return DECODER_TYPE_FFMPEG; } | 34 | DECODER_TYPE getDecoderType(){ return DECODER_TYPE_FFMPEG; } |
35 | 35 | ||
36 | + bool isRealStream(); | ||
37 | + | ||
36 | public: | 38 | public: |
37 | AVPixelFormat getHwPixFmt(); | 39 | AVPixelFormat getHwPixFmt(); |
38 | 40 | ||
@@ -50,9 +52,9 @@ private: | @@ -50,9 +52,9 @@ private: | ||
50 | AVPixelFormat hw_pix_fmt; | 52 | AVPixelFormat hw_pix_fmt; |
51 | 53 | ||
52 | pthread_t m_decode_thread; | 54 | pthread_t m_decode_thread; |
53 | - pthread_t m_post_decode_thread; | ||
54 | 55 | ||
55 | bool m_bRunning; | 56 | bool m_bRunning; |
57 | + bool m_bExitDisplay{false}; | ||
56 | bool m_bFinished; | 58 | bool m_bFinished; |
57 | 59 | ||
58 | bool m_bPause; | 60 | bool m_bPause; |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/MutliSourceVideoProcess.cpp
@@ -106,22 +106,11 @@ int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_IN | @@ -106,22 +106,11 @@ int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_IN | ||
106 | { | 106 | { |
107 | set_default_logger(LogLevel(1), "multi_source_process", "logs/main.log", 64 * 1024 * 1024, 30); | 107 | set_default_logger(LogLevel(1), "multi_source_process", "logs/main.log", 64 * 1024 * 1024, 30); |
108 | 108 | ||
109 | - // checkGpuMem(); | ||
110 | licence_status = -1; | 109 | licence_status = -1; |
111 | thrd_status = -1; | 110 | thrd_status = -1; |
112 | - //SetUnhandledExceptionFilter(CustomExceptionCrashHandler); | ||
113 | 111 | ||
114 | int ret = SUCCESS; | 112 | int ret = SUCCESS; |
115 | - /*DxLogConfig sCfg = { 0 }; | ||
116 | - sCfg.serviceID = vptParam.serviceID; | ||
117 | - sCfg.limitSize = vptParam.limitSize; | ||
118 | - strcpy(sCfg.name, vptParam.name); | ||
119 | - strcpy(sCfg.path, vptParam.path); | ||
120 | - DxInitializeLog(&sCfg);*/ | ||
121 | - | ||
122 | - /*printf("=====================��ȨERROR==================\n"); | ||
123 | - printf("=====================��ȨERROR==================\n"); | ||
124 | - printf("=====================��ȨERROR==================\n");*/ | 113 | + |
125 | #ifdef AUTHORIZATION | 114 | #ifdef AUTHORIZATION |
126 | #ifdef _WIN32 | 115 | #ifdef _WIN32 |
127 | if (SUCCESS == (ret = sy_licence(productSN))) | 116 | if (SUCCESS == (ret = sy_licence(productSN))) |
@@ -130,99 +119,87 @@ int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_IN | @@ -130,99 +119,87 @@ int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_IN | ||
130 | memset(wtime, 0, 15); | 119 | memset(wtime, 0, 15); |
131 | char * time = wtime; | 120 | char * time = wtime; |
132 | ret = sy_licence(productSN, &time); | 121 | ret = sy_licence(productSN, &time); |
133 | - if (SUCCESS == ret) | ||
134 | #endif | 122 | #endif |
135 | #else | 123 | #else |
136 | ret = license_check(vptParam.auth_license, productSN);// sy_time_check(2022, 2); | 124 | ret = license_check(vptParam.auth_license, productSN);// sy_time_check(2022, 2); |
137 | // ret = strcmp(AUTH_LICENSE, vptParam.auth_license); | 125 | // ret = strcmp(AUTH_LICENSE, vptParam.auth_license); |
138 | - if (ret == SUCCESS) | ||
139 | #endif | 126 | #endif |
127 | + if (ret != SUCCESS){ | ||
128 | + return AUTHOR_ERROR; | ||
129 | + } | ||
130 | + | ||
131 | + | ||
132 | + cuInit(0); | ||
133 | + int device_count = 0; | ||
134 | + cuDeviceGetCount(&device_count); | ||
135 | + | ||
136 | + if (vptParam.gpuid >= device_count) | ||
140 | { | 137 | { |
141 | - cuInit(0); | ||
142 | - int device_count = 0; | ||
143 | - cuDeviceGetCount(&device_count); | 138 | + printf("\nGPU_ID PARAM WRONG, gpuid: %d device_count: %d\n", vptParam.gpuid, device_count); |
139 | + return GPUID_PARAM_ERROR; | ||
140 | + } | ||
144 | 141 | ||
145 | - if (vptParam.gpuid >= device_count) | ||
146 | - { | ||
147 | - printf("\nGPU_ID PARAM WRONG, gpuid: %d device_count: %d\n", vptParam.gpuid, device_count); | ||
148 | - return GPUID_PARAM_ERROR; | ||
149 | - } | 142 | + CUdevice dev = 0; |
143 | + size_t memSize = 0; | ||
144 | + dev = vptParam.gpuid; | ||
150 | 145 | ||
151 | - CUdevice dev = 0; | ||
152 | - size_t memSize = 0; | ||
153 | - dev = vptParam.gpuid; | 146 | + CUresult rlt = CUDA_SUCCESS; |
147 | + rlt = cuDeviceTotalMem(&memSize, dev); | ||
154 | 148 | ||
155 | - CUresult rlt = CUDA_SUCCESS; | ||
156 | - rlt = cuDeviceTotalMem(&memSize, dev); | 149 | + gpu_total_memory = (float)memSize / (1024 * 1024); |
157 | 150 | ||
158 | - gpu_total_memory = (float)memSize / (1024 * 1024); | 151 | + if (gpu_total_memory < 9000) //8G�Դ棬С�ڴ淽�� |
152 | + section_batch_size = 10; | ||
153 | + else | ||
154 | + section_batch_size = 20; | ||
159 | 155 | ||
160 | - if (gpu_total_memory < 9000) //8G�Դ棬С�ڴ淽�� | ||
161 | - section_batch_size = 10; | ||
162 | - else | ||
163 | - section_batch_size = 20; | 156 | + if(vptParam.skip_frame > 0){ |
157 | + // 默认值为5 | ||
158 | + skip_frame_ = vptParam.skip_frame; | ||
159 | + } | ||
164 | 160 | ||
165 | - if(vptParam.skip_frame > 0){ | ||
166 | - // 默认值为5 | ||
167 | - skip_frame_ = vptParam.skip_frame; | ||
168 | - } | 161 | + mgpuid = vptParam.gpuid; |
162 | + ret = m_vptProcess.init(mgpuid, section_batch_size); | ||
163 | + if (0 != ret) | ||
164 | + return ret; | ||
169 | 165 | ||
170 | - mgpuid = vptParam.gpuid; | ||
171 | - ret = m_vptProcess.init(mgpuid, section_batch_size); | ||
172 | - if (0 != ret) | ||
173 | - return ret; | 166 | + viewTaskID = -1; |
167 | + TotalTask = 0; | ||
174 | 168 | ||
175 | - viewTaskID = -1; | ||
176 | - TaskinPlay = 0; | ||
177 | - TotalTask = 0; | 169 | + taskFinishCallbackFunc = nullptr; |
170 | + if (tFinishCallbackFunc != nullptr) | ||
171 | + taskFinishCallbackFunc = std::bind(tFinishCallbackFunc, this, std::placeholders::_1); | ||
172 | + | ||
173 | + taskObjInfoCallbackFunc = nullptr; | ||
174 | + if (tObjInfoCallbackFunc != nullptr) | ||
175 | + taskObjInfoCallbackFunc = std::bind(tObjInfoCallbackFunc, this, std::placeholders::_1); | ||
178 | 176 | ||
179 | - taskFinishCallbackFunc = nullptr; | ||
180 | - if (tFinishCallbackFunc != nullptr) | ||
181 | - taskFinishCallbackFunc = std::bind(tFinishCallbackFunc, this, std::placeholders::_1); | ||
182 | - | ||
183 | - taskObjInfoCallbackFunc = nullptr; | ||
184 | - if (tObjInfoCallbackFunc != nullptr) | ||
185 | - taskObjInfoCallbackFunc = std::bind(tObjInfoCallbackFunc, this, std::placeholders::_1); | 177 | + CommandConfig cmdConfig; |
178 | + cmdConfig.hp_analysis_config = vptParam.hp_analysis_config; | ||
179 | + cmdConfig.hcp_analysis_config = vptParam.hcp_analysis_config; | ||
180 | + cmdConfig.vehicle_analysis_config = vptParam.vehicle_analysis_config; | ||
181 | + cmdConfig.hf_recg_config = vptParam.hf_recg_config; | ||
182 | + cmdConfig.hcf_recg_config = vptParam.hcf_recg_config; | ||
183 | + cmdConfig.vcf_recg_config = vptParam.vcf_recg_config; | ||
184 | + cmdConfig.face_detect_config = vptParam.face_det_config; | ||
186 | 185 | ||
187 | - m_hp_analysis_config = vptParam.hp_analysis_config; | ||
188 | - m_hcp_analysis_config = vptParam.hcp_analysis_config; | ||
189 | - m_vehicle_analysis_config = vptParam.vehicle_analysis_config; | ||
190 | - m_hf_recg_config = vptParam.hf_recg_config; | ||
191 | - m_hcf_recg_config = vptParam.hcf_recg_config; | ||
192 | - m_vcf_recg_config = vptParam.vcf_recg_config; | ||
193 | - m_face_det_config = vptParam.face_det_config; | 186 | + m_face_det_config = vptParam.face_det_config; |
194 | 187 | ||
195 | - m_snaphot_helper.snapshot_helper_init(vptParam.gpuid, gpu_total_memory, vptParam.vrdbpath, vptParam.auth_license, vptParam.wait_framecount, m_hp_analysis_config, \ | ||
196 | - 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); | 188 | + m_snaphot_helper.snapshot_helper_init(vptParam.gpuid, gpu_total_memory, vptParam.vrdbpath, vptParam.auth_license, vptParam.wait_framecount, cmdConfig); |
197 | 189 | ||
198 | - m_bProcessExit = false; | ||
199 | - ProcessThread = std::thread(algorthim_process_thread, this); | 190 | + m_bProcessExit = false; |
191 | + ProcessThread = std::thread(algorthim_process_thread, this); | ||
200 | 192 | ||
201 | - if (ret == SUCCESS) //�ɹ� | ||
202 | - { | ||
203 | - licence_status = 0; | 193 | + if (ret == SUCCESS) //�ɹ� |
194 | + { | ||
195 | + licence_status = 0; | ||
204 | #ifdef AUTHORIZATION | 196 | #ifdef AUTHORIZATION |
205 | - m_bExit = false; | ||
206 | - thrd = std::thread(check_thread, this); | 197 | + m_bExit = false; |
198 | + thrd = std::thread(check_thread, this); | ||
207 | #endif | 199 | #endif |
208 | - thrd_status = 0; | ||
209 | - } | ||
210 | - | ||
211 | - } | ||
212 | - else | ||
213 | - { | ||
214 | - return AUTHOR_ERROR; | ||
215 | - } | ||
216 | -/* | ||
217 | -#ifdef AUTHORIZATION | ||
218 | -#ifdef __linux__ | ||
219 | - if (wtime) | ||
220 | - { | ||
221 | - delete[] wtime; | ||
222 | - wtime = NULL; | 200 | + thrd_status = 0; |
223 | } | 201 | } |
224 | -#endif | ||
225 | -#endif */ // debug by zsh | 202 | + |
226 | return ret; | 203 | return ret; |
227 | } | 204 | } |
228 | 205 | ||
@@ -234,7 +211,6 @@ void CMutliSourceVideoProcess::FinishTask(const int taskID) | @@ -234,7 +211,6 @@ void CMutliSourceVideoProcess::FinishTask(const int taskID) | ||
234 | 211 | ||
235 | Task& task = m_taskMap[taskID]; | 212 | Task& task = m_taskMap[taskID]; |
236 | 213 | ||
237 | - if (task.taskState == PLAY) TaskinPlay--; | ||
238 | task.taskState = FINISH; | 214 | task.taskState = FINISH; |
239 | task.taskFileSource = nullptr; | 215 | task.taskFileSource = nullptr; |
240 | task.taskObjCallbackFunc = nullptr; | 216 | task.taskObjCallbackFunc = nullptr; |
@@ -284,7 +260,6 @@ void CMutliSourceVideoProcess::PauseTask(const int taskID) | @@ -284,7 +260,6 @@ void CMutliSourceVideoProcess::PauseTask(const int taskID) | ||
284 | 260 | ||
285 | Task& task = m_taskMap[taskID]; | 261 | Task& task = m_taskMap[taskID]; |
286 | 262 | ||
287 | - if (task.taskState == PLAY) TaskinPlay--; | ||
288 | task.taskState = PAUSE; | 263 | task.taskState = PAUSE; |
289 | m_vptProcess.PauseTaskTracker(taskID); | 264 | m_vptProcess.PauseTaskTracker(taskID); |
290 | task.taskTcuvid->PauseDecoder(); | 265 | task.taskTcuvid->PauseDecoder(); |
@@ -301,7 +276,6 @@ void CMutliSourceVideoProcess::RestartTask(const int taskID) | @@ -301,7 +276,6 @@ void CMutliSourceVideoProcess::RestartTask(const int taskID) | ||
301 | Task& task = m_taskMap[taskID]; | 276 | Task& task = m_taskMap[taskID]; |
302 | 277 | ||
303 | task.taskState = PLAY; | 278 | task.taskState = PLAY; |
304 | - TaskinPlay++; | ||
305 | m_vptProcess.RestartTaskTraker(taskID); | 279 | m_vptProcess.RestartTaskTraker(taskID); |
306 | task.taskTcuvid->ResumeDecoder(); | 280 | task.taskTcuvid->ResumeDecoder(); |
307 | printf("-----------------------restart task: %d-----------------------\n", taskID); | 281 | printf("-----------------------restart task: %d-----------------------\n", taskID); |
@@ -464,7 +438,6 @@ bool CMutliSourceVideoProcess::AddTask(task_param tparam) //debug by zsh | @@ -464,7 +438,6 @@ bool CMutliSourceVideoProcess::AddTask(task_param tparam) //debug by zsh | ||
464 | m_taskMap[new_task.taskID] = new_task; | 438 | m_taskMap[new_task.taskID] = new_task; |
465 | 439 | ||
466 | TotalTask++; | 440 | TotalTask++; |
467 | - TaskinPlay++; | ||
468 | 441 | ||
469 | m_vptProcess.AddTaskTracker(new_task.taskID, width, height); | 442 | m_vptProcess.AddTaskTracker(new_task.taskID, width, height); |
470 | 443 | ||
@@ -645,19 +618,14 @@ void CMutliSourceVideoProcess::callTaskObjInfoCallbackFunc(const VPT_Result& vpt | @@ -645,19 +618,14 @@ void CMutliSourceVideoProcess::callTaskObjInfoCallbackFunc(const VPT_Result& vpt | ||
645 | 618 | ||
646 | } | 619 | } |
647 | } | 620 | } |
621 | + | ||
648 | void CMutliSourceVideoProcess::algorthim_process() | 622 | void CMutliSourceVideoProcess::algorthim_process() |
649 | { | 623 | { |
650 | - int count = 0; | ||
651 | - | ||
652 | - DxGPUFrame frame = {}; | ||
653 | - | ||
654 | cudaSetDevice(mgpuid); | 624 | cudaSetDevice(mgpuid); |
655 | 625 | ||
656 | int total_count = 0; | 626 | int total_count = 0; |
657 | long long begintime1 =get_cur_time_ms(); | 627 | long long begintime1 =get_cur_time_ms(); |
658 | 628 | ||
659 | - int process_times = 0; | ||
660 | - | ||
661 | long long last_time = get_cur_time_ms(); | 629 | long long last_time = get_cur_time_ms(); |
662 | while (!m_bProcessExit) { | 630 | while (!m_bProcessExit) { |
663 | 631 | ||
@@ -696,6 +664,7 @@ void CMutliSourceVideoProcess::algorthim_process() | @@ -696,6 +664,7 @@ void CMutliSourceVideoProcess::algorthim_process() | ||
696 | } | 664 | } |
697 | 665 | ||
698 | if (vec_dxGpuFrame.size() <= 0) { | 666 | if (vec_dxGpuFrame.size() <= 0) { |
667 | + std::this_thread::sleep_for(std::chrono::milliseconds(5)); | ||
699 | continue; | 668 | continue; |
700 | } | 669 | } |
701 | 670 | ||
@@ -876,14 +845,6 @@ void CMutliSourceVideoProcess::algorthim_process() | @@ -876,14 +845,6 @@ void CMutliSourceVideoProcess::algorthim_process() | ||
876 | task.taskRealTimeCallbackFunc(task.frameImage.data, task.frameImage.rows, task.frameImage.cols); | 845 | task.taskRealTimeCallbackFunc(task.frameImage.data, task.frameImage.rows, task.frameImage.cols); |
877 | } | 846 | } |
878 | } | 847 | } |
879 | - | ||
880 | - { | ||
881 | - cudaError_t cudaStatus = cudaGetLastError(); | ||
882 | - if (cudaStatus != cudaSuccess) { | ||
883 | - LOG_ERROR("result last error: {}", cudaGetErrorString(cudaStatus)); | ||
884 | - } | ||
885 | - } | ||
886 | - | ||
887 | 848 | ||
888 | 849 | ||
889 | #ifdef LOG_INFO2 | 850 | #ifdef LOG_INFO2 |
@@ -903,26 +864,17 @@ void CMutliSourceVideoProcess::algorthim_process() | @@ -903,26 +864,17 @@ void CMutliSourceVideoProcess::algorthim_process() | ||
903 | } | 864 | } |
904 | } | 865 | } |
905 | 866 | ||
906 | - | ||
907 | - for (auto task_algorithm_data: vec_dxGpuFrame) { | ||
908 | - cudaFree(task_algorithm_data.frame); | ||
909 | - task_algorithm_data.frame = nullptr; | ||
910 | - } | ||
911 | - | ||
912 | - | ||
913 | - { | ||
914 | - cudaError_t cudaStatus = cudaGetLastError(); | ||
915 | - if (cudaStatus != cudaSuccess) { | ||
916 | - LOG_ERROR("cudaFree last error: {}", cudaGetErrorString(cudaStatus)); | ||
917 | - } | ||
918 | - } | ||
919 | - | ||
920 | m_snaphot_helper.object_attri_analysis(); | 867 | m_snaphot_helper.object_attri_analysis(); |
921 | cudaError_t cudaStatus = cudaGetLastError(); | 868 | cudaError_t cudaStatus = cudaGetLastError(); |
922 | if (cudaStatus != cudaSuccess) { | 869 | if (cudaStatus != cudaSuccess) { |
923 | LOG_ERROR("object_attri_analysis last error: {}", cudaGetErrorString(cudaStatus)); | 870 | LOG_ERROR("object_attri_analysis last error: {}", cudaGetErrorString(cudaStatus)); |
924 | } | 871 | } |
925 | 872 | ||
873 | + for (auto task_algorithm_data: vec_dxGpuFrame) { | ||
874 | + cudaFree(task_algorithm_data.frame); | ||
875 | + task_algorithm_data.frame = nullptr; | ||
876 | + } | ||
877 | + | ||
926 | #ifdef LOG_INFO2 | 878 | #ifdef LOG_INFO2 |
927 | long long second_analysis_time2 = get_cur_time_ms(); | 879 | long long second_analysis_time2 = get_cur_time_ms(); |
928 | cout << "second_analysis time_using:" << second_analysis_time2 - second_analysis_time << endl; | 880 | cout << "second_analysis time_using:" << second_analysis_time2 - second_analysis_time << endl; |
@@ -940,7 +892,7 @@ void CMutliSourceVideoProcess::algorthim_process() | @@ -940,7 +892,7 @@ void CMutliSourceVideoProcess::algorthim_process() | ||
940 | m_snaphot_helper.clearSnapshotInfo(); | 892 | m_snaphot_helper.clearSnapshotInfo(); |
941 | 893 | ||
942 | long long costTime1 = get_cur_time_ms() - begintime1; | 894 | long long costTime1 = get_cur_time_ms() - begintime1; |
943 | - LOG_INFO("Process Thread is Finished. total frame cost time = {} ms, process times: {}", costTime1, process_times); | 895 | + LOG_INFO("Process Thread is Finished. total frame cost time = {} ms", costTime1); |
944 | } | 896 | } |
945 | 897 | ||
946 | int CMutliSourceVideoProcess::GetRuningNb() { | 898 | int CMutliSourceVideoProcess::GetRuningNb() { |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/MutliSourceVideoProcess.h
@@ -136,9 +136,7 @@ public: | @@ -136,9 +136,7 @@ public: | ||
136 | int skip_frame_ {5}; // 控制跳帧参数 | 136 | int skip_frame_ {5}; // 控制跳帧参数 |
137 | map<int, Task> m_taskMap; | 137 | map<int, Task> m_taskMap; |
138 | int AddTaskSucFlag; //0:��ʼ��״̬ 1����������ɹ� -1����������ʧ�� | 138 | int AddTaskSucFlag; //0:��ʼ��״̬ 1����������ɹ� -1����������ʧ�� |
139 | - int TaskinPlay; | ||
140 | int TotalTask; | 139 | int TotalTask; |
141 | - set<int> TaskinPlayID; | ||
142 | 140 | ||
143 | int viewTaskID; | 141 | int viewTaskID; |
144 | 142 |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/VPTProcess.cpp
@@ -289,6 +289,8 @@ vector<VPTProcessResult> VPTProcess::process(vector<DataInfo> vec_data) { | @@ -289,6 +289,8 @@ vector<VPTProcessResult> VPTProcess::process(vector<DataInfo> vec_data) { | ||
289 | cout << "FrameIndex error !! lastFrameIndex= " << task_tracker.lastFrameIndex << " cur_frameindex = " << det_result_info.ts << endl; | 289 | cout << "FrameIndex error !! lastFrameIndex= " << task_tracker.lastFrameIndex << " cur_frameindex = " << det_result_info.ts << endl; |
290 | } | 290 | } |
291 | 291 | ||
292 | + cout << "update_times " << update_times << endl; | ||
293 | + | ||
292 | for (int j = 0; j < update_times; j++) { // 无检测框跟踪 | 294 | for (int j = 0; j < update_times; j++) { // 无检测框跟踪 |
293 | VPT_Result unresult; | 295 | VPT_Result unresult; |
294 | unresult.objCount = task_tracker.tracker.update(task_tracker.ratioWidth, task_tracker.ratioHeight, false, task_tracker.lastDetectResult, unresult.obj, task_tracker.lastDeleteObjectID); | 296 | unresult.objCount = task_tracker.tracker.update(task_tracker.ratioWidth, task_tracker.ratioHeight, false, task_tracker.lastDetectResult, unresult.obj, task_tracker.lastDeleteObjectID); |
@@ -308,96 +310,8 @@ vector<VPTProcessResult> VPTProcess::process(vector<DataInfo> vec_data) { | @@ -308,96 +310,8 @@ vector<VPTProcessResult> VPTProcess::process(vector<DataInfo> vec_data) { | ||
308 | 310 | ||
309 | vec_result.push_back(oneResult); | 311 | vec_result.push_back(oneResult); |
310 | } | 312 | } |
311 | -} | ||
312 | - | ||
313 | -int VPTProcess::process(sy_img * batch_img, int batchsize, vector<unsigned long long> vec_frameIndex, vector<VPT_Result>& result, vector<vector<int>>& deleteObjectID, vector<vector<VPT_Result>>& unUsedResult) | ||
314 | -{ | ||
315 | - if(nullptr == det_handle){ | ||
316 | - return FAILED; | ||
317 | - } | ||
318 | - | ||
319 | - long long t1 = get_cur_time_ms(); | ||
320 | - | ||
321 | - vector <vector< vector <float>>> detectResult(batchsize); | ||
322 | - int real_index = 0; | ||
323 | - | ||
324 | - int cycle_time = batchsize / m_max_batch_size; | ||
325 | - cycle_time = (batchsize % m_max_batch_size) == 0 ? cycle_time : (cycle_time + 1) ; | ||
326 | - vector<sy_img> vec_img; | ||
327 | - for (int i = 0; i < cycle_time; i++) { | ||
328 | - vec_img.clear(); | ||
329 | - | ||
330 | - int start_index = i * m_max_batch_size; | ||
331 | - int end_index = start_index + m_max_batch_size; | ||
332 | - if(end_index >= batchsize) { | ||
333 | - end_index = batchsize; | ||
334 | - } | ||
335 | - for (int j = start_index; j < end_index; j++) { | ||
336 | - vec_img.push_back(batch_img[j]); | ||
337 | - } | ||
338 | - | ||
339 | - ctools_result *detresult; | ||
340 | - int res_status = ctools_process(det_handle, vec_img.data(), vec_img.size(), &detresult); | ||
341 | - | ||
342 | - for (size_t b = 0; b < vec_img.size(); b++) { | ||
343 | - ctools_result &cur_result = detresult[b]; | ||
344 | - for (int c = 0; c < cur_result.obj_count_ && c < MAX_OBJ_COUNT; c++) | ||
345 | - { | ||
346 | - float x1 = cur_result.obj_results_[c].data_[2]; | ||
347 | - float y1 = cur_result.obj_results_[c].data_[3]; | ||
348 | - float x2 = cur_result.obj_results_[c].data_[4]; | ||
349 | - float y2 = cur_result.obj_results_[c].data_[5]; | ||
350 | - | ||
351 | - float class_id = cur_result.obj_results_[c].data_[0]; | ||
352 | - float score = cur_result.obj_results_[c].data_[1]; | ||
353 | - | ||
354 | - if (score >= THRESHOLD) | ||
355 | - { | ||
356 | - vector <float> obj; | ||
357 | - | ||
358 | - obj.push_back(x1); | ||
359 | - obj.push_back(y1); | ||
360 | - obj.push_back(x2); | ||
361 | - obj.push_back(y2); | ||
362 | - obj.push_back(score); | ||
363 | - obj.push_back(class_id); | ||
364 | - detectResult[real_index].push_back(obj); | ||
365 | - } | ||
366 | - } | ||
367 | - real_index++; | ||
368 | - } | ||
369 | - } | ||
370 | - | ||
371 | - for (int i = 0; i < batchsize; i++) { | ||
372 | - TaskTracker& task_tracker = m_taskTrackerMap[i]; | ||
373 | - if (!task_tracker.tracker.GetState()) { | ||
374 | - continue; | ||
375 | - } | ||
376 | 313 | ||
377 | - if (task_tracker.lastFrameIndex > 0) { | ||
378 | - // 非第一帧 | ||
379 | - int update_times = vec_frameIndex[i] - task_tracker.lastFrameIndex - 1; | ||
380 | - if (update_times < 0) { | ||
381 | - cout << "FrameIndex error !! lastFrameIndex= " << task_tracker.lastFrameIndex << " cur_frameindex = " << vec_frameIndex[i] << endl; | ||
382 | - } | ||
383 | - | ||
384 | - for (int j = 0; j < update_times; j++) { // 无检测框跟踪 | ||
385 | - VPT_Result unresult; | ||
386 | - unresult.objCount = task_tracker.tracker.update(task_tracker.ratioWidth, task_tracker.ratioHeight, false, task_tracker.lastDetectResult, unresult.obj, task_tracker.lastDeleteObjectID); | ||
387 | - check_VPT_Result(unresult); | ||
388 | - unUsedResult[i].push_back(unresult); | ||
389 | - } | ||
390 | - } | ||
391 | - result[i].objCount = task_tracker.tracker.update(task_tracker.ratioWidth, task_tracker.ratioHeight, true, detectResult[i], result[i].obj, deleteObjectID[i]); | ||
392 | - | ||
393 | - check_VPT_Result(result[i]); | ||
394 | - | ||
395 | - task_tracker.lastDetectResult = detectResult[i]; | ||
396 | - task_tracker.lastDeleteObjectID = deleteObjectID[i]; | ||
397 | - | ||
398 | - // 记录帧序号 | ||
399 | - task_tracker.lastFrameIndex = vec_frameIndex[i]; | ||
400 | - } | 314 | + return vec_result; |
401 | } | 315 | } |
402 | 316 | ||
403 | void VPTProcess::release() { | 317 | void VPTProcess::release() { |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/VPTProcess.h
@@ -61,18 +61,7 @@ public: | @@ -61,18 +61,7 @@ public: | ||
61 | 61 | ||
62 | /************************************************************************* | 62 | /************************************************************************* |
63 | * PURPOSE: 人车物检测跟踪 | 63 | * PURPOSE: 人车物检测跟踪 |
64 | - * PARAM: | ||
65 | - [in] handle - 处理句柄 | ||
66 | - [in] rgb - 图片数据(3通道BGR数据 cv::Mat格式) | ||
67 | - [in] width - 图片宽度 | ||
68 | - [in] height - 图片高度 | ||
69 | - [in] result - 搜索结果,在外部申请足够内存 | ||
70 | - [in] deleteObjectID - 删除的轨迹ID号 | ||
71 | - [out] traffic - 交通流量结果结构体 内存在外部申请,大小与初始化时流量监测线个数相同,设置为NULL时不返回 | ||
72 | - * RETURN: -1:图像错误; 其他:检测到的个数 | ||
73 | - * NOTES: | ||
74 | *************************************************************************/ | 64 | *************************************************************************/ |
75 | - int process(sy_img * batch_img, int batchsize, vector<unsigned long long> vec_frameIndex, vector<VPT_Result>& result, vector<vector<int>>& deleteObjectID, vector<vector<VPT_Result>>& unUsedResult); | ||
76 | 65 | ||
77 | vector<VPTProcessResult> process(vector<DataInfo> vec_data); | 66 | vector<VPTProcessResult> process(vector<DataInfo> vec_data); |
78 | 67 | ||
@@ -85,8 +74,6 @@ public: | @@ -85,8 +74,6 @@ public: | ||
85 | *************************************************************************/ | 74 | *************************************************************************/ |
86 | void release(); | 75 | void release(); |
87 | 76 | ||
88 | - | ||
89 | - | ||
90 | void AddTaskTracker(const int taskID, const double rWidth, const double rHeight); | 77 | void AddTaskTracker(const int taskID, const double rWidth, const double rHeight); |
91 | void FinishTaskTracker(const int taskID); | 78 | void FinishTaskTracker(const int taskID); |
92 | void PauseTaskTracker(const int taskID); | 79 | void PauseTaskTracker(const int taskID); |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/common.h
@@ -117,4 +117,16 @@ typedef struct VPT_Result | @@ -117,4 +117,16 @@ typedef struct VPT_Result | ||
117 | }VPT_Result; | 117 | }VPT_Result; |
118 | 118 | ||
119 | 119 | ||
120 | +struct CommandConfig { | ||
121 | + sy_command hp_analysis_config; | ||
122 | + sy_command hcp_analysis_config; | ||
123 | + sy_command vehicle_analysis_config; | ||
124 | + sy_command vehicle_recg_config; | ||
125 | + sy_command vehicle_plate_det_recg_config; | ||
126 | + sy_command hf_recg_config; | ||
127 | + sy_command hcf_recg_config; | ||
128 | + sy_command vcf_recg_config; | ||
129 | + sy_command face_detect_config; | ||
130 | +}; | ||
131 | + | ||
120 | #endif | 132 | #endif |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/snapshot_analysis/HumanCarParsing.cpp
@@ -91,6 +91,7 @@ int HumanCarParsing::process(sy_img * batch_img, int batch_size, hcp_analysis_re | @@ -91,6 +91,7 @@ int HumanCarParsing::process(sy_img * batch_img, int batch_size, hcp_analysis_re | ||
91 | return SUCCESS; | 91 | return SUCCESS; |
92 | 92 | ||
93 | } | 93 | } |
94 | + | ||
94 | int HumanCarParsing::release() | 95 | int HumanCarParsing::release() |
95 | { | 96 | { |
96 | if(handle) { | 97 | if(handle) { |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/snapshot_analysis/VehicleColor.h
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/snapshot_analysis/VehicleRearRecg.cpp
@@ -33,6 +33,7 @@ int VehicleRearRecg::init(char*dbpath, int gpuid, char* auth_license) | @@ -33,6 +33,7 @@ int VehicleRearRecg::init(char*dbpath, int gpuid, char* auth_license) | ||
33 | LOG_INFO("vrr_init success! gpu_id: {}", gpuid); | 33 | LOG_INFO("vrr_init success! gpu_id: {}", gpuid); |
34 | return SUCCESS; | 34 | return SUCCESS; |
35 | } | 35 | } |
36 | + | ||
36 | int VehicleRearRecg::process(sy_img * batch_img, int batchsize, vehicle_rear_result *&vr_result) | 37 | int VehicleRearRecg::process(sy_img * batch_img, int batchsize, vehicle_rear_result *&vr_result) |
37 | { | 38 | { |
38 | for (int i = 0; i < batchsize; i++) | 39 | for (int i = 0; i < batchsize; i++) |
@@ -47,6 +48,7 @@ int VehicleRearRecg::process(sy_img * batch_img, int batchsize, vehicle_rear_res | @@ -47,6 +48,7 @@ int VehicleRearRecg::process(sy_img * batch_img, int batchsize, vehicle_rear_res | ||
47 | 48 | ||
48 | return SUCCESS; | 49 | return SUCCESS; |
49 | } | 50 | } |
51 | + | ||
50 | int VehicleRearRecg::release() | 52 | int VehicleRearRecg::release() |
51 | { | 53 | { |
52 | if (handle) { | 54 | if (handle) { |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/snapshot_analysis/snapshot_helper.cpp
@@ -15,8 +15,6 @@ using namespace std; | @@ -15,8 +15,6 @@ using namespace std; | ||
15 | string ObjTypes[9] = { "行人", "自行车", "摩托车", "三轮车", "小型车", "大车", "卡车", "拖拉机", "中巴" }; | 15 | string ObjTypes[9] = { "行人", "自行车", "摩托车", "三轮车", "小型车", "大车", "卡车", "拖拉机", "中巴" }; |
16 | string ObjTypesEnglish[9] = { "person", "bike", "motor", "tricycle", "car", "bigbus", "lorry", "tractor", "midibus" }; | 16 | string ObjTypesEnglish[9] = { "person", "bike", "motor", "tricycle", "car", "bigbus", "lorry", "tractor", "midibus" }; |
17 | 17 | ||
18 | -extern int minDistance[]; | ||
19 | - | ||
20 | #ifdef _MSC_VER | 18 | #ifdef _MSC_VER |
21 | char* GbkToUtf8(const char *src_str) | 19 | char* GbkToUtf8(const char *src_str) |
22 | { | 20 | { |
@@ -85,16 +83,15 @@ void SnapshotImageWriteThreadProcess(const void * userPtr){ | @@ -85,16 +83,15 @@ void SnapshotImageWriteThreadProcess(const void * userPtr){ | ||
85 | } | 83 | } |
86 | } | 84 | } |
87 | 85 | ||
88 | -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, \ | ||
89 | - 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) | 86 | +void snapshot_helper::snapshot_helper_init(int gpuid, double gpu_total_memory, char* dbpath, char* auth_license, int wait_framecount, CommandConfig cmdConfig) |
90 | { | 87 | { |
91 | - hp_analysis_cf = hp_analysis_config; | ||
92 | - hcp_analysis_cf = hcp_analysis_config; | ||
93 | - vehicle_analysis_cf = vehicle_analysis_config; | ||
94 | - hf_recg_cf = hf_recg_config; | ||
95 | - hcf_recg_cf = hcf_recg_config; | ||
96 | - vcf_recg_cf = vcf_recg_config; | ||
97 | - face_detect_cf = face_detect_config; | 88 | + hp_analysis_cf = cmdConfig.hp_analysis_config; |
89 | + hcp_analysis_cf = cmdConfig.hcp_analysis_config; | ||
90 | + vehicle_analysis_cf = cmdConfig.vehicle_analysis_config; | ||
91 | + hf_recg_cf = cmdConfig.hf_recg_config; | ||
92 | + hcf_recg_cf = cmdConfig.hcf_recg_config; | ||
93 | + vcf_recg_cf = cmdConfig.vcf_recg_config; | ||
94 | + face_detect_cf = cmdConfig.face_detect_config; | ||
98 | char* dbpath_utf8 = nullptr; | 95 | char* dbpath_utf8 = nullptr; |
99 | #ifdef _MSC_VER | 96 | #ifdef _MSC_VER |
100 | //dbpath_utf8 = GbkToUtf8(dbpath); | 97 | //dbpath_utf8 = GbkToUtf8(dbpath); |
@@ -2067,8 +2064,8 @@ CropInfo snapshot_helper::cacheSnapShotInfo(OBJ_KEY newObj, VPT_ObjInfo obj, sy_ | @@ -2067,8 +2064,8 @@ CropInfo snapshot_helper::cacheSnapShotInfo(OBJ_KEY newObj, VPT_ObjInfo obj, sy_ | ||
2067 | 2064 | ||
2068 | int left = max(0, (int)(obj.left - boundaryLittle)); | 2065 | int left = max(0, (int)(obj.left - boundaryLittle)); |
2069 | int top = max(0, (int)(obj.top - boundaryLittle)); | 2066 | int top = max(0, (int)(obj.top - boundaryLittle)); |
2070 | - int right = min({ frameWidth - 1, (int)(obj.right + boundaryLittle) }); | ||
2071 | - int bottom = min({ frameHeight - 1, (int)(obj.bottom + boundaryLittle) }); | 2067 | + int right = min(frameWidth - 1, (int)(obj.right + boundaryLittle) ); |
2068 | + int bottom = min(frameHeight - 1, (int)(obj.bottom + boundaryLittle) ); | ||
2072 | snapShotInfo[newObj].frameCount = dxGpuFrame.timestamp; | 2069 | snapShotInfo[newObj].frameCount = dxGpuFrame.timestamp; |
2073 | snapShotInfo[newObj].isupdate = true; | 2070 | snapShotInfo[newObj].isupdate = true; |
2074 | snapShotInfo[newObj].lost = 0; | 2071 | snapShotInfo[newObj].lost = 0; |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/snapshot_analysis/snapshot_helper.h
@@ -166,8 +166,9 @@ public: | @@ -166,8 +166,9 @@ public: | ||
166 | std::mutex finishedThreadMutex; | 166 | std::mutex finishedThreadMutex; |
167 | 167 | ||
168 | V_ANALYSIS_TYPE v_analysis; | 168 | V_ANALYSIS_TYPE v_analysis; |
169 | - void snapshot_helper_init(int gpuid, double gpu_total_memory, char* dbpath, char* auth_license, int wait_framecount, sy_command hp_analysis_config, \ | ||
170 | - 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); | 169 | + |
170 | + void snapshot_helper_init(int gpuid, double gpu_total_memory, char* dbpath, char* auth_license, int wait_framecount, CommandConfig cmdConfig); | ||
171 | + | ||
171 | void snapshot_helper_release(); | 172 | void snapshot_helper_release(); |
172 | void add_task_info(int new_task_id, TASK_INFO new_task_info); | 173 | void add_task_info(int new_task_id, TASK_INFO new_task_info); |
173 | void delete_task_info(int new_task_id, TASK_INFO new_task_info); | 174 | void delete_task_info(int new_task_id, TASK_INFO new_task_info); |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/sort/Sort.h
@@ -66,12 +66,10 @@ private: | @@ -66,12 +66,10 @@ private: | ||
66 | bool istraffic = 0; //by zl 是否统计交通量 | 66 | bool istraffic = 0; //by zl 是否统计交通量 |
67 | //vector <mylist> tracker; | 67 | //vector <mylist> tracker; |
68 | bool WORK = false; | 68 | bool WORK = false; |
69 | - bool m_bYOLOv5 = true; | 69 | + bool m_bYOLOv5 {true}; |
70 | 70 | ||
71 | private: | 71 | private: |
72 | void associate_detections_to_trackers(vector< vector<int> > &matched, vector<int> &unmatched_dets, vector<int> &unmatched_trks, vector< vector<float> > &dets, vector< vector<float> > &trks, float iou_threshold = 0.3); | 72 | void associate_detections_to_trackers(vector< vector<int> > &matched, vector<int> &unmatched_dets, vector<int> &unmatched_trks, vector< vector<float> > &dets, vector< vector<float> > &trks, float iou_threshold = 0.3); |
73 | - //int addTracker(VPT_ObjInfo *result, int resultcount); | ||
74 | - int Traffic(); | ||
75 | }; | 73 | }; |
76 | //辅助函数 | 74 | //辅助函数 |
77 | void RectboundCheck(int Width, int Height, VPT_ObjInfo * result); //防止坐标越界 by zl | 75 | void RectboundCheck(int Width, int Height, VPT_ObjInfo * result); //防止坐标越界 by zl |
vehicle_structure_platform.git0708-3080-trt-face/src/test/main.cpp
@@ -686,7 +686,7 @@ void create_task(const char * videoFileName, int total_index) { | @@ -686,7 +686,7 @@ void create_task(const char * videoFileName, int total_index) { | ||
686 | strcpy(tparam.video_filename, videoFileName); | 686 | strcpy(tparam.video_filename, videoFileName); |
687 | tparam.on_image_display = false; | 687 | tparam.on_image_display = false; |
688 | tparam.jpeg_quality = 30; //debug by zsh | 688 | tparam.jpeg_quality = 30; //debug by zsh |
689 | - tparam.decMode = 1; // 关键帧解码 | 689 | + tparam.decMode = 0; // 关键帧解码 |
690 | 690 | ||
691 | //tparam.video_filename = argv[total_index%4]; | 691 | //tparam.video_filename = argv[total_index%4]; |
692 | memcpy(tparam.minBoxsize, m_boxsize, sizeof(sy_rect)* DETECTTYPE); | 692 | memcpy(tparam.minBoxsize, m_boxsize, sizeof(sy_rect)* DETECTTYPE); |
@@ -741,7 +741,7 @@ int main(int argc, char* argv[]) | @@ -741,7 +741,7 @@ int main(int argc, char* argv[]) | ||
741 | vptParam.wait_framecount = 30; | 741 | vptParam.wait_framecount = 30; |
742 | vptParam.serviceID = 0; | 742 | vptParam.serviceID = 0; |
743 | vptParam.limitSize = (10 << 20); | 743 | vptParam.limitSize = (10 << 20); |
744 | - vptParam.skip_frame = 1; | 744 | + vptParam.skip_frame = 12; |
745 | strcat(vptParam.name, "gbrealtime"); | 745 | strcat(vptParam.name, "gbrealtime"); |
746 | strcat(vptParam.path, "./log/"); | 746 | strcat(vptParam.path, "./log/"); |
747 | int flag = mvpt_init(&handle, vptParam); | 747 | int flag = mvpt_init(&handle, vptParam); |
@@ -788,7 +788,7 @@ int main(int argc, char* argv[]) | @@ -788,7 +788,7 @@ int main(int argc, char* argv[]) | ||
788 | break; | 788 | break; |
789 | } | 789 | } |
790 | 790 | ||
791 | - } while(1) ; | 791 | + } while(0) ; |
792 | 792 | ||
793 | // printf("-------------------Begin rt_view_task 1 !----------------------\n"); | 793 | // printf("-------------------Begin rt_view_task 1 !----------------------\n"); |
794 | // rt_view_task(handle, 0); | 794 | // rt_view_task(handle, 0); |