maximum FPS when encoding

The nvcamerasrc sets the maximum framerate at 120. We want to test the maximum FPS per second H.264 encoding that the TX2 is capable of. Is there a method for going above 120 FPS ?
Thanks,
K-

Hi kunice, the cap is removed in next release.

Could you feed a raw file in instead of a camera capture? A raw file pre-loaded into memory would make sure you’re not limited on anything else.

DaneLLL Thanks for the response

snarky, Thanks I will try that.

Its interesting. I use the following encode:
gst-launch-1.0 nvcamerasrc fpsRange=“120.0 120.0” intent=3 ! nvvidconv flip-method=2 ! ‘video/x-raw(memory:NVMM), width=(int)1920, height=(int)1280, format=(string)I420, framerate=(fraction)120/1’ ! omxh265enc control-rate=2 bitrate=10000000 ! ‘video/x-h265, stream-format=(string)byte-stream, framerate=(fraction)120/1’ ! h265parse ! rtph265pay mtu=1400 ! udpsink host=$CLIENT_IP port=5000 sync=false async=false

Then i use this decode:

gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=H265,payload=96 ! rtph265depay ! h265parse ! omxh265dec ! nvoverlaysink sync=false async=false -e

While the decoder is running, it keeps printing out '30.xxxxx FPS", so how does one get more than 30 FPS… or am i missing something?

K-

Hi kunice, what is the camera source? Does it support 1080p120?

DaneLLL,

I am using the standard Tegra X2 Jetson evaluation board with the onboard camera that comes with the evaluation system. I use nvcamerasrc as the video input (see first post comment).

K-

Hey Snarky,

I decided to try encoding a raw file with this command:

  • CLIENT_IP=127.0.0.1

  • gst-launch-1.0 -v filesrc location=/home/nvidia/KristenAndSara_1280x720_60.y4m ! y4mdec ! nvvidconv ! video/x-raw(memory:NVMM), height=(int)720, width=(int)1280, format=I420 ! omxh265enc control-rate=2 bitrate=10000000 ! video/x-h265, stream-format=(string)byte-stream, framerate=(fraction)120/1 ! h265parse ! rtph265pay mtu=1400 ! udpsink host=127.0.0.1 port=5000 sync=false async=false

Setting pipeline to PAUSED …
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is PREROLLED …
/GstPipeline:pipeline0/GstY4mDec:y4mdec0.GstPad:src: caps = “video/x-raw,\ format=(string)I420,\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ chroma-site=(string)mpeg2,\ colorimetry=(string)bt709,\ framerate=(fraction)60/1”
Setting pipeline to PLAYING …
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
streaming task paused, reason not-negotiated (-4)
Execution ended after 0:00:00.006337619
Setting pipeline to PAUSED …
Setting pipeline to READY …
Setting pipeline to NULL …
Freeing pipeline …
nvidia@tegra-ubuntu:~$

Okay got it working, but I am unable to up the framerate above 60 FPS (what is in the file). So how do I setup a file as input and have an arbitrary framerate through the pipeline?

  • CLIENT_IP=127.0.0.1
  • gst-launch-1.0 -v filesrc location=/home/nvidia/KristenAndSara_1280x720_60.y4m ! y4mdec ! nvvidconv ! video/x-raw(memory:NVMM), height=(int)720, width=(int)1280, format=I420 ! tee name=np np. ! omxh265enc control-rate=2 bitrate=10000000 ! video/x-h265, stream-format=(string)byte-stream ! h265parse ! rtph265pay mtu=1400 ! udpsink host=127.0.0.1 port=5000 sync=false async=false np. ! nvoverlaysink -e
    Setting pipeline to PAUSED …
    Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is PREROLLING …
    /GstPipeline:pipeline0/GstY4mDec:y4mdec0.GstPad:src: caps = “video/x-raw,\ format=(string)I420,\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ chroma-site=(string)mpeg2,\ colorimetry=(string)bt709,\ framerate=(fraction)60/1”
    /GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:src: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
    /GstPipeline:pipeline0/GstTee:np.GstTeePad:src_0: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
    Framerate set to : 60 at NvxVideoEncoderSetParameterNvMMLiteOpen : Block : BlockType = 8
    ===== MSENC =====
    NvMMLiteBlockCreate : Block : BlockType = 8
    /GstPipeline:pipeline0/GstOMXH265Enc-omxh265enc:omxh265enc-omxh265enc0.GstPad:sink: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
    /GstPipeline:pipeline0/GstTee:np.GstTeePad:src_1: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
    /GstPipeline:pipeline0/GstNvOverlaySink-nvoverlaysink:nvoverlaysink-nvoverlaysink0.GstPad:sink: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
    /GstPipeline:pipeline0/GstTee:np.GstPad:sink: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
    /GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:sink: caps = “video/x-raw,\ format=(string)I420,\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ chroma-site=(string)mpeg2,\ colorimetry=(string)bt709,\ framerate=(fraction)60/1”
    Pipeline is PREROLLED …
    Setting pipeline to PLAYING …
    New clock: GstSystemClock
    ===== NVENC blits (mode: 1) into block linear surfaces =====
    /GstPipeline:pipeline0/GstOMXH265Enc-omxh265enc:omxh265enc-omxh265enc0.GstPad:src: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1”
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:src: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1”
    /GstPipeline:pipeline0/GstH265Parse:h265parse0.GstPad:sink: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1”
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:sink: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1”
    /GstPipeline:pipeline0/GstH265Parse:h265parse0.GstPad:src: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ parsed=(boolean)true,\ profile=(string)main,\ tier=(string)main”
    /GstPipeline:pipeline0/GstRtpH265Pay:rtph265pay0.GstPad:sink: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ parsed=(boolean)true,\ profile=(string)main,\ tier=(string)main”
    /GstPipeline:pipeline0/GstRtpH265Pay:rtph265pay0.GstPad:src: caps = “application/x-rtp,\ media=(string)video,\ payload=(int)96,\ clock-rate=(int)90000,\ encoding-name=(string)H265,\ ssrc=(uint)909738154,\ timestamp-offset=(uint)2280259033,\ seqnum-offset=(uint)17788,\ a-framerate=(string)60”
    /GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = “application/x-rtp,\ media=(string)video,\ payload=(int)96,\ clock-rate=(int)90000,\ encoding-name=(string)H265,\ ssrc=(uint)909738154,\ timestamp-offset=(uint)2280259033,\ seqnum-offset=(uint)17788,\ a-framerate=(string)60”
    /GstPipeline:pipeline0/GstRtpH265Pay:rtph265pay0.GstPad:src: caps = “application/x-rtp,\ media=(string)video,\ clock-rate=(int)90000,\ encoding-name=(string)H265,\ sprop-parameter-sets=(string)“QAEMAf//AUAAAAMAAAMAAAMAAAMAEKwJAA\=\=\,QgEBAUAAAAMAAAMAAAMAAAMAEKACgIAuHxOWt5CEZLggAA\=\=\,RAHAc8DMkAA\=”,\ payload=(int)96,\ seqnum-offset=(uint)17788,\ timestamp-offset=(uint)2280259033,\ ssrc=(uint)909738154,\ a-framerate=(string)60”
    /GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = “application/x-rtp,\ media=(string)video,\ clock-rate=(int)90000,\ encoding-name=(string)H265,\ sprop-parameter-sets=(string)“QAEMAf//AUAAAAMAAAMAAAMAAAMAEKwJAA\=\=\,QgEBAUAAAAMAAAMAAAMAAAMAEKACgIAuHxOWt5CEZLggAA\=\=\,RAHAc8DMkAA\=”,\ payload=(int)96,\ seqnum-offset=(uint)17788,\ timestamp-offset=(uint)2280259033,\ ssrc=(uint)909738154,\ a-framerate=(string)60”
    /GstPipeline:pipeline0/GstRtpH265Pay:rtph265pay0: timestamp = 2280259033
    /GstPipeline:pipeline0/GstRtpH265Pay:rtph265pay0: seqnum = 17788
    Got EOS from element “pipeline0”.
    Execution ended after 0:00:10.016558498
    Setting pipeline to PAUSED …
    Setting pipeline to READY …
    Setting pipeline to NULL …
    Freeing pipeline …

Hi kunice, we are not sure how y4m works. Other user can share experience.

Here is a post about 240fps on TX1:
https://devtalk.nvidia.com/default/topic/1006894/jetson-tx1/nvcamerasrc-gst-plugin-frame-rate-limitation/post/5154382/#5154382
It should also work fine on TX2.

I just I reach 8fps with the tx2 board camera ,but my last tx2 board can only reach 5fps,It’s odd