From d6516915e5e8f59b9cb21351469fa41ca8dbcdd1 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Wed, 27 Oct 2010 00:15:08 +0200 Subject: [PATCH] Setup proper pipeline for handling of files in scanner --- mopidy/scanner.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mopidy/scanner.py b/mopidy/scanner.py index f3792d5a..937ee2b1 100644 --- a/mopidy/scanner.py +++ b/mopidy/scanner.py @@ -46,8 +46,14 @@ class Scanner(object): self.error_callback = error_callback self.loop = gobject.MainLoop() + fakesink = gst.element_factory_make('fakesink') + pad = fakesink.get_pad('sink') + self.uribin = gst.element_factory_make('uridecodebin') + self.uribin.connect('pad-added', self.process_new_pad, pad) + self.pipe = gst.element_factory_make('pipeline') + self.pipe.add(fakesink) self.pipe.add(self.uribin) bus = self.pipe.get_bus() @@ -55,7 +61,13 @@ class Scanner(object): bus.connect('message::tag', self.process_tags) bus.connect('message::error', self.process_error) + def process_new_pad(self, source, pad, target_pad): + pad.link(target_pad) + def process_tags(self, bus, message): + # Block for state change so that duration can be safely determined + self.pipe.get_state() + data = message.parse_tag() data = dict([(k, data[k]) for k in data.keys()]) data['uri'] = self.uribin.get_property('uri')