I was wondering if someone could help me understand whether what I’m trying to do is possible, and maybe how to get there.
I’m working on sending high frame rate/resolution video over Ethernet. We have a USB 3 Basler camera that’s generating images at 100fps (1920x1200). Until now we’ve been using a desktop computer (logic supply) to grab the image, and put them into a gstreamer pipeline:
pylon sdk (mono8) --> appsrc --> videoconvert (I420) --> jpegenc --> rtpjpegpay --> udpsink.
(videoconvert is there because rtpjpegpay doesn’t seem to work if I just compress mono8 . . . but before videoconvert was not too slow and I was still getting 100fps).
This works fine with a desktop processor, and we get the full 100fps (the network usage is high, but it’s fine since it’s gigabit wired)
We wanted to switch to using a TX2, but it seems that I can’t get more than about 20fps. I am able to get frames from the camera at a full 100fps. However the gstreamer pipeline is not able to process at more than 20 fps or so (30 to 50 ms between appsrc need_data callbacks). I tried both jpegenc and nvjpegenc elements, and I’m getting better performance with nvjpegenc (the 30/50ms that I listed), and even slower with just jpegenc. I ran the jetson_clock script, and tried compiling with the “-Ofast -march=native” flags.
I’m not sure if what I want to do can be done on the TX2, I thought it was, but I’m not sure now. I’m also not sure if there’s anything else I need to configure to get maximum performance other than running the jetson_clock script. And finally, are there any compiler settings I should be using?
Thank you all in advance, any advice on this would be great.