From e3235e96208732e410a8ea807bc072970dbba619 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Fri, 29 Apr 2011 22:17:50 +0200 Subject: [PATCH] Fix for #85 - appsrc wasn't being linked due to lack of default caps --- mopidy/outputs/gstreamer.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mopidy/outputs/gstreamer.py b/mopidy/outputs/gstreamer.py index a6d1e9dd..11cddc42 100644 --- a/mopidy/outputs/gstreamer.py +++ b/mopidy/outputs/gstreamer.py @@ -13,6 +13,15 @@ from mopidy.outputs.base import BaseOutput logger = logging.getLogger('mopidy.outputs.gstreamer') +default_caps = gst.Caps(""" + audio/x-raw-int, + endianness=(int)1234, + channels=(int)2, + width=(int)16, + depth=(int)16, + signed=(boolean)true, + rate=(int)44100""") + class GStreamerOutput(ThreadingActor, BaseOutput): """ Audio output through `GStreamer `_. @@ -48,6 +57,7 @@ class GStreamerOutput(ThreadingActor, BaseOutput): uridecodebin = gst.element_factory_make('uridecodebin', 'uri') uridecodebin.connect('pad-added', self._process_new_pad, pad) + uridecodebin.connect('notify::source', self._process_new_source) self.gst_pipeline.add(uridecodebin) # Setup bus and message processor @@ -55,6 +65,13 @@ class GStreamerOutput(ThreadingActor, BaseOutput): gst_bus.add_signal_watch() gst_bus.connect('message', self._process_gstreamer_message) + def _process_new_source(self, element, pad): + source = element.get_by_name('source') + try: + source.set_property('caps', default_caps) + except TypeError: + pass + def _process_new_pad(self, source, pad, target_pad): pad.link(target_pad)