diff --git a/mopidy/audio/actor.py b/mopidy/audio/actor.py index 162e2a05..b422bc67 100644 --- a/mopidy/audio/actor.py +++ b/mopidy/audio/actor.py @@ -225,22 +225,16 @@ class Audio(pykka.ThreadingActor): """ self._playbin.set_property('uri', uri) - def emit_data(self, capabilities, data): + def emit_data(self, buffer_): """ Call this to deliver raw audio data to be played. Note that the uri must be set to ``appsrc://`` for this to work. - :param capabilities: a GStreamer capabilities string - :type capabilities: string - :param data: raw audio data to be played + :param buffer_: buffer to pass to appsrc + :type buffer_: :class:`gst.Buffer` """ - caps = gst.caps_from_string(capabilities) - buffer_ = gst.Buffer(buffer(data)) - buffer_.set_caps(caps) - source = self._playbin.get_property('source') - source.set_property('caps', caps) source.emit('push-buffer', buffer_) def emit_end_of_stream(self): diff --git a/mopidy/backends/spotify/session_manager.py b/mopidy/backends/spotify/session_manager.py index cd3d97db..8032a289 100644 --- a/mopidy/backends/spotify/session_manager.py +++ b/mopidy/backends/spotify/session_manager.py @@ -1,5 +1,9 @@ from __future__ import unicode_literals +import pygst +pygst.require('0.10') +import gst + import logging import os import threading @@ -108,7 +112,10 @@ class SpotifySessionManager(process.BaseThread, PyspotifySessionManager): 'sample_rate': sample_rate, 'channels': channels, } - self.audio.emit_data(capabilites, bytes(frames)) + buffer_ = gst.Buffer(bytes(frames)) + buffer_.set_caps(gst.caps_from_string(capabilites)) + + self.audio.emit_data(buffer_) return num_frames def play_token_lost(self, session):