From: yomguy Date: Wed, 26 Sep 2012 23:59:28 +0000 (+0200) Subject: fix analyzers, add testanalyzing, passing all 72 tests ;) X-Git-Tag: 0.4.0-a^2~2 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=refs%2Fheads%2Fgst-yomguy;p=timeside.git fix analyzers, add testanalyzing, passing all 72 tests ;) --- diff --git a/tests/alltests.py b/tests/alltests.py index 8c76b9b..0138755 100644 --- a/tests/alltests.py +++ b/tests/alltests.py @@ -1,8 +1,8 @@ from testcomponent import * from testinputadapter import * -from testgraphers import * from testdecoding import * -from testtranscoding import * +from testgraphing import * +from testanalyzing import * from testencoding import * from unit_timeside import * diff --git a/tests/testgraphers.py b/tests/testgraphers.py deleted file mode 100644 index 5b7d84f..0000000 --- a/tests/testgraphers.py +++ /dev/null @@ -1,126 +0,0 @@ -from timeside.core import * -from timeside.decoder import * -from timeside.grapher import * -from timeside.api import * -from timeside.component import * -from unit_timeside import * - -import os.path - -__all__ = ['TestGraphers'] - -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') - - # WAVEFORMS CONTOUR BLACK - def testWav2WaveformContourBlack(self): - "Test WAV to WaveformContourBlack" - self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") - self.image = "/tmp/test_waveform_contour_bk_sweep_wav.png" - self.grapher = WaveformContourBlack(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') - - def testFlac2WaveformContourBlack(self): - "Test FLAC to WaveformContourBlack" - self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.flac") - self.image = "/tmp/test_waveform_contour_bk_sweep_flac.png" - self.grapher = WaveformContourBlack(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') - - def testMp32WaveformContourBlack(self): - "Test MP3 to WaveformContourBlack" - self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.mp3") - self.image = "/tmp/test_waveform_contour_bk_sweep_mp3.png" - self.grapher = WaveformContourBlack(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') - - def testOgg2WaveformContourBlack(self): - "Test OGG to WaveformContourBlack" - self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.ogg") - self.image = "/tmp/test_waveform_contour_bk_sweep_ogg.png" - self.grapher = WaveformContourBlack(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') - - # WAVEFORMS CONTOUR WHITE - def testWav2WaveformContourWhite(self): - "Test WAV to WaveformContourWhite" - self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") - self.image = "/tmp/test_waveform_contour_wh_sweep_wav.png" - self.grapher = WaveformContourWhite(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') - - def testFlac2WaveformContourWhite(self): - "Test FLAC to WaveformContourWhite" - self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.flac") - self.image = "/tmp/test_waveform_contour_wh_sweep_flac.png" - self.grapher = WaveformContourWhite(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') - - def testMp32WaveformContourWhite(self): - "Test MP3 to WaveformContourWhite" - self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.mp3") - self.image = "/tmp/test_waveform_contour_wh_sweep_mp3.png" - self.grapher = WaveformContourWhite(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') - - def testOggWaveformContourWhite(self): - "Test OGG to WaveformContourWhite" - self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.ogg") - self.image = "/tmp/test_waveform_contour_wh_sweep_ogg.png" - self.grapher = WaveformContourWhite(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/tests/testgraphing.py b/tests/testgraphing.py new file mode 100644 index 0000000..b10e82a --- /dev/null +++ b/tests/testgraphing.py @@ -0,0 +1,130 @@ +from timeside.decoder import * +from timeside.grapher import * +from unit_timeside import * + +import os.path + +__all__ = ['TestGraphing'] + +class TestGraphing(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') + + # WAVEFORM SIMPLE + def testWav2WaveformSimple(self): + "Test WAV to WaveformSimple" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") + self.image = "/tmp/test_waveform_simple_sweep_wav.png" + self.grapher = WaveformSimple(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + # WAVEFORMS CONTOUR BLACK + def testWav2WaveformContourBlack(self): + "Test WAV to WaveformContourBlack" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") + self.image = "/tmp/test_waveform_contour_bk_sweep_wav.png" + self.grapher = WaveformContourBlack(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testFlac2WaveformContourBlack(self): + "Test FLAC to WaveformContourBlack" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.flac") + self.image = "/tmp/test_waveform_contour_bk_sweep_flac.png" + self.grapher = WaveformContourBlack(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testMp32WaveformContourBlack(self): + "Test MP3 to WaveformContourBlack" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.mp3") + self.image = "/tmp/test_waveform_contour_bk_sweep_mp3.png" + self.grapher = WaveformContourBlack(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testOgg2WaveformContourBlack(self): + "Test OGG to WaveformContourBlack" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.ogg") + self.image = "/tmp/test_waveform_contour_bk_sweep_ogg.png" + self.grapher = WaveformContourBlack(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + # WAVEFORMS CONTOUR WHITE + def testWav2WaveformContourWhite(self): + "Test WAV to WaveformContourWhite" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") + self.image = "/tmp/test_waveform_contour_wh_sweep_wav.png" + self.grapher = WaveformContourWhite(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testFlac2WaveformContourWhite(self): + "Test FLAC to WaveformContourWhite" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.flac") + self.image = "/tmp/test_waveform_contour_wh_sweep_flac.png" + self.grapher = WaveformContourWhite(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testMp32WaveformContourWhite(self): + "Test MP3 to WaveformContourWhite" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.mp3") + self.image = "/tmp/test_waveform_contour_wh_sweep_mp3.png" + self.grapher = WaveformContourWhite(width=1024, height=256, bg_color=(0,0,0), color_scheme='default') + + def testOggWaveformContourWhite(self): + "Test OGG to WaveformContourWhite" + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.ogg") + self.image = "/tmp/test_waveform_contour_wh_sweep_ogg.png" + self.grapher = WaveformContourWhite(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/analyzer/dc.py b/timeside/analyzer/dc.py index 50d9575..b10d3f9 100644 --- a/timeside/analyzer/dc.py +++ b/timeside/analyzer/dc.py @@ -28,8 +28,8 @@ class MeanDCShift(Processor): implements(IValueAnalyzer) @interfacedoc - def setup(self, channels=None, samplerate=None, nframes=None): - super(MeanDCShift, self).setup(channels, samplerate, nframes) + def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None): + super(MeanDCShift, self).setup(channels, samplerate, blocksize, totalframes) self.values = numpy.array([0]) @staticmethod diff --git a/timeside/analyzer/duration.py b/timeside/analyzer/duration.py index 47aa59e..89d2cf6 100644 --- a/timeside/analyzer/duration.py +++ b/timeside/analyzer/duration.py @@ -30,10 +30,10 @@ class Duration(Processor): implements(IValueAnalyzer) @interfacedoc - def setup(self, channels, samplerate, nframes): - if not nframes: + def setup(self, channels, samplerate, blocksize=None, totalframes=None): + super(Duration, self).setup(channels, samplerate, blocksize, totalframes) + if not totalframes: raise Exception("nframes argument required") - super(Duration, self).setup(channels, samplerate, nframes) @staticmethod @interfacedoc @@ -49,13 +49,13 @@ class Duration(Processor): @interfacedoc def unit(): return "seconds" - + def __str__(self): return "%s %s" % (str(self.value), unit()) def process(self, frames, eod=False): return frames, eod - + def result(self): return self.input_nframes / float(self.input_samplerate) - + diff --git a/timeside/analyzer/max_level.py b/timeside/analyzer/max_level.py index b49ffb1..a41f631 100644 --- a/timeside/analyzer/max_level.py +++ b/timeside/analyzer/max_level.py @@ -30,8 +30,8 @@ class MaxLevel(Processor): implements(IValueAnalyzer) @interfacedoc - def setup(self, channels=None, samplerate=None, nframes=None): - super(MaxLevel, self).setup(channels, samplerate, nframes) + def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None): + super(MaxLevel, self).setup(channels, samplerate, blocksize, totalframes) self.value = 0 @staticmethod diff --git a/timeside/analyzer/mean_level.py b/timeside/analyzer/mean_level.py index 1e3e421..1b67ee6 100644 --- a/timeside/analyzer/mean_level.py +++ b/timeside/analyzer/mean_level.py @@ -29,8 +29,8 @@ class MeanLevel(Processor): implements(IValueAnalyzer) @interfacedoc - def setup(self, channels=None, samplerate=None, nframes=None): - super(MeanLevel, self).setup(channels, samplerate, nframes) + def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None): + super(MeanLevel, self).setup(channels, samplerate, blocksize, totalframes) self.values = numpy.array([]) @staticmethod diff --git a/timeside/grapher/core.py b/timeside/grapher/core.py index 952091d..5cb454b 100644 --- a/timeside/grapher/core.py +++ b/timeside/grapher/core.py @@ -403,7 +403,6 @@ class WaveformImageSimple(object): self.buffer_size = int(round(self.samples_per_pixel, 0)) self.pixels_adapter = FixedSizeInputAdapter(self.buffer_size, 1, pad=False) self.pixels_adapter_nframes = self.pixels_adapter.blocksize(self.nframes) - print self.pixels_adapter_nframes self.image = Image.new("RGBA", (self.image_width, self.image_height)) self.pixel = self.image.load() diff --git a/timeside/grapher/waveform_simple.py b/timeside/grapher/waveform_simple.py index 9d3cef8..63c88c3 100644 --- a/timeside/grapher/waveform_simple.py +++ b/timeside/grapher/waveform_simple.py @@ -24,7 +24,7 @@ from timeside.api import IGrapher from timeside.grapher.core import * -class WaveformAwdio(Processor): +class WaveformSimple(Processor): implements(IGrapher) FFT_SIZE = 0x400 @@ -53,7 +53,7 @@ class WaveformAwdio(Processor): @interfacedoc def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None): - super(WaveformAwdio, self).setup(channels, samplerate, blocksize, totalframes) + super(WaveformSimple, self).setup(channels, samplerate, blocksize, totalframes) self.graph = WaveformImageSimple(self.width, self.height, self.totalframes(), self.samplerate(), self.FFT_SIZE, bg_color=self.bg_color,