chiark / gitweb /
gremlin/gremlin.in: Add function for linking a sequence of elements.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 17 Apr 2018 21:23:07 +0000 (22:23 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 19 Apr 2018 11:22:49 +0000 (12:22 +0100)
Later versions of the Python GStreamer bindings lack a binding for
`gst_element_link_many' -- because that would make things too easy or
something -- so prepare by introducing and using a utility function.

No functional change.

gremlin/gremlin.in

index ce5492e3d65a987c7b2d17a84393a9ff1ee5694c..79c0ea9ddcb1433eeb52ffedfe03e307c4176b3a 100644 (file)
@@ -714,6 +714,10 @@ def make_element(factory, name = None, **props):
   elt.set_properties(**props)
   return elt
 
+def link_elements(elts):
+  "Link the elements ELTS together, in order."
+  GS.element_link_many(*elts)
+
 class GStreamerProgressEyecandy (ProgressEyecandy):
   """
   Provide amusement while GStreamer is busy doing something.
@@ -827,7 +831,7 @@ class AudioIdentifier (object):
         elt.link_pads(pad.get_name(), sink, 'sink')
     dpaid = decoder.connect('pad-added', decoder_pad_arrived)
     me._pipe.add(source, decoder, sink)
-    GS.element_link_many(source, decoder)
+    link_elements([source, decoder])
 
     ## Arrange to collect tags from the pipeline's bus as they're reported.
     ## If we reuse the pipeline later, we'll want different bus-message
@@ -991,7 +995,7 @@ class AudioFormat (BaseFormat):
     elts = me.encoder_chain()
     bin = GS.Bin()
     bin.add(*elts)
-    GS.element_link_many(*elts)
+    link_elements(elts)
     bin.add_pad(GS.GhostPad('sink', elts[0].get_pad('sink')))
     bin.add_pad(GS.GhostPad('src', elts[-1].get_pad('src')))
     return bin
@@ -1028,8 +1032,8 @@ class AudioFormat (BaseFormat):
     encoder = me.encoder()
     sink = make_element('filesink', 'sink', location = new)
     pipe.add(source, decoder, convert, encoder, sink)
-    GS.element_link_many(source, decoder)
-    GS.element_link_many(convert, encoder, sink)
+    link_elements([source, decoder])
+    link_elements([convert, encoder, sink])
 
     ## Some decoders (e.g., the AC3 decoder) include channel-position
     ## indicators in their output caps.  The Vorbis encoder interferes with