Hi Folks
-
We have two cameras and want to do 3 channels of 1080p encoding. At the same time we would like to do TRT inferencing, of a single scaled down camera channel. Currently I’m following argus/samples/multiChannel example. It seems to work well but does not perform in stable fashion for longer run. Second input encoder channel stops encoding after 50 sec. We are also doing some processing on GPU.
-
I would like to follow flow of data in this example. I would like to understand how many frame buffer copies are happening, so that we can feel whether the performance would translate to our use case or not.
I see that data is getting copied for rendering and TRT processing →
iNativeBuffer->copyToNvBuffer(buf.fd);
Will this adversely affect over DDR performance when we drive 3 encode at 1080p @ 30 fps ? For example when 3 encoders in original example are operated at (640, 480), (1280, 720), and (1920, 1080)
I see following profiling result -
Time elapsed:20 ms per frame in past 100 frames
[13632.260696] trt: FPS: 30.008732
[13633.260600] trt: FPS: 29.987015
[13634.255863] trt: FPS: 29.996340
Time elapsed:20 ms per frame in past 100 frames
[13635.255631] trt: FPS: 30.004890
[13636.272200] trt: FPS: 29.995470
[13637.258763] trt: FPS: 30.014797
Time elapsed:21 ms per frame in past 100 frames
[13638.270500] trt: FPS: 30.009783
[13639.270984] trt: FPS: 29.975960
[13640.269304] trt: FPS: 29.998680
[13641.269160] trt: FPS: 29.996880
Time elapsed:20 ms per frame in past 100 frames
[13642.255780] trt: FPS: 30.004501
[13643.255742] trt: FPS: 30.001080
[13644.256223] trt: FPS: 29.986296
Time elapsed:22 ms per frame in past 100 frames
But when all 3 encoders are cranked up to 1080p resolution, I see (everything else in the system remaining same ) some errors -
Time elapsed:23 ms per frame in past 100 frames
SCF: Error InvalidState: NonFatal ISO BW requested not set. Requested = 4989600 Set = 4687500 (in src/services/power/PowerServiceCore.cpp, function setCameraBw(), line 474)
SCF: Error InvalidState: NonFatal ISO BW requested not set. Requested = 4989600 Set = 4687500 (in src/services/power/PowerServiceCore.cpp, function setCameraBw(), line 474)
[17782.984971] trt: FPS: 16.859261
SCF: Error InvalidState: NonFatal ISO BW requested not set. Requested = 4989600 Set = 4687500 (in src/services/power/PowerServiceCore.cpp, function setCameraBw(), line 474)
[17784.093142] trt: FPS: 14.546274
SCF: Error InvalidState: NonFatal ISO BW requested not set. Requested = 4989600 Set = 4687500 (in src/services/power/PowerServiceCore.cpp, function setCameraBw(), line 474)
SCF: Error InvalidState: NonFatal ISO BW requested not set. Requested = 4989600 Set = 4687500 (in src/services/power/PowerServiceCore.cpp, function setCameraBw(), line 474)
[17786.026728] trt: FPS: 16.034163
SCF: Error InvalidState: NonFatal ISO BW requested not set. Requested = 4989600 Set = 4687500 (in src/services/power/PowerServiceCore.cpp, function setCameraBw(), line 474)
Time elapsed:26 ms per frame in past 100 frames
SCF: Error InvalidState: NonFatal ISO BW requested not set. Requested = 4989600 Set = 4687500 (in src/services/power/PowerServiceCore.cpp, function setCameraBw(), line 474)
[17788.343454] trt: FPS: 13.379693
SCF: Error InvalidState: NonFatal ISO BW requested not set. Requested = 4989600 Set = 4687500 (in src/services/power/PowerServiceCore.cpp, function setCameraBw(), line 474)
[17789.342046] trt: FPS: 14.991395
SCF: Error InvalidState: NonFatal ISO BW requested not set. Requested = 4989600 Set = 4687500 (in src/services/power/PowerServiceCore.cpp, function setCameraBw(), line 474)
[17790.376679] trt: FPS: 14.063563
SCF: Error InvalidState: NonFatal ISO BW requested not set. Requested = 4989600 Set = 4687500 (in src/services/power/PowerServiceCore.cpp, function setCameraBw(), line 474)
[17792.166780] trt: FPS: 19.438797
Time elapsed:28 ms per frame in past 100 frames
[17793.178689] trt: FPS: 28.412458
[17794.156891] trt: FPS: 29.622911
Does ISO BW messages refer to DDR bw ? Is that an issue due to higher resolution encode ?
Thanks