Hello everyone, I am having an issue with getting an external sync signal to trigger my IMX568 camera. I can confirm that the sync signal I am sending the camera is correct by using an oscilloscope. I measure 60Hz on the nose. When I run this Gstreamer pipeline:
gst-launch-1.0 nvarguscamerasrc sensor-id=1 saturation=0 aelock=true awblock=true num-buffers=300 ! 'video/x-raw(memory:NVMM), width=2472, height=2048, format=NV12' ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 -v
I see the following results:
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 12, dropped: 0, current: 22.32, average: 22.32
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 23, dropped: 0, current: 20.02, average: 21.16
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 34, dropped: 0, current: 20.01, average: 20.77
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 45, dropped: 0, current: 19.99, average: 20.58
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 55, dropped: 0, current: 19.92, average: 20.45
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 66, dropped: 0, current: 20.09, average: 20.39
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 76, dropped: 0, current: 19.98, average: 20.34
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 87, dropped: 0, current: 20.01, average: 20.30
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 97, dropped: 0, current: 19.98, average: 20.26
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 108, dropped: 0, current: 20.02, average: 20.24
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 119, dropped: 0, current: 19.99, average: 20.21
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 130, dropped: 0, current: 19.99, average: 20.20
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 141, dropped: 0, current: 20.03, average: 20.18
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 151, dropped: 0, current: 19.99, average: 20.17
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 162, dropped: 0, current: 20.03, average: 20.16
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 172, dropped: 0, current: 19.97, average: 20.15
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 182, dropped: 0, current: 20.00, average: 20.14
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 192, dropped: 0, current: 20.00, average: 20.13
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 202, dropped: 0, current: 19.99, average: 20.13
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 213, dropped: 0, current: 20.02, average: 20.12
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 223, dropped: 0, current: 19.79, average: 20.10
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 234, dropped: 0, current: 20.17, average: 20.11
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 245, dropped: 0, current: 20.03, average: 20.10
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 255, dropped: 0, current: 19.94, average: 20.10
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 266, dropped: 0, current: 20.05, average: 20.10
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 277, dropped: 0, current: 20.00, average: 20.09
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 287, dropped: 0, current: 19.97, average: 20.09
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 298, dropped: 0, current: 20.03, average: 20.09
Using this pipeline I am only getting 20FPS. If I add “framerate=60/1” to my caps I get about 30FPS.
I am not sure why I cannot get 60FPS when I in fact verified that the external sync is sending 60Hz on the nose. I am also testing this on the following hardware:
- Jetson NX running Jetpack 4.5.1 and L4T 32.5.2
- Auvidea JNX30M carrier board
-Vision Components IMX568 monochrome camera
-Vision Components MIPI repeater board
-Proprietary Sync and Timecode Device (this is what I am using to generate the external sync)
I have also tried this using Nvidia’s dev kit board with no luck. I was able to get this working a few weeks ago on the Jetson dev kit using the same camera but running at 30Hz and at 24Hz. We need to use 4 lanes to achieve 60Hz and that is the reason for purchasing the Auvidea board.
I know for a fact the board and camera does 60Hz because I was able to achieve that framerate using the camera in free running mode (no trigger). Does anyone have any ideas what can be causing the camera to cut the FPS in half?