All pastes #1946604 Raw Edit

Miscellany

public text v1 · immutable
#1946604 ·published 2010-09-22 15:49 UTC
rendered paste body
Index: __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)