Commit a2b7fd92417c709f1243eb482b13c6c0caf925f0
1 parent
2b980c5a
测试代码优化
Showing
3 changed files
with
121 additions
and
67 deletions
.vscode/launch.json
@@ -6,7 +6,25 @@ | @@ -6,7 +6,25 @@ | ||
6 | "type": "cppdbg", | 6 | "type": "cppdbg", |
7 | "request": "launch", | 7 | "request": "launch", |
8 | "program": "${workspaceFolder}/bin/lib/test", | 8 | "program": "${workspaceFolder}/bin/lib/test", |
9 | - "args": ["rtsp://176.10.0.4:8554/stream","0"], | 9 | + "args": ["rtsp://122.97.218.170:8604/openUrl/V5nXRHa?params=eyJwcm90b2NhbCI6InJ0c3AiLCJjbGllbnRUeXBlIjoib3Blbl9hcGkiLCJleHByaWVUaW1lIjotMSwicHJvdG9jb2wiOiJydHNwIiwiZXhwaXJlVGltZSI6MzAwLCJlbmFibGVNR0MiOnRydWUsImV4cGFuZCI6InN0YW5kYXJkPXJ0c3Amc3RyZWFtZm9ybT1ydHAiLCJhIjoiMTBjZjM4N2JjY2Y5NDg3YzhjNWYzNjE2M2ViMWUyNTJ8MXwwfDEiLCJ0IjoxfQ==","3"], |
10 | + "stopAtEntry": false, | ||
11 | + "cwd": "${workspaceFolder}/bin/lib", | ||
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": "ffmpeg", | ||
24 | + "type": "cppdbg", | ||
25 | + "request": "launch", | ||
26 | + "program": "${workspaceFolder}/bin/lib/ffmpeg_g", | ||
27 | + "args": ["-vsync","0","-hwaccel","cuvid","-hwaccel_device","1","-c:v","h264_cuvid","-i","rtmp://192.168.10.56:1935/objecteye/116","-c:a","copy","-vf","scale_npp=800:480","-c:v","h264","/mnt/data/cmhu/FFNvDecoder/data/output1.mp4"], | ||
10 | "stopAtEntry": false, | 28 | "stopAtEntry": false, |
11 | "cwd": "${workspaceFolder}/bin/lib", | 29 | "cwd": "${workspaceFolder}/bin/lib", |
12 | "environment": [], | 30 | "environment": [], |
src/Makefile
1 | - | ||
2 | XX = g++ | 1 | XX = g++ |
3 | -NVCC = nvcc | 2 | + |
3 | +CUDA_ROOT = /usr/local/cuda-11.1 | ||
4 | +NVCC = $(CUDA_ROOT)/bin/nvcc | ||
4 | 5 | ||
5 | 6 | ||
6 | PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder | 7 | PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder |
7 | 8 | ||
8 | DEPEND_DIR = $(PROJECT_ROOT)/bin | 9 | DEPEND_DIR = $(PROJECT_ROOT)/bin |
9 | SRC_ROOT = $(PROJECT_ROOT)/src | 10 | SRC_ROOT = $(PROJECT_ROOT)/src |
10 | -CUDA_ROOT = /usr/local/cuda-11.1 | ||
11 | 11 | ||
12 | TARGET= $(DEPEND_DIR)/lib/test | 12 | TARGET= $(DEPEND_DIR)/lib/test |
13 | 13 | ||
14 | - | ||
15 | INCLUDE= -I $(DEPEND_DIR)/include \ | 14 | INCLUDE= -I $(DEPEND_DIR)/include \ |
16 | -I $(CUDA_ROOT)/include \ | 15 | -I $(CUDA_ROOT)/include \ |
17 | -I $(SRC_ROOT)/common/inc \ | 16 | -I $(SRC_ROOT)/common/inc \ |
@@ -19,7 +18,8 @@ INCLUDE= -I $(DEPEND_DIR)/include \ | @@ -19,7 +18,8 @@ INCLUDE= -I $(DEPEND_DIR)/include \ | ||
19 | -I $(SRC_ROOT)\ | 18 | -I $(SRC_ROOT)\ |
20 | 19 | ||
21 | LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \ | 20 | LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \ |
22 | - -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \ | 21 | + -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid \ |
22 | + -L $(CUDA_ROOT)/lib64/stubs -lcurand -lcublas -lnvjpeg \ | ||
23 | 23 | ||
24 | CFLAGS= -g -fPIC -O0 $(INCLUDE) -pthread -lrt -lz -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl | 24 | CFLAGS= -g -fPIC -O0 $(INCLUDE) -pthread -lrt -lz -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl |
25 | # -DUNICODE -D_UNICODE | 25 | # -DUNICODE -D_UNICODE |
@@ -47,6 +47,4 @@ $(TARGET):$(OBJS) $(CU_OBJS) | @@ -47,6 +47,4 @@ $(TARGET):$(OBJS) $(CU_OBJS) | ||
47 | $(NVCC) $(NFLAGS) -o $@ $< | 47 | $(NVCC) $(NFLAGS) -o $@ $< |
48 | 48 | ||
49 | clean: | 49 | clean: |
50 | - rm -f *.o $(TARGET) | ||
51 | - | ||
52 | - | 50 | + rm -f *.o $(TARGET) |
53 | \ No newline at end of file | 51 | \ No newline at end of file |
src/main.cpp
@@ -17,10 +17,79 @@ int sum2 = 0; | @@ -17,10 +17,79 @@ int sum2 = 0; | ||
17 | 17 | ||
18 | cudaStream_t stream[2]; | 18 | cudaStream_t stream[2]; |
19 | 19 | ||
20 | +string data_home = "/mnt/data/cmhu/FFNvDecoder/data/"; | ||
21 | + | ||
22 | + | ||
23 | +#define checkCudaErrors(S) do {CUresult status; \ | ||
24 | + status = S; \ | ||
25 | + if (status != CUDA_SUCCESS ) std::cout << __LINE__ <<" checkCudaErrors - status = " << status << std::endl; \ | ||
26 | + } while (false) | ||
27 | + | ||
28 | + | ||
29 | +static void gpu_helper(int gpuid) | ||
30 | +{ | ||
31 | + cudaSetDevice(gpuid); | ||
32 | + | ||
33 | + // int *dn; | ||
34 | + // cudaMalloc((void **)&dn, 1 * sizeof(int)); | ||
35 | + | ||
36 | + size_t free_byte; | ||
37 | + size_t total_byte; | ||
38 | + | ||
39 | + CUresult cuda_status = cuMemGetInfo(&free_byte, &total_byte); | ||
40 | + | ||
41 | + const char *pStr = nullptr; | ||
42 | + if (CUDA_SUCCESS != cuda_status) { | ||
43 | + cuGetErrorString(cuda_status, &pStr); | ||
44 | + printf("Error: cudaMemGetInfo fails, %s \n", pStr); | ||
45 | + return; | ||
46 | + } | ||
47 | + | ||
48 | + double free_db = (double)free_byte; | ||
49 | + double total_db = (double)total_byte; | ||
50 | + double used_db_1 = (total_db - free_db) / 1024.0 / 1024.0; | ||
51 | + | ||
52 | + std::cout <<"显存已使用 " << used_db_1 << " MB\n"; | ||
53 | + | ||
54 | + // cudaFree(dn); | ||
55 | +} | ||
56 | + | ||
57 | +int CheckCUDAProperty( int devId ) | ||
58 | +{ | ||
59 | + cuInit(0); | ||
60 | + | ||
61 | + CUdevice dev = devId; | ||
62 | + size_t memSize = 0; | ||
63 | + char devName[256] = {0}; | ||
64 | + int major = 0, minor = 0; | ||
65 | + CUresult rlt = CUDA_SUCCESS; | ||
66 | + | ||
67 | + rlt = cuDeviceGetAttribute(&major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, dev); | ||
68 | + checkCudaErrors( rlt ); | ||
69 | + | ||
70 | + rlt = cuDeviceGetAttribute(&minor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, dev); | ||
71 | + checkCudaErrors( rlt ); | ||
72 | + | ||
73 | + rlt = cuDeviceGetName( devName, sizeof( devName ), dev ); | ||
74 | + checkCudaErrors( rlt ); | ||
75 | + | ||
76 | + printf( "Using GPU Device %d: %s has SM %d.%d compute capability\n", | ||
77 | + dev, devName, major, minor ); | ||
78 | + | ||
79 | + rlt = cuDeviceTotalMem( &memSize, dev ); | ||
80 | + checkCudaErrors( rlt ); | ||
81 | + | ||
82 | + printf( "Total amount of global memory: %4.4f MB\n", | ||
83 | + (float)memSize / ( 1024 * 1024 ) ); | ||
84 | + | ||
85 | + return 0; | ||
86 | +} | ||
87 | + | ||
20 | /** | 88 | /** |
21 | * 注意: gpuFrame 在解码器设置的显卡上,后续操作要十分注意这一点,尤其是多线程情况 | 89 | * 注意: gpuFrame 在解码器设置的显卡上,后续操作要十分注意这一点,尤其是多线程情况 |
22 | * */ | 90 | * */ |
23 | void postDecoded(const void * userPtr, AVFrame * gpuFrame){ | 91 | void postDecoded(const void * userPtr, AVFrame * gpuFrame){ |
92 | + | ||
24 | FFNvDecoder* decoder = (FFNvDecoder*)userPtr; | 93 | FFNvDecoder* decoder = (FFNvDecoder*)userPtr; |
25 | if (decoder!= nullptr) | 94 | if (decoder!= nullptr) |
26 | { | 95 | { |
@@ -39,7 +108,7 @@ void postDecoded(const void * userPtr, AVFrame * gpuFrame){ | @@ -39,7 +108,7 @@ void postDecoded(const void * userPtr, AVFrame * gpuFrame){ | ||
39 | 108 | ||
40 | if (gpuFrame->format == AV_PIX_FMT_CUDA) | 109 | if (gpuFrame->format == AV_PIX_FMT_CUDA) |
41 | { | 110 | { |
42 | - cout << "gpuid = " << atoi(decoder->m_cfg.gpuid.c_str()) << endl; | 111 | + // cout << "gpuid = " << atoi(decoder->m_cfg.gpuid.c_str()) << endl; |
43 | cudaSetDevice(atoi(decoder->m_cfg.gpuid.c_str())); | 112 | cudaSetDevice(atoi(decoder->m_cfg.gpuid.c_str())); |
44 | cudaError_t cudaStatus; | 113 | cudaError_t cudaStatus; |
45 | if(pHwRgb[0] == nullptr){ | 114 | if(pHwRgb[0] == nullptr){ |
@@ -54,7 +123,7 @@ void postDecoded(const void * userPtr, AVFrame * gpuFrame){ | @@ -54,7 +123,7 @@ void postDecoded(const void * userPtr, AVFrame * gpuFrame){ | ||
54 | return; | 123 | return; |
55 | } | 124 | } |
56 | 125 | ||
57 | - string path = "/mnt/f/fiss/data/" + decoder->getName() + "/" + to_string(sum) + ".jpg"; | 126 | + string path = data_home + decoder->getName() + ".jpg"; |
58 | saveJpeg(path.c_str(), pHwRgb[0], gpuFrame->width, gpuFrame->height, stream[0]); // 验证 CUDAToRGB | 127 | saveJpeg(path.c_str(), pHwRgb[0], gpuFrame->width, gpuFrame->height, stream[0]); // 验证 CUDAToRGB |
59 | } | 128 | } |
60 | } else if (decoder->getName() == "dec2") | 129 | } else if (decoder->getName() == "dec2") |
@@ -64,7 +133,7 @@ void postDecoded(const void * userPtr, AVFrame * gpuFrame){ | @@ -64,7 +133,7 @@ void postDecoded(const void * userPtr, AVFrame * gpuFrame){ | ||
64 | 133 | ||
65 | if (gpuFrame->format == AV_PIX_FMT_CUDA) | 134 | if (gpuFrame->format == AV_PIX_FMT_CUDA) |
66 | { | 135 | { |
67 | - cout << "gpuid = " << atoi(decoder->m_cfg.gpuid.c_str()) << endl; | 136 | + // cout << "gpuid = " << atoi(decoder->m_cfg.gpuid.c_str()) << endl; |
68 | cudaSetDevice(atoi(decoder->m_cfg.gpuid.c_str())); | 137 | cudaSetDevice(atoi(decoder->m_cfg.gpuid.c_str())); |
69 | cudaError_t cudaStatus; | 138 | cudaError_t cudaStatus; |
70 | if(pHwRgb[1] == nullptr){ | 139 | if(pHwRgb[1] == nullptr){ |
@@ -79,7 +148,7 @@ void postDecoded(const void * userPtr, AVFrame * gpuFrame){ | @@ -79,7 +148,7 @@ void postDecoded(const void * userPtr, AVFrame * gpuFrame){ | ||
79 | return; | 148 | return; |
80 | } | 149 | } |
81 | 150 | ||
82 | - string path = "/mnt/f/fiss/data/" + decoder->getName() + "/" + to_string(sum) + ".jpg"; | 151 | + string path = data_home + decoder->getName() + ".jpg"; |
83 | saveJpeg(path.c_str(), pHwRgb[1], gpuFrame->width, gpuFrame->height, stream[1]); // 验证 CUDAToRGB | 152 | saveJpeg(path.c_str(), pHwRgb[1], gpuFrame->width, gpuFrame->height, stream[1]); // 验证 CUDAToRGB |
84 | } | 153 | } |
85 | } | 154 | } |
@@ -126,12 +195,12 @@ void postDecoded0(const void * userPtr, AVFrame * gpuFrame){ | @@ -126,12 +195,12 @@ void postDecoded0(const void * userPtr, AVFrame * gpuFrame){ | ||
126 | // long time_using = end_time - start_time; | 195 | // long time_using = end_time - start_time; |
127 | // double time_per_frame = double(time_using)/count_std ; | 196 | // double time_per_frame = double(time_using)/count_std ; |
128 | // cout << count_std << "帧用时:" << time_using << "ms 每帧用时:" << time_per_frame << "ms" << endl; | 197 | // cout << count_std << "帧用时:" << time_using << "ms 每帧用时:" << time_per_frame << "ms" << endl; |
129 | - cout << "keyframe: " << gpuFrame->key_frame << " width: " << gpuFrame->width << " height: "<< gpuFrame->height << endl; | ||
130 | - cout << gpuFrame->pts << endl; | 198 | + cout << decoder->getName() << " keyframe: " << gpuFrame->key_frame << " width: " << gpuFrame->width << " height: "<< gpuFrame->height << endl; |
199 | + // cout << gpuFrame->pts << endl; | ||
131 | 200 | ||
132 | count_flag = false; | 201 | count_flag = false; |
133 | } | 202 | } |
134 | - cout << "帧数:" << sum << endl; | 203 | + // cout << "帧数:" << sum << endl; |
135 | 204 | ||
136 | if (gpuFrame->format == AV_PIX_FMT_CUDA) | 205 | if (gpuFrame->format == AV_PIX_FMT_CUDA) |
137 | { | 206 | { |
@@ -149,7 +218,7 @@ void postDecoded0(const void * userPtr, AVFrame * gpuFrame){ | @@ -149,7 +218,7 @@ void postDecoded0(const void * userPtr, AVFrame * gpuFrame){ | ||
149 | return; | 218 | return; |
150 | } | 219 | } |
151 | 220 | ||
152 | - string path = "/mnt/f/fiss/data/" + to_string(sum) + ".jpg"; | 221 | + string path = data_home + decoder->getName() + ".jpg"; |
153 | saveJpeg(path.c_str(), pHwData, gpuFrame->width, gpuFrame->height, nullptr); // 验证 CUDAToRGB | 222 | saveJpeg(path.c_str(), pHwData, gpuFrame->width, gpuFrame->height, nullptr); // 验证 CUDAToRGB |
154 | } | 223 | } |
155 | } | 224 | } |
@@ -166,8 +235,9 @@ void decode_finished_cbk(const void* userPtr){ | @@ -166,8 +235,9 @@ void decode_finished_cbk(const void* userPtr){ | ||
166 | // string test_uri = "rtsp://176.10.0.2:8554/stream"; | 235 | // string test_uri = "rtsp://176.10.0.2:8554/stream"; |
167 | // string test_uri = "/mnt/f/fiss/test_data/h265.mp4"; | 236 | // string test_uri = "/mnt/f/fiss/test_data/h265.mp4"; |
168 | string test_uri = "rtsp://176.10.0.4:8554/stream"; | 237 | string test_uri = "rtsp://176.10.0.4:8554/stream"; |
238 | +char* gpuid = "0"; | ||
169 | 239 | ||
170 | -void createDecode(int index){ | 240 | +void createDecode(int index, const char* gpu_id){ |
171 | FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); | 241 | FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); |
172 | MgrDecConfig config; | 242 | MgrDecConfig config; |
173 | config.name = "dec" + to_string(index); | 243 | config.name = "dec" + to_string(index); |
@@ -176,14 +246,15 @@ void createDecode(int index){ | @@ -176,14 +246,15 @@ void createDecode(int index){ | ||
176 | config.cfg.decode_finished_cbk = decode_finished_cbk; | 246 | config.cfg.decode_finished_cbk = decode_finished_cbk; |
177 | config.cfg.force_tcp = true; | 247 | config.cfg.force_tcp = true; |
178 | 248 | ||
179 | - if (index % 2 == 0) | ||
180 | - { | ||
181 | - config.cfg.gpuid = "0"; | ||
182 | - } | ||
183 | - else | ||
184 | - { | ||
185 | - config.cfg.gpuid = "0"; | ||
186 | - } | 249 | + config.cfg.gpuid = gpu_id; |
250 | + // if (index % 2 == 0) | ||
251 | + // { | ||
252 | + // config.cfg.gpuid = gpu_id; | ||
253 | + // } | ||
254 | + // else | ||
255 | + // { | ||
256 | + // config.cfg.gpuid = "0"; | ||
257 | + // } | ||
187 | 258 | ||
188 | FFNvDecoder* decoder = pDecManager->createDecoder(config); | 259 | FFNvDecoder* decoder = pDecManager->createDecoder(config); |
189 | if (!decoder) | 260 | if (!decoder) |
@@ -194,42 +265,6 @@ void createDecode(int index){ | @@ -194,42 +265,6 @@ void createDecode(int index){ | ||
194 | pDecManager->startDecodeByName(config.name); | 265 | pDecManager->startDecodeByName(config.name); |
195 | } | 266 | } |
196 | 267 | ||
197 | -#define checkCudaErrors(S) do {CUresult status; \ | ||
198 | - status = S; \ | ||
199 | - if (status != CUDA_SUCCESS ) std::cout << __LINE__ <<" checkCudaErrors - status = " << status << std::endl; \ | ||
200 | - } while (false) | ||
201 | - | ||
202 | -int CheckCUDAProperty( int devId ) | ||
203 | -{ | ||
204 | - cuInit(0); | ||
205 | - | ||
206 | - CUdevice dev = devId; | ||
207 | - size_t memSize = 0; | ||
208 | - char devName[256] = {0}; | ||
209 | - int major = 0, minor = 0; | ||
210 | - CUresult rlt = CUDA_SUCCESS; | ||
211 | - | ||
212 | - rlt = cuDeviceGetAttribute(&major, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR, dev); | ||
213 | - checkCudaErrors( rlt ); | ||
214 | - | ||
215 | - rlt = cuDeviceGetAttribute(&minor, CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR, dev); | ||
216 | - checkCudaErrors( rlt ); | ||
217 | - | ||
218 | - rlt = cuDeviceGetName( devName, sizeof( devName ), dev ); | ||
219 | - checkCudaErrors( rlt ); | ||
220 | - | ||
221 | - printf( "Using GPU Device %d: %s has SM %d.%d compute capability\n", | ||
222 | - dev, devName, major, minor ); | ||
223 | - | ||
224 | - rlt = cuDeviceTotalMem( &memSize, dev ); | ||
225 | - checkCudaErrors( rlt ); | ||
226 | - | ||
227 | - printf( "Total amount of global memory: %4.4f MB\n", | ||
228 | - (float)memSize / ( 1024 * 1024 ) ); | ||
229 | - | ||
230 | - return 0; | ||
231 | -} | ||
232 | - | ||
233 | void logFF(void *, int level, const char *fmt, va_list ap) | 268 | void logFF(void *, int level, const char *fmt, va_list ap) |
234 | { | 269 | { |
235 | vfprintf(stdout, fmt, ap); | 270 | vfprintf(stdout, fmt, ap); |
@@ -239,18 +274,19 @@ void logFF(void *, int level, const char *fmt, va_list ap) | @@ -239,18 +274,19 @@ void logFF(void *, int level, const char *fmt, va_list ap) | ||
239 | int main(int argc, char* argv[]){ | 274 | int main(int argc, char* argv[]){ |
240 | 275 | ||
241 | test_uri = argv[1]; | 276 | test_uri = argv[1]; |
277 | + gpuid = argv[2]; | ||
242 | cout << test_uri << endl; | 278 | cout << test_uri << endl; |
243 | 279 | ||
244 | // av_log_set_callback(&logFF); | 280 | // av_log_set_callback(&logFF); |
245 | 281 | ||
246 | - CheckCUDAProperty(0); | 282 | + CheckCUDAProperty(atoi(gpuid)); |
247 | 283 | ||
248 | FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); | 284 | FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); |
249 | 285 | ||
250 | - // int count = 99; | 286 | + // int count = 4; |
251 | // for (size_t i = 0; i < count ; i++) | 287 | // for (size_t i = 0; i < count ; i++) |
252 | // { | 288 | // { |
253 | - // createDecode(i); | 289 | + // createDecode(i, gpuid); |
254 | // } | 290 | // } |
255 | 291 | ||
256 | MgrDecConfig config; | 292 | MgrDecConfig config; |
@@ -259,7 +295,7 @@ int main(int argc, char* argv[]){ | @@ -259,7 +295,7 @@ int main(int argc, char* argv[]){ | ||
259 | config.cfg.post_decoded_cbk = postDecoded0; | 295 | config.cfg.post_decoded_cbk = postDecoded0; |
260 | config.cfg.decode_finished_cbk = decode_finished_cbk; | 296 | config.cfg.decode_finished_cbk = decode_finished_cbk; |
261 | config.cfg.force_tcp = true; | 297 | config.cfg.force_tcp = true; |
262 | - config.cfg.gpuid = "0"; | 298 | + config.cfg.gpuid = gpuid; |
263 | FFNvDecoder* dec2 = pDecManager->createDecoder(config); | 299 | FFNvDecoder* dec2 = pDecManager->createDecoder(config); |
264 | if (!dec2) | 300 | if (!dec2) |
265 | { | 301 | { |
@@ -277,12 +313,14 @@ int main(int argc, char* argv[]){ | @@ -277,12 +313,14 @@ int main(int argc, char* argv[]){ | ||
277 | pthread_create(&m_decode_thread,0, | 313 | pthread_create(&m_decode_thread,0, |
278 | [](void* arg) | 314 | [](void* arg) |
279 | { | 315 | { |
316 | + // cudaSetDevice(atoi(gpuid)); | ||
280 | while (true) | 317 | while (true) |
281 | { | 318 | { |
282 | std::this_thread::sleep_for(std::chrono::milliseconds(5000)); | 319 | std::this_thread::sleep_for(std::chrono::milliseconds(5000)); |
283 | FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); | 320 | FFNvDecoderManager* pDecManager = FFNvDecoderManager::getInstance(); |
284 | int count = pDecManager->count(); | 321 | int count = pDecManager->count(); |
285 | - cout << "当前运行路数: " << pDecManager->count() << endl; | 322 | + cout << "当前时间戳:" << get_cur_time() << " 当前运行路数:" << pDecManager->count() << endl; |
323 | + // gpu_helper(atoi(gpuid)); | ||
286 | if (count <= 0) | 324 | if (count <= 0) |
287 | { | 325 | { |
288 | break; | 326 | break; |