Gstreamer

Tested a binary that uses gstreamer, but it just segfaulted.

gdb and strace didn’t help much, but setting GST_DEBUG=4 showed a lot what was going on.

To learn something about a certain gstreamer plugin:

$ gst-inspect-1.0 vaapi
Plugin Details:
  Name                     vaapi
  Description              VA-API based elements
  Filename                 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so
  Version                  1.20.1
  License                  LGPL
  Source module            gstreamer-vaapi
  Source release date      2022-03-14
  Binary package           gstreamer-vaapi
  Origin URL               https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues

  vaapidecodebin: VA-API Decode Bin
  vaapih264dec: VA-API H264 decoder
  vaapih264enc: VA-API H264 encoder
  vaapih265dec: VA-API H265 decoder
  vaapijpegdec: VA-API JPEG decoder
  vaapijpegenc: VA-API JPEG encoder
  vaapimpeg2dec: VA-API MPEG2 decoder
  vaapipostproc: VA-API video postprocessing
  vaapisink: VA-API sink
  vaapivp8dec: VA-API VP8 decoder
  vaapivp9dec: VA-API VP9 decoder

  11 features:
  +-- 11 elements

If the plugin is present, but there are 0 elements: this might also be caused by blacklisting of drivers:

$ gst-inspect-1.0 vaapi
Plugin Details:
  Name                     vaapi
  Description              VA-API based elements
  Filename                 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so
  Version                  1.16.0
  License                  LGPL
  Source module            gstreamer-vaapi
  Source release date      2019-04-19
  Binary package           gstreamer-vaapi
  Origin URL               http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer


  0 features:

To verify it is just the blacklist, use this variable:

$ GST_VAAPI_ALL_DRIVERS=all gst-inspect-1.0 vaapi
Plugin Details:
  Name                     vaapi
  Description              VA-API based elements
  Filename                 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvaapi.so
  Version                  1.16.0
  License                  LGPL
  Source module            gstreamer-vaapi
  Source release date      2019-04-19
  Binary package           gstreamer-vaapi
  Origin URL               http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer

  vaapih264enc: VA-API H264 encoder
  vaapijpegenc: VA-API JPEG encoder
  vaapisink: VA-API sink
  vaapidecodebin: VA-API Decode Bin
  vaapipostproc: VA-API video postprocessing
  vaapih265dec: VA-API H265 decoder
  vaapivp9dec: VA-API VP9 decoder
  vaapivp8dec: VA-API VP8 decoder
  vaapih264dec: VA-API H264 decoder
  vaapimpeg2dec: VA-API MPEG2 decoder
  vaapijpegdec: VA-API JPEG decoder

  11 features:
  +-- 11 elements

Other codecs that can do H.264 encoding are openh264:

$ gst-inspect-1.0 openh264
Plugin Details:
  Name                     openh264
  Description              OpenH264 encoder/decoder plugin
  Filename                 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstopenh264.so
  Version                  1.16.0
  License                  BSD
  Source module            gst-plugins-bad
  Source release date      2019-04-19
  Binary package           GStreamer Bad Plugins (Ubuntu)
  Origin URL               https://launchpad.net/distros/ubuntu/+source/gst-plugins-bad1.0

  openh264enc: OpenH264 video encoder
  openh264dec: OpenH264 video decoder

  2 features:
  +-- 2 elements

x264, but that is from “ugly”:

$ gst-inspect-1.0 x264
Plugin Details:
  Name                     x264
  Description              libx264-based H.264 encoder plugin
  Filename                 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstx264.so
  Version                  1.20.1
  License                  GPL
  Source module            gst-plugins-ugly
  Source release date      2022-03-14
  Binary package           GStreamer Ugly Plugins (Ubuntu)
  Origin URL               https://launchpad.net/distros/ubuntu/+source/gst-plugins-ugly1.0

  x264enc: x264 H.264 Encoder

  1 features:
  +-- 1 elements

Fluendo codecs: fluvah264enc and, fluh264enc. But I don’t have them.