import os
from tools import tmp_file_sink
+
class TestEncoding(unittest.TestCase):
"Test encoding features"
self.encoder_function = FlacEncoder
self.delta = 0
- def testWebm(self):
+ def testWebM(self):
"Test webm encoding, audio only"
from timeside.encoder.webm import WebMEncoder
self.encoder_function = WebMEncoder
self.test_duration = False # webmmux encoder with streamable=true
# does not return a valid duration
- def testWebmVideo(self):
+ def testWebMVideo(self):
"Test webm encoding, video"
from timeside.encoder.webm import WebMEncoder
self.encoder_function = WebMEncoder
self.test_duration = True
self.test_channels = True
- def testToWav(self):
+ def testWav(self):
"Test conversion to wav"
self.encoder_function = WavEncoder
- def testToMp3(self):
+ def testMp3(self):
"Test conversion to mp3"
self.encoder_function = Mp3Encoder
- def testToOgg(self):
+ def testOgg(self):
"Test conversion to ogg"
self.encoder_function = VorbisEncoder
- def testToWebM(self):
+ def testWebM(self):
"Test conversion to webm"
self.encoder_function = WebMEncoder
self.test_duration = False # webmmux encoder with streamable=true
# does not return a valid duration
- def testToM4a(self):
+ def testM4a(self):
"Test conversion to m4a"
self.encoder_function = AacEncoder
self.source = os.path.join(os.path.dirname(__file__),
"samples/sweep_mono.wav")
- def testToM4a(self):
+ def testM4a(self):
"Test conversion to m4a"
- super(TestTranscodingFromMonoWav, self).testToM4a()
+ super(TestTranscodingFromMonoWav, self).testM4a()
self.test_channels = False # voaacenc bug ? : always encode stereo
return result
-def runTestModule(*modules):
-
+def runTestModule(test_modules_list=None, test_prefix=None):
suite = unittest.TestSuite()
finder = doctest.DocTestFinder(exclude_empty=False) # finder for doctest
-
- for module in modules:
+ if test_prefix:
+ unittest.TestLoader.testMethodPrefix = test_prefix
+ if not test_modules_list:
+ test_modules_list = []
+ elif not isinstance(test_modules_list, list):
+ test_modules_list = [test_modules_list]
+ test_modules_list.append('__main__')
+ for test in test_modules_list:
# Doctest
- suite.addTest(doctest.DocTestSuite(module, test_finder=finder))
+ suite.addTest(doctest.DocTestSuite(test, test_finder=finder))
# unittest
- suite.addTest(unittest.loader.TestLoader().loadTestsFromModule(module))
+ suite.addTest(unittest.loader.TestLoader().loadTestsFromModule(test))
TestRunner().run(suite)
# load corresponding tests
from tests import test_decoding, test_array_decoding
- runTestModule('__main__', test_decoding, test_array_decoding)
+ runTestModule([test_decoding, test_array_decoding])
# load corresponding tests
from tests import test_decoder_utils
- runTestModule('__main__', test_decoder_utils)
+ runTestModule(test_decoder_utils)
# Run doctest from __main__ and unittest from test_analyzer_preprocessors
from tests import test_encoding, test_transcoding
from tests.unit_timeside import runTestModule
- runTestModule('__main__', test_encoding, test_transcoding)
\ No newline at end of file
+ runTestModule([test_encoding, test_transcoding])
\ No newline at end of file
self.video = video
@interfacedoc
- def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None):
- super(WebMEncoder, self).setup(channels, samplerate, blocksize, totalframes)
+ def setup(self, channels=None, samplerate=None, blocksize=None,
+ totalframes=None):
+ super(WebMEncoder, self).setup(channels, samplerate, blocksize,
+ totalframes)
from numpy import ceil
framerate = 30
- num_buffers = ceil(self.mediainfo()['duration'] *
- framerate).astype(int)
+ num_buffers = ceil(self.mediainfo()['duration'] *
+ framerate).astype(int)
+ self.pipe = ''
if self.video:
- self.pipe = '''appsrc name=src ! queue ! audioconvert ! vorbisenc quality=0.9 ! queue ! mux.
- videotestsrc pattern=black num_buffers=%d ! ffmpegcolorspace ! queue ! vp8enc speed=2 threads=4 quality=9.0 ! queue ! mux.
- webmmux streamable=true name=mux
- ''' % num_buffers
- else:
- self.pipe = '''
- appsrc name=src ! queue ! audioconvert ! vorbisenc quality=0.9 ! queue !
- webmmux streamable=true name=mux
+ self.pipe += '''videotestsrc pattern=black num_buffers=%d ! ffmpegcolorspace ! queue ! vp8enc speed=2 threads=4 quality=9.0 ! queue ! mux.
+ ''' % num_buffers
+ self.pipe += '''
+ appsrc name=src ! queue ! audioconvert ! vorbisenc quality=0.9 ! queue ! mux.
+ webmmux streamable=true name=mux
'''
if self.filename and self.streaming:
self.pipe += ''' ! tee name=t
t. ! queue ! appsink name=app sync=False
''' % self.filename
- elif self.filename :
+ elif self.filename:
self.pipe += '! filesink location=%s async=False sync=False ' % self.filename
else:
self.pipe += '! queue ! appsink name=app sync=False '
self.start_pipeline(channels, samplerate)
-
@staticmethod
@interfacedoc
def id():
@interfacedoc
def set_metadata(self, metadata):
self.metadata = metadata
+
+if __name__ == "__main__":
+ # Run doctest from __main__ and unittest from test_analyzer_preprocessors
+ from tests import test_encoding, test_transcoding
+ from tests.unit_timeside import runTestModule
+ runTestModule([test_encoding, test_transcoding], test_prefix='testWebM')
\ No newline at end of file