Commit dce94814c6d00e95f07ba7877ff13fff259965e3

Authored by Hu Chunming
1 parent 3eab27ba

同步windows代码

.vscode/launch.json
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
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","1","0","./db/mvpt.bin"], 9 + "args": ["file:///home/cmhu/data/video/Street.uvf","2","0","./db/mvpt.bin"],
10 "stopAtEntry": false, 10 "stopAtEntry": false,
11 "cwd": "${workspaceFolder}/Linux_3rdparty/video_structure_sdk_20220512", 11 "cwd": "${workspaceFolder}/Linux_3rdparty/video_structure_sdk_20220512",
12 "environment": [], 12 "environment": [],
vehicle_structure_platform.git0708-3080-trt-face/linux/VPT/Makefile
@@ -60,7 +60,7 @@ INCLUDE= -I $(OPENCV_ROOT)/include/opencv4 \ @@ -60,7 +60,7 @@ INCLUDE= -I $(OPENCV_ROOT)/include/opencv4 \
60 60
61 LIBSPATH=-L/usr/local/cuda/lib64 -lcuda -lcudart -lcurand -lcublas \ 61 LIBSPATH=-L/usr/local/cuda/lib64 -lcuda -lcudart -lcurand -lcublas \
62 -L/usr/lib/x86_64-linux-gnu -lnvcuvid \ 62 -L/usr/lib/x86_64-linux-gnu -lnvcuvid \
63 - -L$(DEPEND_DIR)/video_structure_sdk_20220512 -lSfxDecoder -lSfxStreamHandler \ 63 + -L$(DEPEND_DIR)/video_structure_sdk_20220512 -lSfxDecoder -lSfxStreamHandler -lSfxTranscoder -lSfxLog -lSfxHttpServer -lSfxNetwork\
64 -L$(DEPEND_DIR)/video_structure_sdk_20220512 -lface_detect -lvehicle_recognize -lvehicle_color -lhuman_parsing -lhuman_car_parsing -lnon_vehicle_fea_trt -lvehicle_rear_recognition -lvehicle_fea_int8 -lvehicle_plate_dr -lvpd2 \ 64 -L$(DEPEND_DIR)/video_structure_sdk_20220512 -lface_detect -lvehicle_recognize -lvehicle_color -lhuman_parsing -lhuman_car_parsing -lnon_vehicle_fea_trt -lvehicle_rear_recognition -lvehicle_fea_int8 -lvehicle_plate_dr -lvpd2 \
65 -L$(UTOOLS_SSD_ROOT) -l:libutools.so \ 65 -L$(UTOOLS_SSD_ROOT) -l:libutools.so \
66 -L$(DEPEND_DIR)/lib -l:liblibjasper.a -l:libIlmImf.a -l:liblibjpeg.a -l:liblibtiff.a -l:liblibpng.a \ 66 -L$(DEPEND_DIR)/lib -l:liblibjasper.a -l:libIlmImf.a -l:liblibjpeg.a -l:liblibtiff.a -l:liblibpng.a \
@@ -70,7 +70,7 @@ LIBSPATH=-L/usr/local/cuda/lib64 -lcuda -lcudart -lcurand -lcublas \ @@ -70,7 +70,7 @@ LIBSPATH=-L/usr/local/cuda/lib64 -lcuda -lcudart -lcurand -lcublas \
70 -L $(SPDLOG_ROOT)/lib -l:libspdlog.a \ 70 -L $(SPDLOG_ROOT)/lib -l:libspdlog.a \
71 71
72 72
73 -CFLAGS_LIB=-g -O2 -Wall -Wno-deprecated $(DEFS) -lz -ldl -lpthread -fPIC -fvisibility=hidden -Wl,-Bsymbolic 73 +CFLAGS_LIB=-g -O0 -Wall -Wno-deprecated $(DEFS) -lz -ldl -lpthread -fPIC -fvisibility=hidden -Wl,-Bsymbolic
74 CFLAGS = $(CFLAGS_LIB) $(INCLUDE) -std=c++11 -DUSE_CUDNN 74 CFLAGS = $(CFLAGS_LIB) $(INCLUDE) -std=c++11 -DUSE_CUDNN
75 # -DUNICODE -D_UNICODE 75 # -DUNICODE -D_UNICODE
76 NFLAGS_LIB=-g -c $(DEFS) -shared -Xcompiler -fPIC -Xcompiler -fvisibility=hidden 76 NFLAGS_LIB=-g -c $(DEFS) -shared -Xcompiler -fPIC -Xcompiler -fvisibility=hidden
vehicle_structure_platform.git0708-3080-trt-face/src/SfxDecoder/DxDecoderWrap.cpp
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
4 #include "ColorSpace.h" 4 #include "ColorSpace.h"
5 5
6 #include "sfx_depend_inc.h" 6 #include "sfx_depend_inc.h"
  7 +#include "opencv2/opencv.hpp"
7 8
8 #include <iostream> 9 #include <iostream>
9 10
@@ -58,7 +59,11 @@ bool DxDecoderWrap::isStream(string sVideoFileName) { @@ -58,7 +59,11 @@ bool DxDecoderWrap::isStream(string sVideoFileName) {
58 if (pos == 0) { 59 if (pos == 0) {
59 int n = target.size(); 60 int n = target.size();
60 sVideoFileName = sVideoFileName.erase(pos, n); 61 sVideoFileName = sVideoFileName.erase(pos, n);
  62 + }else {
  63 + // 非file 开头,直接判为视频流
  64 + return true;
61 } 65 }
  66 +
62 pos = sVideoFileName.find_first_of('?'); 67 pos = sVideoFileName.find_first_of('?');
63 if (pos != string::npos) { 68 if (pos != string::npos) {
64 sVideoFileName = sVideoFileName.substr(0, pos); 69 sVideoFileName = sVideoFileName.substr(0, pos);
@@ -78,9 +83,13 @@ bool DxDecoderWrap::isStream(string sVideoFileName) { @@ -78,9 +83,13 @@ bool DxDecoderWrap::isStream(string sVideoFileName) {
78 83
79 int DxDecoderWrap::DxOpenDecoder(const DxConfig& cfg) 84 int DxDecoderWrap::DxOpenDecoder(const DxConfig& cfg)
80 { 85 {
  86 + cout << "before check: " << cfg.uri << endl;
  87 +
81 //判断是否为实时流 88 //判断是否为实时流
82 m_bReal = isStream(cfg.uri); 89 m_bReal = isStream(cfg.uri);
83 90
  91 + cout << "before check: " << cfg.uri << endl;
  92 +
84 m_nums = 0; 93 m_nums = 0;
85 m_bPause = false; 94 m_bPause = false;
86 95
@@ -93,6 +102,8 @@ int DxDecoderWrap::DxOpenDecoder(const DxConfig&amp; cfg) @@ -93,6 +102,8 @@ int DxDecoderWrap::DxOpenDecoder(const DxConfig&amp; cfg)
93 m_cfg.userPtr = this; 102 m_cfg.userPtr = this;
94 m_cfg.escbk = CUDADecoder_Callback; 103 m_cfg.escbk = CUDADecoder_Callback;
95 m_cfg.logcbk = DecoderLog_Callback; 104 m_cfg.logcbk = DecoderLog_Callback;
  105 + m_cfg.log_all = cfg.log_all;
  106 + m_cfg.log_user_ptr = cfg.log_user_ptr;
96 m_cfg.devId = cfg.devId; 107 m_cfg.devId = cfg.devId;
97 m_cfg.uri = cfg.uri; 108 m_cfg.uri = cfg.uri;
98 m_cfg.dec_name = cfg.name; 109 m_cfg.dec_name = cfg.name;
@@ -101,6 +112,8 @@ int DxDecoderWrap::DxOpenDecoder(const DxConfig&amp; cfg) @@ -101,6 +112,8 @@ int DxDecoderWrap::DxOpenDecoder(const DxConfig&amp; cfg)
101 m_name = cfg.name; 112 m_name = cfg.name;
102 m_devId = cfg.devId; 113 m_devId = cfg.devId;
103 114
  115 + cout << "before open: " << m_cfg.uri << endl;
  116 +
104 bool bRet= m_pDec->OpenDecoder(m_cfg); 117 bool bRet= m_pDec->OpenDecoder(m_cfg);
105 if (bRet) 118 if (bRet)
106 { 119 {
@@ -285,7 +298,29 @@ void DxDecoderWrap::DxCUDADecoderCallback( void * buf, unsigned int size, int wi @@ -285,7 +298,29 @@ void DxDecoderWrap::DxCUDADecoderCallback( void * buf, unsigned int size, int wi
285 return ; 298 return ;
286 } 299 }
287 300
288 - Nv12ToColor24<BGR24>((unsigned char*)buf, width, pHwData, 3 * width, width, height, 0); 301 + // Nv12ToColor24<BGR24>((unsigned char*)buf, m_width, pHwData, 3 * m_width, m_width, m_height, 0);
  302 +
  303 +
  304 + cudaStatus = cudaMemcpy(pHwData, buf, rgbSize * sizeof(unsigned char), cudaMemcpyDeviceToDevice);
  305 +
  306 +
  307 + // int rgb_size = 3 * m_width * m_height;
  308 + // unsigned char* cpu_data = new unsigned char[rgb_size];
  309 + // cudaStatus = cudaMemcpy(cpu_data, pHwData, rgb_size * sizeof(unsigned char), cudaMemcpyDeviceToHost);
  310 +
  311 + // if (timestamp > 245 && timestamp < 255)
  312 + // {
  313 + // string file_name = "./nv12/"+to_string(timestamp) + ".txt";
  314 + // FILE* fp=fopen(file_name.c_str(),"wb");
  315 + // fwrite(cpu_data, rgb_size, 1, fp);
  316 + // fclose(fp);
  317 + // }
  318 +
  319 + // cv::Mat img(m_height, m_width, CV_8UC3, cpu_data);
  320 + // cv::imwrite("test.jpg", img);
  321 + // delete[] cpu_data;
  322 + // cpu_data = nullptr;
  323 +
289 324
290 DxGPUFrame frame; 325 DxGPUFrame frame;
291 frame.width = m_width; 326 frame.width = m_width;
@@ -309,7 +344,7 @@ void DxDecoderWrap::DxCUDADecoderCallback( void * buf, unsigned int size, int wi @@ -309,7 +344,7 @@ void DxDecoderWrap::DxCUDADecoderCallback( void * buf, unsigned int size, int wi
309 return; 344 return;
310 } 345 }
311 346
312 - std::cout << "waiting queue " << frame_nb << std::endl; 347 + // std::cout << "waiting queue " << frame_nb << std::endl;
313 std::this_thread::sleep_for(std::chrono::milliseconds(10)); 348 std::this_thread::sleep_for(std::chrono::milliseconds(10));
314 } 349 }
315 } 350 }
vehicle_structure_platform.git0708-3080-trt-face/src/SfxDecoder/DxDecoderWrap.h
@@ -27,6 +27,9 @@ typedef struct DxConfig @@ -27,6 +27,9 @@ typedef struct DxConfig
27 int skip_frame; 27 int skip_frame;
28 28
29 string uri; 29 string uri;
  30 +
  31 + LOG_ALL_CALLBACK log_all;
  32 + void* log_user_ptr;
30 }DxConfig; 33 }DxConfig;
31 34
32 typedef struct DxGPUFrame 35 typedef struct DxGPUFrame
@@ -78,7 +81,7 @@ public: @@ -78,7 +81,7 @@ public:
78 public: 81 public:
79 string GetName() {return m_name;}; 82 string GetName() {return m_name;};
80 bool isStream(string sVideoFileName); 83 bool isStream(string sVideoFileName);
81 - 84 +
82 void DxCUDADecoderCallback(void * buf, unsigned int size, int width, int height, unsigned long long timestamp ); 85 void DxCUDADecoderCallback(void * buf, unsigned int size, int width, int height, unsigned long long timestamp );
83 int DxDecoderLogCallback(DxLogLevel level, const char * log, unsigned int logLen ); 86 int DxDecoderLogCallback(DxLogLevel level, const char * log, unsigned int logLen );
84 87
vehicle_structure_platform.git0708-3080-trt-face/src/SfxDecoder/SfxDecoder.cpp
@@ -2,9 +2,14 @@ @@ -2,9 +2,14 @@
2 2
3 #include <thread> 3 #include <thread>
4 #include <chrono> 4 #include <chrono>
  5 +#include <iostream>
5 6
6 #include "sfx_depend_inc.h" 7 #include "sfx_depend_inc.h"
7 8
  9 +#include "cuda_kernels.h"
  10 +#include <fstream>
  11 +#include <iostream>
  12 +
8 using namespace std; 13 using namespace std;
9 14
10 SfxDecoder::SfxDecoder( ) 15 SfxDecoder::SfxDecoder( )
@@ -42,13 +47,15 @@ bool SfxDecoder::OpenDecoder(DxDecoderConfig&amp; cfg) @@ -42,13 +47,15 @@ bool SfxDecoder::OpenDecoder(DxDecoderConfig&amp; cfg)
42 sfx_cfg->flags.useFastDecode = 0; 47 sfx_cfg->flags.useFastDecode = 0;
43 sfx_cfg->flags.accelId = m_cfg.devId; 48 sfx_cfg->flags.accelId = m_cfg.devId;
44 sfx_cfg->flags.frameNumber = 1; 49 sfx_cfg->flags.frameNumber = 1;
45 - sfx_cfg->flags.fmt = SFX_VIDEO_FORMAT_NV12U8;  
46 - //sfx_cfg->flags.fmt = SFX_VIDEO_FORMAT_C3BGRU8; 50 + // sfx_cfg->flags.fmt = SFX_VIDEO_FORMAT_NV12U8;
  51 + sfx_cfg->flags.fmt = SFX_VIDEO_FORMAT_C3BGRU8;
47 52
48 m_handler = SfxStreamHandlerInterface::SfxGetInstance(sfx_cfg); 53 m_handler = SfxStreamHandlerInterface::SfxGetInstance(sfx_cfg);
49 54
50 m_dec_name = m_cfg.dec_name; 55 m_dec_name = m_cfg.dec_name;
51 56
  57 + cout << "open: " << m_cfg.uri << endl;
  58 +
52 int nRet = m_handler->SfxOpenStreamHandler( m_cfg.uri.c_str() ); 59 int nRet = m_handler->SfxOpenStreamHandler( m_cfg.uri.c_str() );
53 if (nRet != 0) { 60 if (nRet != 0) {
54 m_bRun = false; 61 m_bRun = false;
@@ -63,10 +70,12 @@ bool SfxDecoder::OpenDecoder(DxDecoderConfig&amp; cfg) @@ -63,10 +70,12 @@ bool SfxDecoder::OpenDecoder(DxDecoderConfig&amp; cfg)
63 70
64 int SfxDecoder::CloseDecoder() 71 int SfxDecoder::CloseDecoder()
65 { 72 {
66 - m_handler->SfxCloseStreamHandler();  
67 - while (m_bRun)  
68 - {  
69 - std::this_thread::sleep_for(std::chrono::milliseconds(250)); 73 + if (sfx_null != m_handler) { // linux待同步
  74 + m_handler->SfxCloseStreamHandler();
  75 + while (m_bRun)
  76 + {
  77 + std::this_thread::sleep_for(std::chrono::milliseconds(250));
  78 + }
70 } 79 }
71 80
72 return 0; 81 return 0;
@@ -128,9 +137,7 @@ sfx_32 SfxDecoder::SfxLogDefaultHandler( @@ -128,9 +137,7 @@ sfx_32 SfxDecoder::SfxLogDefaultHandler(
128 sfx_u32 logLen 137 sfx_u32 logLen
129 ) 138 )
130 { 139 {
131 - SfxDecoder * pThis = sfx_null;  
132 -  
133 - pThis = ( SfxDecoder * )userPtr; 140 + SfxDecoder * pThis = ( SfxDecoder * )userPtr;
134 141
135 if ( SFX_LOG_LEVEL_IMPORTANT == level) //modify by zsh 220602 142 if ( SFX_LOG_LEVEL_IMPORTANT == level) //modify by zsh 220602
136 { 143 {
@@ -138,19 +145,17 @@ sfx_32 SfxDecoder::SfxLogDefaultHandler( @@ -138,19 +145,17 @@ sfx_32 SfxDecoder::SfxLogDefaultHandler(
138 return 0; 145 return 0;
139 } 146 }
140 147
141 -  
142 if ( SFX_LOG_LEVEL_CLEANUP == level ) 148 if ( SFX_LOG_LEVEL_CLEANUP == level )
143 { 149 {
144 pThis->m_bRun = sfx_false; 150 pThis->m_bRun = sfx_false;
145 if ( pThis->m_cfg.logcbk ) 151 if ( pThis->m_cfg.logcbk )
146 { 152 {
147 - pThis->m_cfg.logcbk(  
148 - pThis->m_cfg.userPtr,  
149 - DX_LOG_LEVEL_CLEANUP,  
150 - "DxDecoder[CUDA] module exited..",  
151 - 0  
152 - ); 153 + pThis->m_cfg.logcbk( pThis->m_cfg.userPtr, DX_LOG_LEVEL_CLEANUP, "DxDecoder[CUDA] module exited..", 0 );
153 } 154 }
  155 + }
  156 + else if (pThis->m_cfg.log_all)
  157 + {
  158 + pThis->m_cfg.log_all(pThis->m_cfg.log_user_ptr, (int)level, log, logLen);
154 } 159 }
155 160
156 return 0; 161 return 0;
vehicle_structure_platform.git0708-3080-trt-face/src/SfxDecoder/SfxDecoder.h
@@ -21,12 +21,17 @@ typedef enum DxLogLevel @@ -21,12 +21,17 @@ typedef enum DxLogLevel
21 typedef int (*DxLogHandler)( const void * userPtr, DxLogLevel level, const char * log, unsigned int logLen ); 21 typedef int (*DxLogHandler)( const void * userPtr, DxLogLevel level, const char * log, unsigned int logLen );
22 22
23 23
  24 +typedef void(*LOG_ALL_CALLBACK)(const void * userPtr, int log_level, const char* log, unsigned int logLen);
  25 +
  26 +
24 typedef void (*DXDECODER_CALLBACK)( const void * userPtr, void * buf, unsigned int size, int width, int height, unsigned long long timestamp ); 27 typedef void (*DXDECODER_CALLBACK)( const void * userPtr, void * buf, unsigned int size, int width, int height, unsigned long long timestamp );
25 28
26 29
27 typedef struct DxDecoderConfig 30 typedef struct DxDecoderConfig
28 { 31 {
29 DxLogHandler logcbk; // 日志回调接口 32 DxLogHandler logcbk; // 日志回调接口
  33 + LOG_ALL_CALLBACK log_all{nullptr};
  34 + void* log_user_ptr{nullptr};
30 const void * userPtr; // 用户数据 35 const void * userPtr; // 用户数据
31 DXDECODER_CALLBACK escbk; // 解码后帧数据回调接口 36 DXDECODER_CALLBACK escbk; // 解码后帧数据回调接口
32 int devId; 37 int devId;
vehicle_structure_platform.git0708-3080-trt-face/src/SfxDecoder/SfxEnv.hpp 0 → 100644
  1 +#include "SfxStreamHandlerInterface.h"
  2 +
  3 +
  4 +using namespace std;
  5 +
  6 +class SfxEnv {
  7 +public:
  8 + static void init(){
  9 + static SfxEnv* singleton = nullptr;
  10 + if (singleton == nullptr){
  11 + singleton = new SfxEnv();
  12 + }
  13 + return ;
  14 + }
  15 +
  16 +private:
  17 + SfxEnv(){
  18 + SfxStreamHandlerInterface::SfxInitialize(100);
  19 + }
  20 +
  21 + ~SfxEnv(){
  22 + SfxStreamHandlerInterface::SfxUninitialize();
  23 + }
  24 +};
0 \ No newline at end of file 25 \ No newline at end of file
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/MutliSourceVideoProcess.cpp
@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
13 13
14 #include "../utils/logger.hpp" 14 #include "../utils/logger.hpp"
15 #include "../cuda_src/CropImg.h" 15 #include "../cuda_src/CropImg.h"
  16 +#include "../SfxDecoder/SfxEnv.hpp"
16 17
17 18
18 #define AUTHORIZATION 19 #define AUTHORIZATION
@@ -101,9 +102,9 @@ int CMutliSourceVideoProcess::FinishProcessThread() @@ -101,9 +102,9 @@ int CMutliSourceVideoProcess::FinishProcessThread()
101 AI_LOG_LEVEL_WARNING = 3, // 警告日志通知,模块一切正常(如:重要流程通知) 102 AI_LOG_LEVEL_WARNING = 3, // 警告日志通知,模块一切正常(如:重要流程通知)
102 AI_LOG_LEVEL_ERROR = 4, // 重要日志,如结果和严重错误 103 AI_LOG_LEVEL_ERROR = 4, // 重要日志,如结果和严重错误
103 */ 104 */
104 -int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_INFO_CALLBACK tObjInfoCallbackFunc, VIDEO_FINISH_CALLBACK tFinishCallbackFunc) 105 +int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_INFO_CALLBACK tObjInfoCallbackFunc)
105 { 106 {
106 - set_default_logger(LogLevel(1), "multi_source_process", "logs/main.log", 64 * 1024 * 1024, 30); 107 + set_default_logger(LogLevel(vptParam.serviceID), vptParam.name, vptParam.path, 64 * 1024 * 1024, 30);
107 108
108 licence_status = -1; 109 licence_status = -1;
109 thrd_status = -1; 110 thrd_status = -1;
@@ -127,6 +128,7 @@ int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_IN @@ -127,6 +128,7 @@ int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_IN
127 return AUTHOR_ERROR; 128 return AUTHOR_ERROR;
128 } 129 }
129 130
  131 + SfxEnv::init();
130 132
131 cuInit(0); 133 cuInit(0);
132 int device_count = 0; 134 int device_count = 0;
@@ -164,10 +166,6 @@ int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_IN @@ -164,10 +166,6 @@ int CMutliSourceVideoProcess::InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_IN
164 166
165 viewTaskID = -1; 167 viewTaskID = -1;
166 TotalTask = 0; 168 TotalTask = 0;
167 -  
168 - taskFinishCallbackFunc = nullptr;  
169 - if (tFinishCallbackFunc != nullptr)  
170 - taskFinishCallbackFunc = std::bind(tFinishCallbackFunc, this, std::placeholders::_1);  
171 169
172 taskObjInfoCallbackFunc = nullptr; 170 taskObjInfoCallbackFunc = nullptr;
173 if (tObjInfoCallbackFunc != nullptr) 171 if (tObjInfoCallbackFunc != nullptr)
@@ -242,9 +240,9 @@ void CMutliSourceVideoProcess::FinishTask(const int taskID) @@ -242,9 +240,9 @@ void CMutliSourceVideoProcess::FinishTask(const int taskID)
242 task.taskTcuvid = NULL; 240 task.taskTcuvid = NULL;
243 241
244 //回调通知上层任务结束 242 //回调通知上层任务结束
245 - if (taskFinishCallbackFunc != nullptr) { 243 + if (task.taskFinishCallbackFunc != nullptr) {
246 std::lock_guard<std::mutex> l(m_snaphot_helper.callback_tx); 244 std::lock_guard<std::mutex> l(m_snaphot_helper.callback_tx);
247 - taskFinishCallbackFunc(task.taskID); 245 + task.taskFinishCallbackFunc(task.taskID);
248 } 246 }
249 247
250 LOG_INFO("task {} is finished. timeusing: {}", taskID, get_cur_time_ms() - task.timestamp); 248 LOG_INFO("task {} is finished. timeusing: {}", taskID, get_cur_time_ms() - task.timestamp);
@@ -329,6 +327,8 @@ bool CMutliSourceVideoProcess::AddTask(task_param tparam) //debug by zsh @@ -329,6 +327,8 @@ bool CMutliSourceVideoProcess::AddTask(task_param tparam) //debug by zsh
329 return false; 327 return false;
330 } 328 }
331 329
  330 + cout << "AddTask: " << new_task.taskFileSource << endl;
  331 +
332 DxConfig cfg = { 0 }; 332 DxConfig cfg = { 0 };
333 cfg.devId = mgpuid; 333 cfg.devId = mgpuid;
334 cfg.forceTcp = false; 334 cfg.forceTcp = false;
@@ -336,6 +336,8 @@ bool CMutliSourceVideoProcess::AddTask(task_param tparam) //debug by zsh @@ -336,6 +336,8 @@ bool CMutliSourceVideoProcess::AddTask(task_param tparam) //debug by zsh
336 cfg.name = std::to_string(new_task.taskID); 336 cfg.name = std::to_string(new_task.taskID);
337 cfg.skip_frame = skip_frame_; 337 cfg.skip_frame = skip_frame_;
338 cfg.uri = new_task.taskFileSource; 338 cfg.uri = new_task.taskFileSource;
  339 + cfg.log_all = (LOG_ALL_CALLBACK)tparam.log;
  340 + cfg.log_user_ptr = tparam.userPtr;
339 if (new_task.taskTcuvid->DxOpenDecoder(cfg) != 0) 341 if (new_task.taskTcuvid->DxOpenDecoder(cfg) != 0)
340 { 342 {
341 cout << "Add Task Failed! Please check you video file name!" << endl; 343 cout << "Add Task Failed! Please check you video file name!" << endl;
@@ -353,11 +355,15 @@ bool CMutliSourceVideoProcess::AddTask(task_param tparam) //debug by zsh @@ -353,11 +355,15 @@ bool CMutliSourceVideoProcess::AddTask(task_param tparam) //debug by zsh
353 355
354 new_task.taskObjCallbackFunc = nullptr; 356 new_task.taskObjCallbackFunc = nullptr;
355 if (objCallbackFunc != nullptr) 357 if (objCallbackFunc != nullptr)
356 - new_task.taskObjCallbackFunc = std::bind(objCallbackFunc, this, std::placeholders::_1); 358 + new_task.taskObjCallbackFunc = std::bind(objCallbackFunc, tparam.userPtr, std::placeholders::_1);
357 359
358 new_task.taskRealTimeCallbackFunc = nullptr; 360 new_task.taskRealTimeCallbackFunc = nullptr;
359 if (realTimeCallbackFunc != nullptr) 361 if (realTimeCallbackFunc != nullptr)
360 - new_task.taskRealTimeCallbackFunc = std::bind(realTimeCallbackFunc, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); 362 + new_task.taskRealTimeCallbackFunc = std::bind(realTimeCallbackFunc, tparam.userPtr, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
  363 +
  364 + new_task.taskFinishCallbackFunc = nullptr;
  365 + if (tparam.tFinishCallbackFunc != nullptr)
  366 + new_task.taskFinishCallbackFunc = std::bind(tparam.tFinishCallbackFunc, tparam.userPtr, std::placeholders::_1);
361 367
362 if (resultFolderLittle == NULL) 368 if (resultFolderLittle == NULL)
363 { 369 {
@@ -459,9 +465,14 @@ int CMutliSourceVideoProcess::AddOperator(task_param tparam) @@ -459,9 +465,14 @@ int CMutliSourceVideoProcess::AddOperator(task_param tparam)
459 newOper.decMode = tparam.decMode; 465 newOper.decMode = tparam.decMode;
460 newOper.taskObjCallbackFunc = tparam.obj_snapshot_callback_func; 466 newOper.taskObjCallbackFunc = tparam.obj_snapshot_callback_func;
461 newOper.taskRealTimeCallbackFunc = tparam.rt_view_callback_func; 467 newOper.taskRealTimeCallbackFunc = tparam.rt_view_callback_func;
  468 + newOper.tFinishCallbackFunc = tparam.tFinishCallbackFunc;
  469 + newOper.taskSfxLogFunc = tparam.log;
  470 + newOper.logUserPtr = tparam.userPtr;
462 memcpy(newOper.minBoxsize, tparam.minBoxsize, sizeof(sy_rect)* DETECTTYPE); 471 memcpy(newOper.minBoxsize, tparam.minBoxsize, sizeof(sy_rect)* DETECTTYPE);
463 TaskOperatorQ.push_back(newOper); 472 TaskOperatorQ.push_back(newOper);
464 taskCondVar.wait_for(l, std::chrono::seconds(20)); 473 taskCondVar.wait_for(l, std::chrono::seconds(20));
  474 +
  475 + cout << "AddOperator: " << newOper.videoFileName << endl;
465 } 476 }
466 477
467 int addRes = -1; 478 int addRes = -1;
@@ -534,7 +545,13 @@ void CMutliSourceVideoProcess::OperatorTask() @@ -534,7 +545,13 @@ void CMutliSourceVideoProcess::OperatorTask()
534 memcpy(tparam.minBoxsize, newOperator.minBoxsize, sizeof(sy_rect)* DETECTTYPE); 545 memcpy(tparam.minBoxsize, newOperator.minBoxsize, sizeof(sy_rect)* DETECTTYPE);
535 tparam.obj_snapshot_callback_func = newOperator.taskObjCallbackFunc; 546 tparam.obj_snapshot_callback_func = newOperator.taskObjCallbackFunc;
536 tparam.rt_view_callback_func = newOperator.taskRealTimeCallbackFunc; 547 tparam.rt_view_callback_func = newOperator.taskRealTimeCallbackFunc;
  548 + tparam.tFinishCallbackFunc = newOperator.tFinishCallbackFunc;
537 tparam.decMode = newOperator.decMode; 549 tparam.decMode = newOperator.decMode;
  550 + tparam.log = newOperator.taskSfxLogFunc;
  551 + tparam.userPtr = newOperator.logUserPtr;
  552 +
  553 + cout << "before AddTask: " << tparam.video_filename << endl;
  554 +
538 AddTask(tparam); 555 AddTask(tparam);
539 } 556 }
540 break; 557 break;
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/MutliSourceVideoProcess.h
@@ -99,7 +99,11 @@ struct Operator{ @@ -99,7 +99,11 @@ struct Operator{
99 TaskOperator changeTaskOperator; 99 TaskOperator changeTaskOperator;
100 VIDEO_OBJECT_SNAPSHOT_CALLBACK taskObjCallbackFunc; 100 VIDEO_OBJECT_SNAPSHOT_CALLBACK taskObjCallbackFunc;
101 VIDEO_REALTIME_CALLBACK taskRealTimeCallbackFunc; 101 VIDEO_REALTIME_CALLBACK taskRealTimeCallbackFunc;
  102 + VIDEO_FINISH_CALLBACK tFinishCallbackFunc;
102 sy_rect minBoxsize[DETECTTYPE]; 103 sy_rect minBoxsize[DETECTTYPE];
  104 +
  105 + SFX_LOG_CALLBACK taskSfxLogFunc;
  106 + void* logUserPtr;
103 }; 107 };
104 108
105 109
@@ -109,7 +113,7 @@ public: @@ -109,7 +113,7 @@ public:
109 CMutliSourceVideoProcess(); 113 CMutliSourceVideoProcess();
110 ~CMutliSourceVideoProcess(); 114 ~CMutliSourceVideoProcess();
111 115
112 - int InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_INFO_CALLBACK tObjInfoCallbackFunc, VIDEO_FINISH_CALLBACK tFinishCallbackFunc); 116 + int InitAlgorthim(mvpt_param vptParam, VIDEO_OBJECT_INFO_CALLBACK tObjInfoCallbackFunc);
113 117
114 int get_task_progress(int taskid, double & progress); 118 int get_task_progress(int taskid, double & progress);
115 void OperatorTask(); 119 void OperatorTask();
@@ -140,8 +144,7 @@ public: @@ -140,8 +144,7 @@ public:
140 144
141 int viewTaskID; 145 int viewTaskID;
142 146
143 - FINISH_CALLBACK taskFinishCallbackFunc;  
144 - OBJECT_INFO_CALLBACK taskObjInfoCallbackFunc; 147 + OBJECT_INFO_CALLBACK taskObjInfoCallbackFunc {nullptr};
145 148
146 std::mutex taskMutex; 149 std::mutex taskMutex;
147 std::condition_variable taskCondVar; 150 std::condition_variable taskCondVar;
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/VPTProcess.cpp
@@ -44,6 +44,7 @@ static long long get_cur_time_ms(){ @@ -44,6 +44,7 @@ static long long get_cur_time_ms(){
44 44
45 VPTProcess::VPTProcess(/* args */) 45 VPTProcess::VPTProcess(/* args */)
46 { 46 {
  47 + m_taskTrackerMap.clear();
47 } 48 }
48 49
49 VPTProcess::~VPTProcess() 50 VPTProcess::~VPTProcess()
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/common.h
@@ -86,6 +86,7 @@ struct Task{ @@ -86,6 +86,7 @@ struct Task{
86 int taskTotalFrameCount{1}; 86 int taskTotalFrameCount{1};
87 SNAPSHOT_CALLBACK taskObjCallbackFunc; 87 SNAPSHOT_CALLBACK taskObjCallbackFunc;
88 REALTIME_CALLBACK taskRealTimeCallbackFunc; 88 REALTIME_CALLBACK taskRealTimeCallbackFunc;
  89 + FINISH_CALLBACK taskFinishCallbackFunc{nullptr};
89 cv::Mat frameImage; 90 cv::Mat frameImage;
90 char* folderNameLittle; 91 char* folderNameLittle;
91 char* folderName; 92 char* folderName;
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/header.h
@@ -85,6 +85,7 @@ typedef struct vplate_num @@ -85,6 +85,7 @@ typedef struct vplate_num
85 { 85 {
86 char character[4]; 86 char character[4];
87 float maxprob; 87 float maxprob;
  88 + int index;
88 }vplate_num; 89 }vplate_num;
89 #endif 90 #endif
90 91
@@ -96,7 +97,12 @@ typedef struct vplate_result @@ -96,7 +97,12 @@ typedef struct vplate_result
96 float detect_score; 97 float detect_score;
97 vplate_num recg[PLATENUM]; 98 vplate_num recg[PLATENUM];
98 float num_score; 99 float num_score;
99 - int type; //车牌类型 100 + int type; //车牌类型。只做车牌检测,车牌类型为:0-单层车牌,1-双层车牌;做车牌检测识别,0-单排蓝色 1-单排黄色 2-单排白色 3-单排黑色 4-双排黄色 5-双排白色 6-新能源黄绿色 7-新能源白绿色
  101 +
  102 + int state; //车牌状态:0-无车牌,1-车牌,2-遮挡车牌
  103 + float state_score;//车牌状态置信度
  104 +
  105 + sy_point rr_point[4];//斜框
100 }vplate_result; 106 }vplate_result;
101 #endif 107 #endif
102 108
@@ -219,11 +225,16 @@ typedef void(*VIDEO_REALTIME_CALLBACK)(void * handle, unsigned char *img_data, i @@ -219,11 +225,16 @@ typedef void(*VIDEO_REALTIME_CALLBACK)(void * handle, unsigned char *img_data, i
219 typedef void(*VIDEO_FINISH_CALLBACK)(void * handle, const int task_id); 225 typedef void(*VIDEO_FINISH_CALLBACK)(void * handle, const int task_id);
220 226
221 227
  228 +typedef void(*SFX_LOG_CALLBACK)(void * userPtr, int log_level, const char* log, unsigned int logLen);
  229 +
  230 +
222 //TASK初始化参数 231 //TASK初始化参数
223 #ifndef __TASK_PARAM__ 232 #ifndef __TASK_PARAM__
224 #define __TASK_PARAM__ 233 #define __TASK_PARAM__
225 typedef struct task_param 234 typedef struct task_param
226 { 235 {
  236 + void* userPtr;
  237 + SFX_LOG_CALLBACK log;
227 char video_filename[256]; 238 char video_filename[256];
228 char result_folder_little[256]; 239 char result_folder_little[256];
229 char result_folder[256]; 240 char result_folder[256];
@@ -234,9 +245,9 @@ typedef struct task_param @@ -234,9 +245,9 @@ typedef struct task_param
234 sy_rect minBoxsize[DETECTTYPE]; //自定义的minBoxsize大小 245 sy_rect minBoxsize[DETECTTYPE]; //自定义的minBoxsize大小
235 VIDEO_OBJECT_SNAPSHOT_CALLBACK obj_snapshot_callback_func; 246 VIDEO_OBJECT_SNAPSHOT_CALLBACK obj_snapshot_callback_func;
236 VIDEO_REALTIME_CALLBACK rt_view_callback_func; 247 VIDEO_REALTIME_CALLBACK rt_view_callback_func;
  248 + VIDEO_FINISH_CALLBACK tFinishCallbackFunc;
237 249
238 - //task_param() : video_filename(0), result_folder_little(0), result_folder(0), result_folder_face(0) {}  
239 - task_param() : jpeg_quality(30) {} //debug by zsh 250 + task_param() : jpeg_quality(30) {}
240 }task_param; 251 }task_param;
241 #endif 252 #endif
242 253
@@ -253,8 +264,8 @@ typedef struct mvpt_param @@ -253,8 +264,8 @@ typedef struct mvpt_param
253 int skip_frame; //内部跳帧数 264 int skip_frame; //内部跳帧数
254 265
255 /********************************日志参数*****************************/ 266 /********************************日志参数*****************************/
256 - char path[2048];  
257 - char name[512]; 267 + char* path;
  268 + char* name;
258 unsigned int serviceID; 269 unsigned int serviceID;
259 unsigned char logMask; 270 unsigned char logMask;
260 unsigned int limitSize; 271 unsigned int limitSize;
@@ -269,7 +280,6 @@ typedef struct mvpt_param @@ -269,7 +280,6 @@ typedef struct mvpt_param
269 sy_command face_det_config; //是否开启人脸检测 280 sy_command face_det_config; //是否开启人脸检测
270 281
271 VIDEO_OBJECT_INFO_CALLBACK task_obj_info_callback_func; //目标检测结果实时返回回调函数 282 VIDEO_OBJECT_INFO_CALLBACK task_obj_info_callback_func; //目标检测结果实时返回回调函数
272 - VIDEO_FINISH_CALLBACK task_finish_callbackfunc; //任务分析结束结果回调函数  
273 }mvpt_param; 283 }mvpt_param;
274 #endif 284 #endif
275 285
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/mvpt.cpp
@@ -7,7 +7,7 @@ int mvpt_init(void **handle, mvpt_param param) @@ -7,7 +7,7 @@ int mvpt_init(void **handle, mvpt_param param)
7 7
8 *handle = new CMutliSourceVideoProcess(); 8 *handle = new CMutliSourceVideoProcess();
9 CMutliSourceVideoProcess* tools = (CMutliSourceVideoProcess*)*handle; 9 CMutliSourceVideoProcess* tools = (CMutliSourceVideoProcess*)*handle;
10 - return tools->InitAlgorthim(param, param.task_obj_info_callback_func, param.task_finish_callbackfunc); 10 + return tools->InitAlgorthim(param, param.task_obj_info_callback_func);
11 } 11 }
12 12
13 //int AddTask(void *handle, char* videoFileName) 13 //int AddTask(void *handle, char* videoFileName)
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/snapshot_analysis/HumanCarParsing.cpp
@@ -61,6 +61,7 @@ int HumanCarParsing::init(int gpuid, char* auth_license) @@ -61,6 +61,7 @@ int HumanCarParsing::init(int gpuid, char* auth_license)
61 param.engine = ENGINE_TENSORRT; 61 param.engine = ENGINE_TENSORRT;
62 param.serialize_file = "./serialize_file/HCP"; 62 param.serialize_file = "./serialize_file/HCP";
63 param.max_batch = 20; 63 param.max_batch = 20;
  64 + param.auth_license = auth_license;
64 if (hcp_init(&handle, param) != 0) 65 if (hcp_init(&handle, param) != 0)
65 { 66 {
66 LOG_ERROR("hcp_init Failed!"); 67 LOG_ERROR("hcp_init Failed!");
vehicle_structure_platform.git0708-3080-trt-face/src/cuda_src/ImageSaveGPU.cpp
@@ -37,7 +37,7 @@ int partMemCopy(unsigned char* d_srcRGB, int src_width, int src_height, unsigned @@ -37,7 +37,7 @@ int partMemCopy(unsigned char* d_srcRGB, int src_width, int src_height, unsigned
37 { 37 {
38 cudaError_t cudaStatus = cuda_common::PartMemCopy(d_srcRGB, src_width, src_height, d_dstRGB, left, top, right, bottom); 38 cudaError_t cudaStatus = cuda_common::PartMemCopy(d_srcRGB, src_width, src_height, d_dstRGB, left, top, right, bottom);
39 if (cudaStatus != cudaSuccess) { 39 if (cudaStatus != cudaSuccess) {
40 - LOG_ERROR("cuda_common::PartMemCopy failed: {} {} {} {} {} {} {}",cudaGetErrorString(cudaStatus), left, top, right, bottom, src_height, d_dstRGB); 40 + LOG_ERROR("cuda_common::PartMemCopy failed: {} {} {} {} {} {}",cudaGetErrorString(cudaStatus), left, top, right, bottom, src_height);
41 return -1; 41 return -1;
42 } 42 }
43 43
vehicle_structure_platform.git0708-3080-trt-face/src/cuda_src/PartMemCopy.cu
1 #include "cuda_kernels.h" 1 #include "cuda_kernels.h"
2 #include <algorithm> 2 #include <algorithm>
  3 +
3 typedef unsigned char uchar; 4 typedef unsigned char uchar;
4 typedef unsigned int uint32; 5 typedef unsigned int uint32;
5 typedef int int32; 6 typedef int int32;
@@ -246,17 +247,28 @@ namespace cuda_common @@ -246,17 +247,28 @@ namespace cuda_common
246 cudaMalloc(&gpu_dst_rgb, 1000 * sizeof(unsigned char*)); 247 cudaMalloc(&gpu_dst_rgb, 1000 * sizeof(unsigned char*));
247 cudaMemcpy(gpu_dst_rgb, d_dstRGB, count * sizeof(unsigned char*), cudaMemcpyHostToDevice); 248 cudaMemcpy(gpu_dst_rgb, d_dstRGB, count * sizeof(unsigned char*), cudaMemcpyHostToDevice);
248 249
249 - //cudaMemcpy(cpu_personfloat, d_srcRGB, 112*224*2*sizeof(float), cudaMemcpyDeviceToHost);  
250 - // for(int i=0;i<100;i++)  
251 - // {  
252 - // printf("the score is %f\t",cpu_personfloat[i]);  
253 - // } 250 +
254 PartCopy_ResizeImgBilinearBGR_Mean_Variance_CUDAKernel << < grid, block >> > ( 251 PartCopy_ResizeImgBilinearBGR_Mean_Variance_CUDAKernel << < grid, block >> > (
255 d_srcRGB, src_width, src_height, 252 d_srcRGB, src_width, src_height,
256 gpu_left, gpu_top, gpu_right, gpu_bottom, 253 gpu_left, gpu_top, gpu_right, gpu_bottom,
257 gpu_dst_rgb, count, gpu_dst_w, gpu_dst_h, 254 gpu_dst_rgb, count, gpu_dst_w, gpu_dst_h,
258 submeanb, submeang, submeanr, 255 submeanb, submeang, submeanr,
259 varianceb, varianceg, variancer); 256 varianceb, varianceg, variancer);
  257 +
  258 + cudaError_t cudaStatus = cudaGetLastError();
  259 + do
  260 + {
  261 + if (cudaStatus != cudaSuccess) {
  262 + fprintf(stderr, "Part 270 kernel_memcopy launch failed: %s\n", cudaGetErrorString(cudaStatus));
  263 + break;
  264 + }
  265 + cudaStatus = cudaDeviceSynchronize();
  266 + if (cudaStatus != cudaSuccess) {
  267 + fprintf(stderr, "cudaDeviceSynchronize returned error code %d after launching kernel_bilinear!\n", cudaStatus);
  268 + break;
  269 + }
  270 + } while (0);
  271 +
260 cudaFree(gpu_top); 272 cudaFree(gpu_top);
261 cudaFree(gpu_bottom); 273 cudaFree(gpu_bottom);
262 cudaFree(gpu_left); 274 cudaFree(gpu_left);
@@ -264,24 +276,13 @@ namespace cuda_common @@ -264,24 +276,13 @@ namespace cuda_common
264 cudaFree(gpu_dst_w); 276 cudaFree(gpu_dst_w);
265 cudaFree(gpu_dst_h); 277 cudaFree(gpu_dst_h);
266 cudaFree(gpu_dst_rgb); 278 cudaFree(gpu_dst_rgb);
267 -  
268 - cudaError_t cudaStatus = cudaGetLastError();  
269 - if (cudaStatus != cudaSuccess) {  
270 - fprintf(stderr, "Part 270 kernel_memcopy launch failed: %s\n", cudaGetErrorString(cudaStatus));  
271 - return cudaStatus;  
272 - }  
273 - cudaStatus = cudaDeviceSynchronize();  
274 - if (cudaStatus != cudaSuccess) {  
275 - fprintf(stderr, "cudaDeviceSynchronize returned error code %d after launching kernel_bilinear!\n", cudaStatus);  
276 - return cudaStatus;  
277 - }  
278 279
279 /*cudaEventRecord(stop, 0); 280 /*cudaEventRecord(stop, 0);
280 cudaEventSynchronize(stop); 281 cudaEventSynchronize(stop);
281 cudaEventElapsedTime(&time, start, stop); 282 cudaEventElapsedTime(&time, start, stop);
282 cudaEventDestroy(start); 283 cudaEventDestroy(start);
283 cudaEventDestroy(stop); 284 cudaEventDestroy(stop);
284 - printf("核函数消耗时间:%f\n", time);*/ 285 + printf("锟剿猴拷锟斤拷锟斤拷锟斤拷时锟斤拷:%f\n", time);*/
285 286
286 return cudaStatus; 287 return cudaStatus;
287 } 288 }
vehicle_structure_platform.git0708-3080-trt-face/src/test/main.cpp
@@ -664,6 +664,10 @@ void videoFinishCallback(void * handle, const int taskID) @@ -664,6 +664,10 @@ void videoFinishCallback(void * handle, const int taskID)
664 // } 664 // }
665 } 665 }
666 666
  667 +void log_all(void * userPtr, int log_level, const char* log, unsigned int logLen) {
  668 + // cout << "log all: " << log_level << " " << logLen << " " << log << endl;
  669 +}
  670 +
667 //操作句柄 671 //操作句柄
668 void *handle; 672 void *handle;
669 static int total_index = 0; 673 static int total_index = 0;
@@ -687,11 +691,16 @@ void create_task(const char * videoFileName, int total_index) { @@ -687,11 +691,16 @@ void create_task(const char * videoFileName, int total_index) {
687 tparam.on_image_display = false; 691 tparam.on_image_display = false;
688 tparam.jpeg_quality = 30; //debug by zsh 692 tparam.jpeg_quality = 30; //debug by zsh
689 tparam.decMode = 0; // 关键帧解码 693 tparam.decMode = 0; // 关键帧解码
  694 + tparam.log = log_all;
  695 + tparam.userPtr = nullptr;
  696 +
  697 + cout << "create_task:" << tparam.video_filename << endl;
690 698
691 //tparam.video_filename = argv[total_index%4]; 699 //tparam.video_filename = argv[total_index%4];
692 memcpy(tparam.minBoxsize, m_boxsize, sizeof(sy_rect)* DETECTTYPE); 700 memcpy(tparam.minBoxsize, m_boxsize, sizeof(sy_rect)* DETECTTYPE);
693 tparam.rt_view_callback_func = videoRTViewCallback; 701 tparam.rt_view_callback_func = videoRTViewCallback;
694 tparam.obj_snapshot_callback_func = videoObjSnapshotCallback; 702 tparam.obj_snapshot_callback_func = videoObjSnapshotCallback;
  703 + tparam.tFinishCallbackFunc = videoFinishCallback;
695 704
696 for (int tmp = 0; tmp < 10; tmp ++) { 705 for (int tmp = 0; tmp < 10; tmp ++) {
697 string tmp_path = "results/" + vpt_types[tmp]; 706 string tmp_path = "results/" + vpt_types[tmp];
@@ -710,10 +719,13 @@ int main(int argc, char* argv[]) @@ -710,10 +719,13 @@ int main(int argc, char* argv[])
710 cout << "You must input videoFileName, iAddTaskCount and gpuid." << endl; 719 cout << "You must input videoFileName, iAddTaskCount and gpuid." << endl;
711 return -1; 720 return -1;
712 } 721 }
  722 +
713 const char * videoFileName = argv[1]; 723 const char * videoFileName = argv[1];
714 addTaskCount = atoi(argv[2]); 724 addTaskCount = atoi(argv[2]);
715 int gpuID = atoi(argv[3]); 725 int gpuID = atoi(argv[3]);
716 726
  727 + cout << "cmd:" << videoFileName << endl;
  728 +
717 //初始化参数设置 729 //初始化参数设置
718 mvpt_param vptParam; 730 mvpt_param vptParam;
719 // vptParam.hp_analysis_config = SY_CONFIG_CLOSE; 731 // vptParam.hp_analysis_config = SY_CONFIG_CLOSE;
@@ -722,7 +734,7 @@ int main(int argc, char* argv[]) @@ -722,7 +734,7 @@ int main(int argc, char* argv[])
722 // vptParam.hf_recg_config = SY_CONFIG_CLOSE; 734 // vptParam.hf_recg_config = SY_CONFIG_CLOSE;
723 // vptParam.hcf_recg_config = SY_CONFIG_CLOSE; 735 // vptParam.hcf_recg_config = SY_CONFIG_CLOSE;
724 // vptParam.vcf_recg_config = SY_CONFIG_CLOSE; 736 // vptParam.vcf_recg_config = SY_CONFIG_CLOSE;
725 - vptParam.face_det_config = SY_CONFIG_CLOSE; 737 + // vptParam.face_det_config = SY_CONFIG_CLOSE;
726 738
727 vptParam.hp_analysis_config = SY_CONFIG_OPEN; 739 vptParam.hp_analysis_config = SY_CONFIG_OPEN;
728 vptParam.hcp_analysis_config = SY_CONFIG_OPEN; 740 vptParam.hcp_analysis_config = SY_CONFIG_OPEN;
@@ -730,20 +742,19 @@ int main(int argc, char* argv[]) @@ -730,20 +742,19 @@ int main(int argc, char* argv[])
730 vptParam.hf_recg_config = SY_CONFIG_OPEN; 742 vptParam.hf_recg_config = SY_CONFIG_OPEN;
731 vptParam.hcf_recg_config = SY_CONFIG_OPEN; 743 vptParam.hcf_recg_config = SY_CONFIG_OPEN;
732 vptParam.vcf_recg_config = SY_CONFIG_OPEN; 744 vptParam.vcf_recg_config = SY_CONFIG_OPEN;
733 - // vptParam.face_det_config = SY_CONFIG_OPEN; 745 + vptParam.face_det_config = SY_CONFIG_OPEN;
734 746
735 vptParam.vrdbpath = argv[4]; 747 vptParam.vrdbpath = argv[4];
736 //vptParam.vrdbpath = "../../db/mvpt.bin"; 748 //vptParam.vrdbpath = "../../db/mvpt.bin";
737 vptParam.auth_license = "sy_va_sub_sdk_2023"; //通用授权 749 vptParam.auth_license = "sy_va_sub_sdk_2023"; //通用授权
738 vptParam.task_obj_info_callback_func = videoObjInfoCallback; 750 vptParam.task_obj_info_callback_func = videoObjInfoCallback;
739 - vptParam.task_finish_callbackfunc = videoFinishCallback;  
740 vptParam.gpuid = gpuID; 751 vptParam.gpuid = gpuID;
741 vptParam.wait_framecount = 30; 752 vptParam.wait_framecount = 30;
742 vptParam.serviceID = 0; 753 vptParam.serviceID = 0;
743 vptParam.limitSize = (10 << 20); 754 vptParam.limitSize = (10 << 20);
744 vptParam.skip_frame = 5; 755 vptParam.skip_frame = 5;
745 - strcat(vptParam.name, "gbrealtime");  
746 - strcat(vptParam.path, "./log/"); 756 + vptParam.name = "gbrealtime";
  757 + vptParam.path = "./logs/main.log";
747 int flag = mvpt_init(&handle, vptParam); 758 int flag = mvpt_init(&handle, vptParam);
748 759
749 if (0 != flag) 760 if (0 != flag)