TX2 jpeg compression at high framerate and configuration?


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.

Hi EvilPictureBook,
The jpeg encoder on tx2 is mainly for single jpeg capturing and not able to achieve mjpeg performance. Suggest you use omxh264enc or omxh265enc.