From 1dcf6831620ab9f05437ee5de541c10847204d2d Mon Sep 17 00:00:00 2001 From: Paul Brossier Date: Fri, 25 Jan 2013 16:45:12 -0600 Subject: [PATCH] tests/testtranscoding.py: start improving transcoding tests --- tests/testtranscoding.py | 173 ++++++++++++++++++++------------------- 1 file changed, 88 insertions(+), 85 deletions(-) diff --git a/tests/testtranscoding.py b/tests/testtranscoding.py index 3e6d0e1..d29cab1 100644 --- a/tests/testtranscoding.py +++ b/tests/testtranscoding.py @@ -9,117 +9,120 @@ from unit_timeside import * import os.path -__all__ = ['TestTranscoding'] - -class TestTranscoding(TestCase): - "Test the low level streaming features" +class TestTranscodingFromWav(TestCase): + "Test transcoding from wav" def setUp(self): - pass - - def testWav2Mp3(self): - "Test wav to mp3 conversion" self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") - dest1 = "/tmp/test_wav_filesink.mp3" - dest2 = "/tmp/test_wav_appsink.mp3" - self.f = open(dest2,'w') + def testToWav(self): + "Test conversion to wav" + self.target = "/tmp/test_wav_filesink.wav" + self.encoder = WavEncoder(self.target) + + def testToMp3(self): + "Test conversion to mp3" + self.target = "/tmp/test_wav_filesink.mp3" + self.encoder = Mp3Encoder(self.target) + + def testToOgg(self): + "Test conversion to ogg" + self.target = "/tmp/test_wav_filesink.ogg" + self.encoder = VorbisEncoder(self.target) + + """ + def testToWebM(self): + "Test conversion to webm" + self.target = "/tmp/test_wav_filesink.webm" + self.encoder = WebMEncoder(self.target) + + def testToM4a(self): + "Test conversion to m4a" + self.target = "/tmp/test_wav_filesink.m4a" + self.encoder = AacEncoder(self.target) + """ - self.streaming=True - self.encoder = Mp3Encoder(dest1, streaming=True) + def setUpDecoder(self): + self.decoder = FileDecoder(self.source) + self.decoder.setup() + self.channels = self.decoder.channels() + self.samplerate = self.decoder.samplerate() - def testFlac2Mp3(self): - "Test flac to mp3 conversion" - self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.flac") + def setUpEncoder(self): + self.encoder.setup(channels = self.channels, samplerate = self.samplerate) + + def tearDown(self): + self.setUpDecoder() + self.setUpEncoder() - dest1 = "/tmp/test_flac_filesink.mp3" - dest2 = "/tmp/test_flac_appsink.mp3" - self.f = open(dest2,'w') + totalframes = 0 + while True: + frames, eod = self.decoder.process() + self.encoder.process(frames, eod) + totalframes += frames.shape[0] + if eod or self.encoder.eod: break - self.streaming=True - self.encoder = Mp3Encoder(dest1, streaming=True) + """ + print self.channels, self.samplerate, totalframes + import time + time.sleep(.5) - #def testFlac2Ogg(self): - #"Test flac to ogg conversion" - #self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.flac") + decoder = FileDecoder(self.target) + decoder.setup() + totalframes = 0 + while True: + frames, eod = decoder.process() + totalframes += frames.shape[0] + if eod: break - #dest1 = "/tmp/test_flac_filesink.ogg" - #dest2 = "/tmp/test_flac_appsink.ogg" - #self.f = open(dest2,'w') + print decoder.channels(), decoder.samplerate(), totalframes + """ - #self.streaming=True +class TestTranscodingFromAnotherWav(TestTranscodingFromWav): + "Test transcoding from another wav" - #encoder = VorbisEncoder(dest1, streaming=True) - #self.encoder = encoder + def setUp(self): + self.source = os.path.join (os.path.dirname(__file__), "samples/guitar.wav") -# def testWav2Ogg(self): -# "Test wav to ogg conversion" -# self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") -# -# dest1 = "/tmp/test_wav_filesink.ogg" -# dest2 = "/tmp/test_wav_appsink.ogg" -# self.f = open(dest2,'w') -# -# self.streaming=True -# self.encoder = VorbisEncoder(dest1, streaming=True) +class TestTranscodingFromMp3(TestTranscodingFromWav): + "Test transcoding from mp3" - #def testWav2Flac(self): - #"Test wav to flac conversion" - #self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") + def setUp(self): + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.mp3") - #dest1 = "/tmp/test_wav_filesink.flac" - #dest2 = "/tmp/test_wav_appsink.flac" - #self.f = open(dest2,'w') +class TestTranscodingFromFlac(TestTranscodingFromWav): + "Test transcoding from flac" - #self.streaming=True + def setUp(self): + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.flac") - #encoder = FlacEncoder(dest1, streaming=True) - #self.encoder = encoder +class TestTranscodingFromOgg(TestTranscodingFromWav): + "Test transcoding from ogg" - def testWav2Webm(self): - "Test wav to webm conversion" - self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.wav") + def setUp(self): + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep.ogg") - dest1 = "/tmp/test_wav_filesink.webm" - dest2 = "/tmp/test_wav_appsink.webm" - self.f = open(dest2,'w') +class TestTranscodingFromMonoWav(TestTranscodingFromWav): + "Test transcoding from a mono wav" - self.streaming=True - self.encoder = WebMEncoder(dest1, streaming=True) + def setUp(self): + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep_mono.wav") - def setUpDecoder(self): - self.decoder = FileDecoder(self.source) - self.decoder.setup() - self.channels = self.decoder.channels() - self.samplerate = self.decoder.samplerate() +class TestTranscodingFrom32kHzWav(TestTranscodingFromWav): + "Test transcoding from a 32kHz wav" - def setUpEncoder(self): - self.encoder.setup(channels = self.channels, samplerate = self.samplerate) + def setUp(self): + self.source = os.path.join (os.path.dirname(__file__), "samples/sweep_32000.wav") - def tearDown(self): - self.setUpDecoder() - self.setUpEncoder() +class TestTranscodingFromMissingFile(TestTranscodingFromWav): + "Test transcoding from a missing file" - #print "decoder pipe:\n", decoder.pipe - #print "encoder pipe:\n", encoder.pipe - totalframes = 0. + def setUp(self): + self.source = os.path.join (os.path.dirname(__file__), "samples/unexisting.wav") - while True: - frames, eod = self.decoder.process() - #print frames.shape[0] - totalframes += frames.shape[0] - self.encoder.process(frames, eod) - if self.streaming: - self.f.write(self.encoder.chunk) - if eod: - break - if self.encoder.eod : - break - self.f.close() - - # FIXME compute actual number of frames from file -# self.assertEquals(totalframes, 352801) + def tearDown(self): + self.assertRaises(IOError, self.setUpDecoder) if __name__ == '__main__': unittest.main(testRunner=TestRunner()) -- 2.39.5