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.
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:
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?
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