From 05c4af017ba2891ee2bcfa56951421fbcfaad76a Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Fri, 10 Apr 2015 23:31:05 +0200 Subject: [PATCH] audio: Create fakesinks on the fly for scanner pads This makes us correctly handle say when someone gives us a movie, or something else that seems to have multiple things that can be encoded internally. --- mopidy/audio/scan.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/mopidy/audio/scan.py b/mopidy/audio/scan.py index 58793905..d9e5ae94 100644 --- a/mopidy/audio/scan.py +++ b/mopidy/audio/scan.py @@ -70,17 +70,16 @@ def _setup_pipeline(uri, proxy_config=None): typefind = gst.element_factory_make('typefind') decodebin = gst.element_factory_make('decodebin2') - sink = gst.element_factory_make('fakesink') pipeline = gst.element_factory_make('pipeline') - pipeline.add_many(src, typefind, decodebin, sink) + pipeline.add_many(src, typefind, decodebin) gst.element_link_many(src, typefind, decodebin) if proxy_config: utils.setup_proxy(src, proxy_config) decodebin.set_property('caps', _RAW_AUDIO) - decodebin.connect('pad-added', _pad_added, sink) + decodebin.connect('pad-added', _pad_added, pipeline) typefind.connect('have-type', _have_type, decodebin) return pipeline @@ -92,8 +91,13 @@ def _have_type(element, probability, caps, decodebin): element.get_bus().post(msg) -def _pad_added(element, pad, sink): - return pad.link(sink.get_pad('sink')) +def _pad_added(element, pad, pipeline): + sink = gst.element_factory_make('fakesink') + sink.set_property('sync', False) + + pipeline.add(sink) + sink.sync_state_with_parent() + pad.link(sink.get_pad('sink')) def _start_pipeline(pipeline):