Skip to content

gstavvidfilter: Implement MVP for libavfilter video filters

Markus Ebner requested to merge ebnerm/gst-libav:master into master

Hey guys,

I tried to write a gstreamer plugin, that exports (video) filters from libavfilter as gstreamer elements (only a selected set for now). This implementation should support filters that match the following criteria:

  • filter has 1 static input and 1 static output
  • filter takes video as input and produces video as output
  • filter works purely in software (no hardware textures or fancy stuff)
  • filter only changes either the pixel format, or the frame content

For now, the following libavfilter filters are whitelisted / were tested:

  • hqdn3d
  • nlmeans
  • vaguedenoiser
  • owdenoise

I tried to derive how to properly implement a GstVideoFilter/GstBaseTransform-plugin from documentation / tutorials and other existing implementations. I'm sorry if there are any grave mistakes. The pieces of code, where I was not able deduce the proper inner workings or have other questions are marked with //TODOs

As discussed with __tim on IRC: My GNU indent version is newer (2.2.12), thus the MR unfortunately contains a bit of unwanted re-styling, and the gst indent CI pipeline is failing. How should we best go about this?

Merge request reports