]> git.parisson.com Git - telemeta.git/commitdiff
Item : fix pipe streaming against TimeSide 0.5.4 (thanks @thomasfillon !)
authorGuillaume Pellerin <yomguy@parisson.com>
Thu, 13 Feb 2014 23:49:20 +0000 (00:49 +0100)
committerGuillaume Pellerin <yomguy@parisson.com>
Thu, 13 Feb 2014 23:49:20 +0000 (00:49 +0100)
telemeta/views/core.py
telemeta/views/item.py

index f0821fe61016c46fd3c0265ff119f5695c5e850f..21d637b5ec1bea1a3c6acf57e11c82d981184011 100644 (file)
@@ -122,17 +122,12 @@ def render(request, template, data = None, mimetype = None):
     return render_to_response(template, data, context_instance=RequestContext(request),
                               mimetype=mimetype)
 
-def stream_from_processor(decoder, proc, flag, metadata=None):
-    if metadata:
-        proc.set_metadata(metadata)
-    eod = False
-    while not eod:
-        frames, eod = proc.process(*decoder.process())
-        yield proc.chunk
+def stream_from_processor(decoder, encoder, flag):
+    pipe = decoder | encoder
+    for chunk in pipe.stream():
+        yield chunk
     flag.value = True
     flag.save()
-    decoder.release()
-    proc.release()
 
 def stream_from_file(file):
     chunk_size = 0x100000
index c78344e933ca0b16b107bb14be2cae3e28622282..501f886b8dc8cbeb3703cff3981160c8ad2d6c77 100644 (file)
@@ -534,6 +534,7 @@ class ItemView(object):
                 proc = encoder(source, overwrite=True)
                 proc.set_metadata(metadata)
                 try:
+                    #FIXME: should test if metadata writer is available
                     proc.write_metadata()
                 except:
                     pass
@@ -543,13 +544,12 @@ class ItemView(object):
             if not self.cache_export.exists(file) or not flag.value:
                 # source > encoder > stream
                 decoder = timeside.decoder.FileDecoder(source)
-                decoder.setup()
                 proc = encoder(media, streaming=True, overwrite=True)
-                proc.setup(channels=decoder.channels(), samplerate=decoder.samplerate(),
-                            blocksize=decoder.blocksize(), totalframes=decoder.totalframes())
                 if extension in mapping.unavailable_extensions:
                     metadata=None
-                response = HttpResponse(stream_from_processor(decoder, proc, flag, metadata=metadata), mimetype = mime_type)
+                proc.set_metadata(metadata)
+                
+                response = HttpResponse(stream_from_processor(decoder, proc, flag), mimetype = mime_type)
             else:
                 # cache > stream
                 response = HttpResponse(self.cache_export.read_stream_bin(file), mimetype = mime_type)