Hi,
We are using a TX2 to record 6 Camera modules simultaneously at 1080p@60fps and we have set the encoding to H.265 at 16 Mbps (also tried with 10Mbps) for each video pipeline. We have noticed, after breaking down the video frame by frame with ffmpeg, there were a lot of duplicate frames.
Can someone advise please? Can the TX2 not encode 6 x 1080p at 60fps?
Kind Regards,
DaneLLL
February 12, 2018, 2:41am
2
Hi DaneLLL,
The video that you are encoding are already saved videos. We are encoding while recording, I think this is what’s causing the drop in frames.
Could that be an issue?
Hi DaneLLL,
Have you had a chance to investigate on the matter?
DaneLLL
February 13, 2018, 11:32pm
5
Hi, what is your camera source? Since encoder can achieve 6 1080p60. The issue looks like the camera source cannot keep 6 1080p60
Hi DaneLLL,
I am not sure what you mean by camera source but we have custom made IMX290 modules which drivers’ was written by Leopard Imaging and they say that all is working fine on their side and I should check with NVIDIA why that issue is occurring. That’s why am here.
DaneLLL
February 15, 2018, 12:04am
7
Hi,
Below is listed in document:
H.265
I420, NVMM:I420, NVMM:NV12
3840 x 2160 at
30 fps
Up to 100 Mbps
Supported features: control-rate, Bitrate, Iframeinterval, Quality-Level, SliceIntrarefreshEnable, Sliceintrarefreshinterval, Bit-Packetization, VBV-Size, temporal-tradeoff, Insert-SPS-PPS, Force-IDR
https://developer.nvidia.com/embedded/dlc/l4t-documentation-28-1
The spec is 4kp30. The above case is pure encoding test and may not be achieved in real camera case. It depends on implementation.
Do you implement in gstreamer or MMAPI? Which CSI ports of TX2 are connected? Does it use TX2 ISP engine?
Hi,
We specifically ask for real case encoding before we went with the Jetson TX2 for this project. Now this is very problematic, isn’t it?!
Which implementation are you referring to, where it will be suitable for the 6 x 1080p60fps real case encoding?
We are using gstreamer. All of the CSI ports are connected to the camera modules, 2 lanes each module x 6 modules. Yes it uses the TX2 ISP engine.
DaneLLL
February 21, 2018, 1:46am
9
Hi Devashish,
How many 1080p60 can you achieve with imx290?
Hi DaneLLL,
Am not sure I understood your question.
We have 6 IMX290 connected to the Jetson TX2 and each IMX290 goes through MIPI CSI 2 lanes
DaneLLL
February 22, 2018, 1:28am
11
Hi Devashish,
If you run one imx290 with encoding, can it achieve 1080p60 without dropping frames?
If you run two imx290 with encoding, can it achieve two 1080p60 without dropping frames?
How many can you run without dropping frames? Do you run gstreamer or MMAPI?
Hi DaneLLL,
Sorry for such late reply.
The encoding is good up to 3 x 1080p60. After that it starts dropping frames.
Best,
Hi Devashish,
If you run 4 imx290, can you see them all in 1080p60 with fpsdisplaysink?
Here is a example:
[url]https://devtalk.nvidia.com/default/topic/1027772/jetson-tx2/two-csi-cameras-on-tx2/post/5227935/#5227935[/url]
Also do you have configure any encoder property of omxh265enc?
0:00:00.045214318 6420 0x633300 DEBUG fpsdisplaysink fpsdisplaysink.c:440:fps_display_sink_start:<fpsdisplaysink0> Use text-overlay? 1
Setting pipeline to PAUSED ...
0:00:00.063021921 6419 0x633300 DEBUG fpsdisplaysink fpsdisplaysink.c:440:fps_display_sink_start:<fpsdisplaysink0> Use text-overlay? 1
Setting pipeline to PAUSED ...
0:00:00.058545244 6421 0x633300 DEBUG fpsdisplaysink fpsdisplaysink.c:440:fps_display_sink_start:<fpsdisplaysink0> Use text-overlay? 1
Setting pipeline to PAUSED ...
0:00:00.052997494 6422 0x633300 DEBUG fpsdisplaysink fpsdisplaysink.c:440:fps_display_sink_start:<fpsdisplaysink0> Use text-overlay? 1
Available Sensor modes :
1948 x 1096 FR=60.000000 CF=0x1009208a10 SensorModeType=4 CSIPixelBitDepth=12 DynPixelBitDepth=12
Available Sensor modes :
1948 x 1096 FR=60.000000 CF=0x1009208a10 SensorModeType=4 CSIPixelBitDepth=12 DynPixelBitDepth=12
Available Sensor modes :
1948 x 1096 FR=60.000000 CF=0x1009208a10 SensorModeType=4 CSIPixelBitDepth=12 DynPixelBitDepth=12
Pipeline is live and does not need PREROLL ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
New clock: GstSystemClock
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Available Sensor modes :
1948 x 1096 FR=60.000000 CF=0x1009208a10 SensorModeType=4 CSIPixelBitDepth=12 DynPixelBitDepth=12
NvCameraSrc: Trying To Set Default Camera Resolution. Selected sensorModeIndex = 0 WxH = 1948x1096 FrameRate = 60.000000 ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
NvCameraSrc: Trying To Set Default Camera Resolution. Selected sensorModeIndex = 0 WxH = 1948x1096 FrameRate = 60.000000 ...
NvCameraSrc: Trying To Set Default Camera Resolution. Selected sensorModeIndex = 0 WxH = 1948x1096 FrameRate = 60.000000 ...
NvCameraSrc: Trying To Set Default Camera Resolution. Selected sensorModeIndex = 0 WxH = 1948x1096 FrameRate = 60.000000 ...
0:00:01.369121869 6419 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:372:display_current_fps:<fpsdisplaysink0> Updated max-fps to 38.854328
0:00:01.369179341 6419 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:376:display_current_fps:<fpsdisplaysink0> Updated min-fps to 38.854328
0:00:01.375454354 6421 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:372:display_current_fps:<fpsdisplaysink0> Updated max-fps to 43.551541
0:00:01.375510834 6421 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:376:display_current_fps:<fpsdisplaysink0> Updated min-fps to 43.551541
0:00:01.368113675 6422 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:372:display_current_fps:<fpsdisplaysink0> Updated max-fps to 35.943749
0:00:01.368180779 6422 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:376:display_current_fps:<fpsdisplaysink0> Updated min-fps to 35.943749
0:00:01.432283724 6420 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:372:display_current_fps:<fpsdisplaysink0> Updated max-fps to 38.858344
0:00:01.432342636 6420 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:376:display_current_fps:<fpsdisplaysink0> Updated min-fps to 38.858344
0:00:01.887399573 6419 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:376:display_current_fps:<fpsdisplaysink0> Updated min-fps to 36.660478
0:00:01.887022260 6421 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:376:display_current_fps:<fpsdisplaysink0> Updated min-fps to 35.186620
0:00:01.884682865 6422 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:372:display_current_fps:<fpsdisplaysink0> Updated max-fps to 40.652801
0:00:01.932624002 6420 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:376:display_current_fps:<fpsdisplaysink0> Updated min-fps to 35.975611
0:00:03.971997326 6419 0x642ca0 DEBUG fpsdisplaysink fpsdisplaysink.c:372:display_current_fps:<fpsdisplaysink0> Updated max-fps to 40.541813
Got EOS from element "pipeline0".
Execution ended after 0:00:05.637941368
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Got EOS from element "pipeline0".
Execution ended after 0:00:05.663107984
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Got EOS from element "pipeline0".
Execution ended after 0:00:05.663969680
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Got EOS from element "pipeline0".
Execution ended after 0:00:05.730793105
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Socket read error. Camera Daemon stopped functioning.....
Setting pipeline to NULL ...
Freeing pipeline ...
Setting pipeline to NULL ...
Freeing pipeline ...
Setting pipeline to NULL ...
Freeing pipeline ...
Setting pipeline to NULL ...
Freeing pipeline ...
^C
[1] Done GST_DEBUG=fpsdisplaysink:5 gst-launch-1.0 nvcamerasrc num-buffers=200 sensor-id=0 ! 'video/x-raw(memory:NVMM), framerate=(fraction)60/1' ! queue ! fpsdisplaysink video-sink=fakesink sync=false async=true
[2] Done GST_DEBUG=fpsdisplaysink:5 gst-launch-1.0 nvcamerasrc num-buffers=200 sensor-id=1 ! 'video/x-raw(memory:NVMM), framerate=(fraction)60/1' ! queue ! fpsdisplaysink video-sink=fakesink sync=false async=true
[3]- Done GST_DEBUG=fpsdisplaysink:5 gst-launch-1.0 nvcamerasrc num-buffers=200 sensor-id=2 ! 'video/x-raw(memory:NVMM), framerate=(fraction)60/1' ! queue ! fpsdisplaysink video-sink=fakesink sync=false async=true
[4]+ Done GST_DEBUG=fpsdisplaysink:5 gst-launch-1.0 nvcamerasrc num-buffers=200 sensor-id=3 ! 'video/x-raw(memory:NVMM), framerate=(fraction)60/1' ! queue ! fpsdisplaysink video-sink=fakesink sync=false async=true
This is the result of the fpsdisplaysink.
We set the bitrate to a specific value and set the control rate to fixed but it still varies. Other than that we did not change other properties
Hi Devashish,
The issue is in the camera sources which cannot achieve 1080p60.
Hi DaneLLL,
Does this mean that the driver is wrong?
Hi Devashish,
We have discussion with Leopard and confirms six 1080p60 camra inputs are not guaranteed. The BSP release does not support this usecase.