]> git.parisson.com Git - timeside.git/commitdiff
fix totalframes, fix process running before setup mainloop startup
authoryomguy <yomguy@parisson.com>
Wed, 26 Sep 2012 20:49:53 +0000 (22:49 +0200)
committeryomguy <yomguy@parisson.com>
Wed, 26 Sep 2012 20:49:53 +0000 (22:49 +0200)
timeside/core.py
timeside/decoder/core.py

index 8fecc21b00c00d5070d7854c89399a96c423c808..3d02115c736d39dab4d765c65d0242eb7d2303d7 100644 (file)
@@ -21,6 +21,7 @@ from timeside.component import *
 from timeside.api import IProcessor
 from timeside.exceptions import Error, ApiError
 import re
+import time
 import numpy
 
 __all__ = ['Processor', 'MetaProcessor', 'implements', 'abstract',
@@ -214,9 +215,15 @@ class ProcessPipe(object):
 
         # setup/reset processors and configure channels and samplerate throughout the pipe
         source.setup()
+        #FIXME: wait for decoder mainloop
+        time.sleep(0.1)
+
         last = source
         for item in items:
-            item.setup(last.channels(), last.samplerate(), last.blocksize(), last.totalframes())
+            item.setup(channels = last.channels(),
+                       samplerate = last.samplerate(),
+                       blocksize = last.blocksize(),
+                       totalframes = last.totalframes())
             last = item
 
         # now stream audio data along the pipe
index c8f2604229cd1ce4b802131e01ccca714816adc0..49e9cb9ea35e0acefec2fd0866df4d8e2e9e4177 100644 (file)
@@ -181,7 +181,6 @@ class FileDecoder(Processor):
                 self.input_width = caps[0]["width"]
             else:
                 self.input_width = caps[0]["depth"]
-            self.output_totalframes = self.totalframes()
 
     def _on_message_cb(self, bus, message):
         t = message.type
@@ -239,7 +238,7 @@ class FileDecoder(Processor):
         if self.input_samplerate == self.output_samplerate:
             return self.input_totalframes
         else:
-            ratio = self.input_totalframes / self.output_samplerate
+            ratio = self.output_samplerate / self.input_samplerate
             return self.input_totalframes * ratio
 
     @interfacedoc