rendered paste bodyIndex: __init__.py
===================================================================
--- __init__.py (revision 70)
+++ __init__.py (working copy)
@@ -126,6 +126,7 @@
global AUDIO_SINK, pcm_socket_path
ENABLED = 1
AUDIO_SINK = AudioSink(exaile)
+ providers.register('playback_audio_sink', AUDIO_SINK)
sck_thrd = pcm_sock_thread()
sck_thrd.start()
run_projectM((pcm_socket_path,))
@@ -139,17 +140,31 @@
destroy_pcm_socket()
print "projectM-exaile: Shutdown"
-class AudioSink(object):
+class AudioSink(gst.Bin):
def __init__(self, exaile):
+ gst.Bin.__init__(self)
+ self.name = 'projectm-audiosink'
self.arr = None
self.exaile = exaile
+ elems = []
+ self.convert = gst.element_factory_make("audioconvert")
+ elems.append(self.convert)
+ self.caps = gst.Caps("audio/x-raw-float, width=32, channels=1")
+ self.filter = gst.element_factory_make("capsfilter")
+ self.filter.props.caps = self.caps
+ elems.append(self.filter)
self.sink = gst.element_factory_make("appsink", "projectm-audiosink")
- self.sink.name = 'projectm-audiosink'
self.sink.set_property('emit-signals', True)
self.sink.connect('new-preroll', self.new_preroll)
self.sink.connect('new-buffer', self.new_buffer)
- providers.register('playback_audio_sink', self.sink)
+ elems.append(self.sink)
+ self.add(*elems)
+ gst.element_link_many(*elems)
+ self.sinkpad = elems[0].get_static_pad("sink")
+ self.add_pad(gst.GhostPad('sink', self.sinkpad))
+
+
def new_preroll(self, sink):
buf = sink.emit('pull-preroll')
@@ -157,4 +172,4 @@
global PCM_DATA,CONNECTED
buf = sink.emit('pull-buffer')
PCM_DATA = buf.data
- write_pcm_socket(PCM_DATA)
+ write_pcm_socket(PCM_DATA)