python: Add a Gst.init_python function to be called from plugins
authorThibault Saunier <tsaunier@igalia.com>
Tue, 28 Jun 2022 20:35:58 +0000 (16:35 -0400)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 8 Jul 2022 14:37:14 +0000 (14:37 +0000)
Plugins know that they will be initialized after Gst was initialized
so they can call the initialization function dedicated for the python
bindings

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2675>

subprojects/gst-python/examples/plugins/python/audioplot.py
subprojects/gst-python/examples/plugins/python/exampleTransform.py
subprojects/gst-python/examples/plugins/python/identity.py
subprojects/gst-python/examples/plugins/python/mixer.py
subprojects/gst-python/examples/plugins/python/py_audiotestsrc.py
subprojects/gst-python/examples/plugins/python/sinkelement.py
subprojects/gst-python/gi/overrides/Gst.py

index cf1032fd4f4170c4e0a1a57afb9f0914eafcacec..8747fee1a1af678c21726f42c6e7acb4b1b0655f 100644 (file)
@@ -29,7 +29,7 @@ except ImportError:
     raise
 
 
-Gst.init(None)
+Gst.init_python()
 
 AUDIO_FORMATS = [f.strip() for f in
                  GstAudio.AUDIO_FORMATS_ALL.strip('{ }').split(',')]
index ed739048e9e13a86eceb384cad0ba5309cbaeee7..d244acb47802618472a7cb5a01e7845823aa2e37 100755 (executable)
@@ -15,7 +15,7 @@ from gi.repository import Gst, GObject, GstBase, GstVideo
 
 import numpy as np
 
-Gst.init(None)
+Gst.init_python()
 FIXED_CAPS = Gst.Caps.from_string('video/x-raw,format=GRAY8,width=[1,2147483647],height=[1,2147483647]')
 
 class ExampleTransform(GstBase.BaseTransform):
index 0f42efcccdeb5386d109b08d6f6b72cfe71195dd..23baf210e53d903a61e23a9a2f816ef0758bc73c 100644 (file)
@@ -16,7 +16,7 @@ import gi
 gi.require_version('GstBase', '1.0')
 
 from gi.repository import Gst, GObject, GstBase
-Gst.init(None)
+Gst.init_python()
 
 #
 # Simple Identity element created entirely in python
index 5d9aafe45c0097653c393ee4c72d9961a2de0477..846508a8a5defcd56ef446d9699912e9674c97b1 100644 (file)
@@ -20,7 +20,7 @@ gi.require_version('GObject', '2.0')
 
 from gi.repository import Gst, GObject, GstBase
 
-Gst.init(None)
+Gst.init_python()
 
 try:
     from PIL import Image
index 5e5ef3bfd9a5c685b6a6009da0d8c8e4f96e940a..3684d67347104b29ebace6d3de983899a4e2f626 100644 (file)
@@ -22,6 +22,8 @@ except ImportError:
     Gst.error('py_audiotestsrc requires numpy')
     raise
 
+Gst.init_python()
+
 OCAPS = Gst.Caps.from_string (
         'audio/x-raw, format=F32LE, layout=interleaved, rate=44100, channels=2')
 
index 94281e428c92b702abc58241ad0e07ca104f09a2..249e9c06faf9da17ddea3941a969b2bfd76bc7a0 100644 (file)
@@ -21,7 +21,7 @@
 #  $ gst-launch-1.0 videotestsrc ! pymysink://
 
 from gi.repository import Gst, GObject, GstBase
-Gst.init(None)
+Gst.init_python()
 
 #
 # Simple Sink element created entirely in python
index cef36d6496df110f775bcc22bac6d84389e2e455..902f53192dd991fa83f841ab7673a719f0dc9a62 100644 (file)
@@ -755,7 +755,14 @@ def deinit():
     deinit_pygst()
     return real_deinit()
 
+def init_python():
+    if not Gst.is_initialized():
+        raise NotInitialized("Gst.init_python should never be called before GStreamer itself is initialized")
+
+    init_pygst()
+
 Gst.deinit = deinit
+Gst.init_python = init_python
 
 if not Gst.is_initialized():
     deinit_pygst()