GStreamer hardware encoder


I need to use JETSON TX2 as an encoder (H264) to video stream to large video(5120x5120)

  1. I know that GStreamer h264 encoder can get max res 4096x4096 so I need to split the frame to tiles
    if there is another solution - I will glad to hear

  2. I need to know when the hardware encoder take place. I know that I can use video convert with NVMM memory,
    (something like gst-launch-1.0 … videocont (memory:NVMM)
    but I can’t see any effect when I looking CPU preformace, Do I need to do any special configuration to
    operate the hardware encoder?



We have gstreamer user guide:

For your case, you need to downscale 5120x5120 into 4096x4096 via nvvidconv and then send to encoder.

Thanks for your answer

I looked in the guide and I cant find information about the difference with and without NVMM what does it means?

is it way to encode the stream without downscale?


Hi alalieli,
video/x-raw is CPU buffer and video/x-raw(memory:NVMM) is HW DMA buffer.

4096x4096 is HW limitation. If 5120x5120 is must, you may use SW encoder.

Hi DaneLLL,

first thanks for your replay

If I have coming stream from camera (5120x5120) so I use appsrc as a gstreamer source
and I need to pipeline encoding what I use today is the following pipeline (The videotestsrc will be replaced by appsrc):

videotestsrc ->(caps filter) -> video/x-raw,width=5120,height=5120 format=I420 -> omxh264enc->(caps filter) video/x-h264,stream-format=byte-stream -> h264parse ->rtph264pay -> udpsink …

1.Is omxh264enc is HW encoder or SW encoder?
2. If I Use in omxh264enc caps filter NVMM instead of only x-raw is it means that I use CPU buffer and HW encoding or SW encoding?

I cant see any documentation that clarify these issues


omxh264enc is HW encoder.
You can try 3rdparty SW encoder: