One of our customers have the below queries:
The questions are with respect to hardware accelerated codec (H.264 abd H.265) on Tegra X1
For video quality analysis of the encoder, we are using the gstreamer (v1.2.4) which was part of the pre-installed package on Jetson-TX1. Will the usage of gstreamer for encoding raw content have any impact on the quality of the encoded content?
The gstreamer plugin omxh264enc provides configurability of “control-rate” which takes 5 values (Disable, Variable, Constant, Variable-skip-frames, Constant-skip-frames). What is the difference between control rate disable and variable control rate? Can you please elaborate on the differences of these modes?
Is there support for B-pictures by H.265 encoder? If so, is there a way to enable/disable it using gstreamer?
We use our own framework in our software systems/application, we do not use gstreamer. If we plan to integrate these hardware codecs into our software, which interface do you recommend us to use? Can we use OMX interface? Can you please give us more details on this?
Thanks in advance…!!
Respond to your questions as follows,
- The encoding quality is only related with omxh264enc and its parameters, which has nothing to do with gstreamer version(1.2.4, 1.5.1 and etc.)
Disabled: constant QP
Variable and Variable-skip-frame: actually it is same, for bSkipframe is not handled in codec driver.
Constant and constant-skip-frame: actually it is same, for bSkipframe is not handled in codec driver.
NO, HW doesn’t support it currently. For H264, we may support 0-2 B frames between P.
Gstreamer interface is the only one which we claim to support till now. You can use app-sink/app-src to develop your application. For OMX interface, library should be ok, but we don’t have official support, you can refer the source code from gst-omx component if you insist in this way.
In future release, we may have an official API release for multimedia, including H264&H265 codec interface. This should make it doable.
As nVConan indicated, omx will be obsolete. We will provide Multimedia API as a low-level API to gain access to Tegra codec hardware. This API is based on Linux libV4L2 library. The plan is to go with r24.2 release.
Can you give further details on the constant bitrate vs variable bitrate settings.
And how strict is the constant bitrate? Some of my customers expect only a +/- 3% output compared to the selected bitrate and currently it seems a little more lax than that especially at lower bitrates.
Is there any way to make it stricter?
“bEnableTwopassCBR” should be enabled. But now gstreamer don’t support this property setting yet. We will enable it later.
“vbv-size” should be set to 1, that means one frame buffer size.