Fixes some bug, probably?
[python-gstreamer-examples] / example5.py
index b77539829bdaf9b601f4179185ae44512b016c10..b252a1741c3b5a1160b20b0d44740bb11d050673 100755 (executable)
@@ -61,12 +61,12 @@ class Main:
         # src3
         self.src3 = Gst.ElementFactory.make("rtmpsrc", "src3")
         self.src3.set_property("location", stream1)
-#        self.src3caps = Gst.ElementFactory.make("capsfilter", "src3caps")
-#        self.src3caps.set_property("caps", xrawcaps)
+        self.src3caps = Gst.ElementFactory.make("capsfilter", "src3caps")
+        self.src3caps.set_property("caps", xrawcaps)
         self.src3dec = Gst.ElementFactory.make("decodebin", "src3dec")
         self.src3crop = Gst.ElementFactory.make("aspectratiocrop", "src3crop")
         self.src3crop.set_property("aspect-ratio", Gst.Fraction(16, 9))
-        self.src3crop.set_property("async-handling", True)
+        self.src3crop.set_property("message-forward", True)
         self.src3croppad = self.src3crop.get_static_pad("sink")
         self.src3scale = Gst.ElementFactory.make("videoscale")
         self.src3scalecaps = Gst.ElementFactory.make("capsfilter", "src3scalecaps")
@@ -97,9 +97,9 @@ class Main:
         self.src2dec.connect("pad-added", self.OnPadAdded, self.src2pad, self.videomix)
 
         self.pipeline.add(self.src3)
-#        self.pipeline.add(self.src3caps)
         self.pipeline.add(self.src3dec)
-        self.src3dec.connect("pad-added", self.OnPadAdded, self.src3croppad, self.src3scale)
+        self.src3dec.connect("pad-added", self.OnPadAdded, self.src3croppad, self.src3crop)
+        self.pipeline.add(self.src3crop)
         self.pipeline.add(self.src3scale)
         self.pipeline.add(self.src3scalecaps)
 
@@ -119,18 +119,14 @@ class Main:
         if not self.src2caps.link(self.src2dec):
             print("Failed to link src2caps to src2dec")
 
-#        if not self.src3.link(self.src3caps):
-#            print("Failed to link src3 to src3caps")
         if not self.src3.link(self.src3dec):
             print("Failed to link src3 to src3dec")
+        if not self.src3crop.link(self.src3scale):
+            print("Failed to link src3crop to src3scale")
         if not self.src3scale.link(self.src3scalecaps):
             print("Failed to link src3scale to src3scalecaps")
-       if not self.src3scalecaps.link(self.src3crop):
-           print("Failed to link src3scalecaps to src3crop")
-       if not self.src3crop.link(self.src3cropcaps):
-           print("Failed to link src3crop to src3cropcaps")
-       if not self.src3cropcaps.link(self.videomix):
-           print("Failed to link src3cropcaps to videomix")
+        if not self.src3scalecaps.link_pads("src", self.videomix, "sink_3"):
+            print("Failed to link src3scalecaps to videomix")
 
         # Set up a bus to our pipeline to get notified when the video is ready
         self.bus = self.pipeline.get_bus()
@@ -160,6 +156,7 @@ class Main:
 
     def OnPadAdded(self, element, pad, sink, target):
         print("Dynamic pad for " + element.name + " added, linking to " + target.name)
+        print(sink.name)
         pad.link(sink)
         element.link(target)