Change nvv4l2h264enc bitrate below 4Mbps

Hi,

I’ve been testing the following pipeline:

CAPS="video/x-raw, width=1920, height=1080"
BITRATE=4000000
gst-launch-1.0 videotestsrc ! $CAPS ! nvvideoconvert ! nvv4l2h264enc iframeinterval=1 bitrate=$BITRATE ! perf  ! fakesink

And monitoring the resulting bitrate with our perf element: GitHub - RidgeRun/gst-perf: GStreamer element to measure framerate, bitrate and CPU usage..

When changing the bitrate property in nvv4l2h264enc it works correctly as long as the value is larger than 4Mbps, if testing values smaller than this the bitrate doesn’t change.

Is there a reason for this capped bitrate or a way to get it lower?

Hi,
Please set qp-range and check again.

qp-range            : Qunatization range for P, I and B frame,
                     Use string with values of Qunatization Range
                     in MinQpP-MaxQpP:MinQpI-MaxQpI:MinQpB-MaxQpB order, to set the property.
                    flags: readable, writable
                    String. Default: null

We have seen lowest bitrate at 1.5Mbps in default iframeinterval:
https://devtalk.nvidia.com/default/topic/973295/jetson-tx1/constant-bitrate-help/post/5011599/#5011599
Because size of I frames are larger then P/B frames, you might see it higher than 1.5Mbps in iframeinterval=1.