gstavvidfilter: Implement MVP for libavfilter video filters
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 //TODO
s
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?