Add LCEVC decoder and encoder plugins
This MR adds 2 new external plugins in gst-plugins-bad
(lcevcdecoder
and lcevcencoder
) to decode and encoder respectively MPEG-5 Part 2 (LCEVC) video using the V-Nova's SDK libraries.
Instructions describing how to test these plugins are included in a README.md
file on the root directory of each plugin.
For now, only H264 is supported as h264parse
is the only parser element that has the logic to extract LCEVC enhancement data from the encoded LCEVC video. This LCEVC enhancement data is then attached by the parser to encoded video buffers as GstLcevcMeta
, which is later used by the new lcevcdec
element (from lcevcdecoder
plugin) to enhanced the decoded video which was decoded by a base decoder (Eg avdec_h264). A simple decoding pipeline looks like this:
gst-launch-1.0 filesrc location=lcevc-sample.mp4 ! qtdemux ! h264parse ! avdec_h264 ! lcevcdec ! videoconvert ! autovideosink
Autoplugging elements also work as there is a new lcevch264decodebin
bin element that internally finds an H264 base decoder, and uses lcevcdec
afterwards.
On the other hand, regarding LCEVC encoding, the new lcevcencoder
plugin provides a lcevch264enc
element which internally loads and processes video with V-Nova's LCEVC Encoding SDK plugins. For example, to use the V-Nova LCEVC SDK's x264
plugin with lcevch264enc
, this is the needed pipeline:
gst-launch-1.0 videotestsrc pattern=ball num-buffers=1024 ! video/x-raw,width=1920,height=1080,format=I420,framerate=25/1 ! lcevch264enc plugin-name="x264" plugin-props="preset=superfast;tune=zerolatency" ! h264parse ! mp4mux ! filesink location=lcevc-sample.mp4
If the V-Nova's LCEVC Encoding SDK plugin is not specified using the plugin-name
property, the element will try to automatically find an available H264 plugin.