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())