I’m trying to write a custom plugin and embed it into a python app. I use this python example and I test the plugin with the command GST_PLUGIN_PATH="$PWD" gst-launch-1.0 videotestsrc ! ExampleTransform ! fakesink
and it seems it works. At least pipeline sets to the PLAYING state.
I try to build the same pipeline with the same plugin into python code:
import gi
gi.require_version('Gst', '1.0')
gi.require_version('GstBase', '1.0')
gi.require_version('GstVideo', '1.0')
from gi.repository import Gst, GObject
Gst.init()
def main():
pipeline = Gst.parse_launch(
"videotestsrc ! ExampleTransform ! fakesink"
)
pipeline.set_state(Gst.State.PLAYING)
try:
loop = GObject.MainLoop()
loop.run()
except KeyboardInterrupt:
pass
finally:
pipeline.set_state(Gst.State.NULL)
if __name__ == "__main__":
main()
When I run it with GST_PLUGIN_PATH="$PWD" python3 main2.py
I fail with error:
(python3:180): GStreamer-Base-CRITICAL **: 14:28:17.678: gst_base_transform_init: assertion 'pad_template != NULL' failed
Traceback (most recent call last):
File "/app/main2.py", line 28, in <module>
main()
File "/app/main2.py", line 12, in main
pipeline = Gst.parse_launch(
gi.repository.GLib.GError: gst_parse_error: could not link videotestsrc0 to exampletransform+exampletransform0 (3)