Hello guys, i'm working on a project where i want to use "vaapi overlay" element, connected at some point in a pipeline after (but not directly linked to) a selector-input.
During some tests i noticed that vaapi overlay, differently from other similar elements such as compositor, is not able to handle modifications of CAPS introduced by switching selector and changing video source on a given allocated sink pad.
After some investigations, basically based on a, let me say, "differential analysis" with other elements, i realized that this behaviour should or could be related to the fact that vaapioverlay has not a GstAggregatorConvertPad but a "simpler" GstAggregatorPad.
So using a not very sophisticated approach, i tried to merge the most relevant differences with compositor elements hoping to fix this behaviour, even if i know that this is not a proper and strict professional approach.
To be onest i'm far to be sure that what i done could be enough, typically i don't work with gobject ecosystem much less with gstreamer. I'm in doubt expecially on potentially memory leaks and deadlocks introduced reusing improperly some peaces of code.
In any case my tests gave a good results in spite of everything, so let me know something about my merge request expecially if i missed anything and where i can make improvements.