From 0fa4764fab4816b50c9996381905600e79c52da3 Mon Sep 17 00:00:00 2001 From: yomguy Date: Thu, 14 Apr 2011 21:23:20 +0000 Subject: [PATCH] add unittest for graphers, fix flac encoder, change filenames of encoder unittest outputs, transcoding still BROKEN in many cases, grahers from MP3 and OGG seems to be broken also... :( --- timeside/decoder/core.py | 3 +- timeside/encoder/flac.py | 6 +- timeside/tests/testgraphers.py | 80 +++++++++++++++++++++++++ timeside/tests/testlowlevelstreaming.py | 30 +++++++--- 4 files changed, 107 insertions(+), 12 deletions(-) create mode 100644 timeside/tests/testgraphers.py diff --git a/timeside/decoder/core.py b/timeside/decoder/core.py index 3f3bb65..d35a2fa 100644 --- a/timeside/decoder/core.py +++ b/timeside/decoder/core.py @@ -174,7 +174,8 @@ class FileDecoder(Processor): return array([0.]), True if buf == None: return array([0.]), True - return self.gst_buffer_to_numpy_array(buf), False + samples = self.gst_buffer_to_numpy_array(buf) + return samples, False @interfacedoc def release(self): diff --git a/timeside/encoder/flac.py b/timeside/encoder/flac.py index 66db6b3..0a12066 100644 --- a/timeside/encoder/flac.py +++ b/timeside/encoder/flac.py @@ -62,13 +62,13 @@ class FlacEncoder(Processor): elif self.filename : self.pipe += '! filesink location=%s ' % self.filename else: - self.pipe += '! appsink name=sink sync=False ' + self.pipe += '! appsink name=app sync=False ' self.pipeline = gst.parse_launch(self.pipe) # store a pointer to appsrc in our encoder object self.src = self.pipeline.get_by_name('src') # store a pointer to appsink in our encoder object - self.sink = self.pipeline.get_by_name('sink') + self.app = self.pipeline.get_by_name('app') srccaps = gst.Caps("""audio/x-raw-float, endianness=(int)1234, @@ -116,7 +116,7 @@ class FlacEncoder(Processor): buf = self.numpy_array_to_gst_buffer(frames) self.src.emit('push-buffer', buf) if self.streaming: - self.chunk = pull = self.sink.emit('pull-buffer') + self.chunk = self.app.emit('pull-buffer') return frames, eod def numpy_array_to_gst_buffer(self, frames): diff --git a/timeside/tests/testgraphers.py b/timeside/tests/testgraphers.py new file mode 100644 index 0000000..ec24418 --- /dev/null +++ b/timeside/tests/testgraphers.py @@ -0,0 +1,80 @@ + +from timeside.core import * +from timeside.decoder import * +from timeside.analyzer import * +from timeside.encoder import * +from timeside.grapher import * +from timeside.api import * + +from timeside.component import * +from timeside.tests import TestCase, TestRunner +import unittest + +import os.path + +__all__ = ['TestComponentArchitecture'] + +class TestGraphers(TestCase): + "Test all graphers with various input media formats" + + def setUp(self): + pass + + # WAVEFORMS + def testWav2Waveform(self): + "Test WAV to Waveform" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") + self.image = "/tmp/test_waveform_sweep_wav.png" + self.grapher = Waveform(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testFlac2Waveform(self): + "Test FLAC to Waveform" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.flac") + self.image = "/tmp/test_waveform_sweep_flac.png" + self.grapher = Waveform(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testMp32Waveform(self): + "Test MP3 to Waveform" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.mp3") + self.image = "/tmp/test_waveform_sweep_mp3.png" + self.grapher = Waveform(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testOgg2Waveform(self): + "Test OGG to Waveform" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.ogg") + self.image = "/tmp/test_waveform_sweep_ogg.png" + self.grapher = Waveform(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + # SPECTROGRAMS + def testWav2Spectrogram(self): + "Test WAV to Spectrogram" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") + self.image = "/tmp/test_spectrogram_sweep_wav.png" + self.grapher = Spectrogram(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testMp32Spectrogram(self): + "Test MP3 to Spectrogram" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.mp3") + self.image = "/tmp/test_spectrogram_sweep_mp3.png" + self.grapher = Spectrogram(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testFlac2Spectrogram(self): + "Test FLAC to Spectrogram" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.flac") + self.image = "/tmp/test_spectrogram_sweep_flac.png" + self.grapher = Spectrogram(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testOgg2Spectrogram(self): + "Test OGG to Spectrogram" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.ogg") + self.image = "/tmp/test_spectrogram_sweep_ogg.png" + self.grapher = Spectrogram(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def tearDown(self): + decoder = FileDecoder(self.source) + (decoder | self.grapher).run() + self.grapher.render(self.image) + +if __name__ == '__main__': + unittest.main(testRunner=TestRunner()) + diff --git a/timeside/tests/testlowlevelstreaming.py b/timeside/tests/testlowlevelstreaming.py index 5c74edf..f5af1cf 100644 --- a/timeside/tests/testlowlevelstreaming.py +++ b/timeside/tests/testlowlevelstreaming.py @@ -23,8 +23,8 @@ class TestLowLevel(TestCase): "Test wav to mp3 conversion" self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") - dest1 = "/tmp/test_filesink.mp3" - dest2 = "/tmp/test_appsink.mp3" + dest1 = "/tmp/test_wav_filesink.mp3" + dest2 = "/tmp/test_wav_appsink.mp3" self.f = open(dest2,'w') self.streaming=True @@ -36,8 +36,8 @@ class TestLowLevel(TestCase): "Test flac to mp3 conversion" self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.flac") - dest1 = "/tmp/test_filesink.mp3" - dest2 = "/tmp/test_appsink.mp3" + dest1 = "/tmp/test_flac_filesink.mp3" + dest2 = "/tmp/test_flac_appsink.mp3" self.f = open(dest2,'w') self.streaming=True @@ -50,8 +50,8 @@ class TestLowLevel(TestCase): return False self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.flac") - dest1 = "/tmp/test_filesink.ogg" - dest2 = "/tmp/test_appsink.ogg" + dest1 = "/tmp/test_flac_filesink.ogg" + dest2 = "/tmp/test_flac_appsink.ogg" self.f = open(dest2,'w') self.streaming=True @@ -64,8 +64,8 @@ class TestLowLevel(TestCase): return False self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") - dest1 = "/tmp/test_filesink.ogg" - dest2 = "/tmp/test_appsink.ogg" + dest1 = "/tmp/test_wav_filesink.ogg" + dest2 = "/tmp/test_wav_appsink.ogg" self.f = open(dest2,'w') self.streaming=True @@ -73,6 +73,20 @@ class TestLowLevel(TestCase): encoder = VorbisEncoder(dest1, streaming=True) self.encoder = encoder + def testWav2Flac(self): + "Test wav to flac conversion" + return False + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") + + dest1 = "/tmp/test_wav_filesink.flac" + dest2 = "/tmp/test_wav_appsink.flac" + self.f = open(dest2,'w') + + self.streaming=True + + encoder = FlacEncoder(dest1, streaming=True) + self.encoder = encoder + def setUpDecoder(self): self.decoder = FileDecoder(self.source) self.decoder.setup() -- 2.39.5