Video bitrate and quality settings using VP8 encoder

I’m currently using Gstreamer on a Jetson TX1 and TX2. I have a video encoding pipeline which uses the omxvp8enc hardware encoder. I stream the compressed video over a network where bandwidth usage is an important consideration.

For the omxvp8enc, there are two settings of interest: “quality-level” and “bitrate.” How do these settings interact with each other? Is there a range for the bitrate when the quality-level is set to a certain level (for example “0”)? I couldn’t find any information on this in the documentation.

It would be very helpful to get an idea of how the quality-level setting corresponds to bitrate ranges.

Hi vlad.glavtchev,
On r28.1, quality-level is renamed to ‘preset-level’

preset-level        : HW preset level for encoder
                        flags: readable, writable, changeable only in NULL or READY state
                        Enum "GstOMXVideoEncHwPreset" Default: 0, "UltraFastPreset"
                           (0): UltraFastPreset  - UltraFastPreset for high perf
                           (1): FastPreset       - FastPreset
                           (2): MediumPreset     - MediumPreset
                           (3): SlowPreset       - SlowPreset

Here is comparison in h264 encoding:
https://devtalk.nvidia.com/default/topic/932754/jetson-tx1/more-clarity-on-h-265-encode-parameters-/post/5037363/#5037363

You should see similar result in vp8 encoding. Under same bitrate, video quality is better but encoding speed is slower in SlowPreset.

DaneLLL, thank you for the clarification. I think it would be really helpful if you added this information to the encoder’s documentation:
“Under same bitrate, video quality is better but encoding speed is slower in SlowPreset.”

I think this would disambiguate the parameter settings for the encoder. I see other developers have had similar questions related to these settings.

One more clarification then, if the bitrate is not set and the preset-level parameter is used, what bitrate will the encoder use? Will it default to a preset value?

Hi vlad.glavtchev,
You can check encoder properties via

tegra_multimedia_api/samples/01_video_encode$ ./video_encode -h
$ gst-inspect-1.0 omxh264enc

bitrate by default is 4000000 bps

Document is https://developer.nvidia.com/embedded/dlc/l4t-accelerated-gstreamer-guide-28-1