From b5b2319ac1d83ebc5aad3a42baafb3560cdd2d11 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sun, 24 Apr 2011 17:57:04 +0200 Subject: [PATCH] Use uridecodebin for all playblack --- mopidy/backends/spotify/playback.py | 2 +- mopidy/outputs/gstreamer.py | 28 +++++++--------------------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/mopidy/backends/spotify/playback.py b/mopidy/backends/spotify/playback.py index a066d90e..b02c2d9f 100644 --- a/mopidy/backends/spotify/playback.py +++ b/mopidy/backends/spotify/playback.py @@ -20,7 +20,7 @@ class SpotifyPlaybackProvider(BasePlaybackProvider): self.backend.spotify.session.load( Link.from_string(track.uri).as_track()) self.backend.spotify.session.play(1) - self.backend.output.set_state('PLAYING') + self.backend.output.play_uri('appsrc://') return True except SpotifyError as e: logger.warning('Play %s failed: %s', track.uri, e) diff --git a/mopidy/outputs/gstreamer.py b/mopidy/outputs/gstreamer.py index 0596addb..a6d1e9dd 100644 --- a/mopidy/outputs/gstreamer.py +++ b/mopidy/outputs/gstreamer.py @@ -46,23 +46,9 @@ class GStreamerOutput(ThreadingActor, BaseOutput): pad = self.gst_pipeline.get_by_name('convert').get_pad('sink') - if settings.BACKENDS[0] == 'mopidy.backends.local.LocalBackend': - uri_bin = gst.element_factory_make('uridecodebin', 'uri') - uri_bin.connect('pad-added', self._process_new_pad, pad) - self.gst_pipeline.add(uri_bin) - else: - app_src = gst.element_factory_make('appsrc', 'appsrc') - app_src_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""") - app_src.set_property('caps', app_src_caps) - self.gst_pipeline.add(app_src) - app_src.get_pad('src').link(pad) + uridecodebin = gst.element_factory_make('uridecodebin', 'uri') + uridecodebin.connect('pad-added', self._process_new_pad, pad) + self.gst_pipeline.add(uridecodebin) # Setup bus and message processor gst_bus = self.gst_pipeline.get_bus() @@ -98,12 +84,12 @@ class GStreamerOutput(ThreadingActor, BaseOutput): def deliver_data(self, caps_string, data): """Deliver audio data to be played""" - app_src = self.gst_pipeline.get_by_name('appsrc') + source = self.gst_pipeline.get_by_name('source') caps = gst.caps_from_string(caps_string) buffer_ = gst.Buffer(buffer(data)) buffer_.set_caps(caps) - app_src.set_property('caps', caps) - app_src.emit('push-buffer', buffer_) + source.set_property('caps', caps) + source.emit('push-buffer', buffer_) def end_of_data_stream(self): """ @@ -112,7 +98,7 @@ class GStreamerOutput(ThreadingActor, BaseOutput): We will get a GStreamer message when the stream playback reaches the token, and can then do any end-of-stream related tasks. """ - self.gst_pipeline.get_by_name('appsrc').emit('end-of-stream') + self.gst_pipeline.get_by_name('source').emit('end-of-stream') def get_position(self): try: