From: yomguy Date: Fri, 9 Oct 2009 12:27:29 +0000 (+0000) Subject: make a processor call test, new api debug X-Git-Tag: 0.3.2~239 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=5b2f6801c2aa44127c2036a25660e6a68ab819a3;p=timeside.git make a processor call test, new api debug --- diff --git a/analyze/api.py b/analyze/api.py index 0a2cf72..6584d31 100644 --- a/analyze/api.py +++ b/analyze/api.py @@ -24,18 +24,18 @@ from timeside.core import * class IAnalyzer(Interface): """Media item analyzer driver interface""" - def get_id(): + def id(): """Return a short id alphanumeric, lower-case string.""" - def get_name(): + def name(): """Return the analyze name, such as "Mean Level", "Max level", "Total length, etc.. """ - def get_unit(): + def unit(): """Return the unit of the data such as "dB", "seconds", etc... """ - def render(media_item, options=None): + def render(media, options=None): """Return the result data of the process""" diff --git a/analyze/channels.py b/analyze/channels.py index 6e36381..cb7e0fb 100644 --- a/analyze/channels.py +++ b/analyze/channels.py @@ -28,13 +28,13 @@ class ChannelAnalyser(AudioProcessor): implements(IAnalyzer) - def get_id(self): + def id(self): return "nb_channels" - def get_name(self): + def name(self): return "Channels" - def get_unit(self): + def unit(self): return "" def render(self, media_item, options=None): diff --git a/analyze/dc.py b/analyze/dc.py index b775b9e..0509809 100644 --- a/analyze/dc.py +++ b/analyze/dc.py @@ -28,13 +28,13 @@ class MeanDCShiftAnalyser(AudioProcessor): implements(IAnalyzer) - def get_id(self): + def id(self): return "dc" - def get_name(self): + def name(self): return "Mean DC shift" - def get_unit(self): + def unit(self): return "%" def render(self, media_item, options=None): diff --git a/analyze/duration.py b/analyze/duration.py index 94e8236..e69d31d 100644 --- a/analyze/duration.py +++ b/analyze/duration.py @@ -29,13 +29,13 @@ class DurationAnalyzer(AudioProcessor): implements(IAnalyzer) - def get_id(self): + def id(self): return "duration" - def get_name(self): + def name(self): return "Duration" - def get_unit(self): + def unit(self): return "h:m:s" def render(self, media_item, options=None): diff --git a/analyze/encoding.py b/analyze/encoding.py index dde090b..e6ba192 100644 --- a/analyze/encoding.py +++ b/analyze/encoding.py @@ -28,13 +28,13 @@ class EncodingAnalyser(AudioProcessor): implements(IAnalyzer) - def get_id(self): + def id(self): return "encoding" - def get_name(self): + def name(self): return "Encoding format" - def get_unit(self): + def unit(self): return "" def render(self, media_item, options=None): diff --git a/analyze/format.py b/analyze/format.py index d84ce40..b86c1cf 100644 --- a/analyze/format.py +++ b/analyze/format.py @@ -28,13 +28,13 @@ class FormatAnalyser(AudioProcessor): implements(IAnalyzer) - def get_id(self): + def id(self): return "format" - def get_name(self): + def name(self): return "File format" - def get_unit(self): + def unit(self): return "" def render(self, media_item, options=None): diff --git a/analyze/max_level.py b/analyze/max_level.py index bc296ff..8768d76 100644 --- a/analyze/max_level.py +++ b/analyze/max_level.py @@ -28,13 +28,13 @@ class MaxLevelAnalyzer(AudioProcessor): implements(IAnalyzer) - def get_id(self): + def id(self): return "max_level" - def get_name(self): + def name(self): return "Maximum peak level" - def get_unit(self): + def unit(self): return "dB" def render(self, media_item, options=None): diff --git a/analyze/mean_level.py b/analyze/mean_level.py index 716205f..3443c9a 100644 --- a/analyze/mean_level.py +++ b/analyze/mean_level.py @@ -28,13 +28,13 @@ class MeanLevelAnalyser(AudioProcessor): implements(IAnalyzer) - def get_id(self): + def id(self): return "mean_level" - def get_name(self): + def name(self): return "Mean RMS level" - def get_unit(self): + def unit(self): return "dB" def render(self, media_item, options=None): diff --git a/analyze/resolution.py b/analyze/resolution.py index e443639..60a17a0 100644 --- a/analyze/resolution.py +++ b/analyze/resolution.py @@ -28,13 +28,13 @@ class ResolutionAnalyser(AudioProcessor): implements(IAnalyzer) - def get_id(self): + def id(self): return "resolution" - def get_name(self): + def name(self): return "Resolution" - def get_unit(self): + def unit(self): return "bits" def render(self, media_item, options=None): diff --git a/analyze/samplerate.py b/analyze/samplerate.py index 7e16b52..638e9f8 100644 --- a/analyze/samplerate.py +++ b/analyze/samplerate.py @@ -28,13 +28,13 @@ class SampleRateAnalyzer(AudioProcessor): implements(IAnalyzer) - def get_id(self): + def id(self): return "samplerate" - def get_name(self): + def name(self): return "Samplerate" - def get_unit(self): + def unit(self): return "Hz" def render(self, media_item, options=None): diff --git a/analyze/vamp/core.py b/analyze/vamp/core.py index fab2bd1..4c89c97 100644 --- a/analyze/vamp/core.py +++ b/analyze/vamp/core.py @@ -37,13 +37,13 @@ class VampCoreAnalyzer: self.host = 'vamp-simple-host' self.buffer_size = 0xFFFF - def get_id(self): + def id(self): return "vamp_plugins" - def get_name(self): + def name(self): return "Vamp plugins" - def get_unit(self): + def unit(self): return "" def get_plugins_list(self): diff --git a/decode/flac.py b/decode/flac.py index 7f22813..02eed2b 100644 --- a/decode/flac.py +++ b/decode/flac.py @@ -33,11 +33,6 @@ class FlacDecoder(DecoderCore): implements(IDecoder) - def __init__(self): - self.description = self.description() - self.format = self.format() - self.mime_type = self.mime_type() - def format(self): return 'FLAC' diff --git a/decode/mp3.py b/decode/mp3.py index 85cc32b..6918b9b 100644 --- a/decode/mp3.py +++ b/decode/mp3.py @@ -33,11 +33,6 @@ class Mp3Decoder(DecoderCore): implements(IDecoder) - def __init__(self): - self.description = self.description() - self.format = self.format() - self.mime_type = self.mime_type() - def format(self): return 'MP3' diff --git a/decode/ogg.py b/decode/ogg.py index 75789a8..c1a9cad 100644 --- a/decode/ogg.py +++ b/decode/ogg.py @@ -33,9 +33,6 @@ class OggDecoder(DecoderCore): implements(IDecoder) def __init__(self): - self.description = self.description() - self.format = self.format() - self.mime_type = self.mime_type() self.dub2args_dict = {'creator': 'artist', 'relation': 'album' } diff --git a/decode/wav.py b/decode/wav.py index 41d2731..995b4a4 100644 --- a/decode/wav.py +++ b/decode/wav.py @@ -30,11 +30,6 @@ class WavDecoder(DecoderCore): implements(IDecoder) - def __init__(self): - self.description = self.description() - self.format = self.format() - self.mime_type = self.mime_type() - def format(self): return 'WAV' diff --git a/encode/api.py b/encode/api.py index 4187037..7f77f75 100644 --- a/encode/api.py +++ b/encode/api.py @@ -46,14 +46,6 @@ class IEncoder(Interface): def mime_type(): """Return the mime type corresponding to this encode format""" - def set_cache_dir(path): - """Set the directory where cached files should be stored. Does nothing - if the encodeer doesn't support caching. - - The driver shouldn't assume that this method will always get called. A - temporary directory should be used if that's not the case. - """ - def process(source, metadata, options=None): """Perform the encoding process and stream the result as a generator. diff --git a/encode/flac.py b/encode/flac.py index d2e5b99..60bf356 100644 --- a/encode/flac.py +++ b/encode/flac.py @@ -35,16 +35,16 @@ class FlacEncoder(EncoderCore): def __init__(self): self.quality_default = '-5' - def get_format(self): + def format(self): return 'FLAC' - def get_file_extension(self): + def file_extension(self): return 'flac' - def get_mime_type(self): + def mime_type(self): return 'application/flac' - def get_description(self): + def description(self): return """ Free Lossless Audio Codec (FLAC) is a file format for lossless audio data compression. During compression, FLAC does not lose quality from diff --git a/encode/mp3.py b/encode/mp3.py index 16b4934..3360f6d 100644 --- a/encode/mp3.py +++ b/encode/mp3.py @@ -34,9 +34,6 @@ class Mp3Encoder(EncoderCore): implements(IEncoder) def __init__(self): - self.description = self.description() - self.format = self.format() - self.mime_type = self.mime_type() self.bitrate_default = '192' self.dub2id3_dict = {'title': 'TIT2', #title2 'creator': 'TCOM', #composer @@ -54,16 +51,16 @@ class Mp3Encoder(EncoderCore): 'publisher': 'tc', #comment 'date': 'ty', #year } - def get_format(self): + def format(self): return 'MP3' - def get_file_extension(self): + def file_extension(self): return 'mp3' - def get_mime_type(self): + def mime_type(self): return 'audio/mpeg' - def get_description(self): + def description(self): return """ MPEG-1 Audio Layer 3, more commonly referred to as MP3, is a patented digital audio encoding format using a form of lossy data compression. diff --git a/encode/ogg.py b/encode/ogg.py index 07cac54..b04f22f 100644 --- a/encode/ogg.py +++ b/encode/ogg.py @@ -32,9 +32,6 @@ class OggVorbisEncoder(EncoderCore): implements(IEncoder) def __init__(self): - self.description = self.description() - self.format = self.format() - self.mime_type = self.mime_type() self.bitrate_default = '192' self.dub2args_dict = {'creator': 'artist', 'relation': 'album' diff --git a/graph/api.py b/graph/api.py index 1df7e01..3cfd223 100644 --- a/graph/api.py +++ b/graph/api.py @@ -22,19 +22,19 @@ from timeside.core import * -class IMediaItemGrapher(Interface): +class IGrapher(Interface): """Media item visualizer driver interface""" - def get_id(): + def id(): """Return a short id alphanumeric, lower-case string.""" - def get_name(): + def name(): """Return the graph name, such as "Waveform", "Spectral view", etc.. """ def set_colors(self, background=None, scheme=None): - """Set the colors used for image generation. background is a RGB tuple, + """Set the colors used for image generation. background is a RGB tuple, and scheme a a predefined color theme name""" pass diff --git a/graph/spectrogram_audiolab.py b/graph/spectrogram_audiolab.py index e29e83a..d561980 100644 --- a/graph/spectrogram_audiolab.py +++ b/graph/spectrogram_audiolab.py @@ -20,24 +20,24 @@ # Author: Guillaume Pellerin from timeside.core import * -from timeside.graph.api import IMediaItemGrapher +from timeside.graph.api import IGrapher from tempfile import NamedTemporaryFile from timeside.graph.wav2png import * class SpectrogramGrapherAudiolab(Component): """Spectrogram graph driver (python style thanks to wav2png.py and scikits.audiolab)""" - implements(IMediaItemGrapher) + implements(IGrapher) bg_color = None color_scheme = None - def get_id(self): + def id(self): return "spectrogram_audiolab" - def get_name(self): + def name(self): return "Spectrogram (audiolab)" - + def set_colors(self, background=None, scheme=None): self.bg_color = background self.color_scheme = scheme @@ -56,9 +56,9 @@ class SpectrogramGrapherAudiolab(Component): image_height = height else: image_height = 200 - + fft_size = 2048 - args = (wav_file, pngFile.name, image_width, image_height, fft_size, + args = (wav_file, pngFile.name, image_width, image_height, fft_size, self.bg_color, self.color_scheme) create_spectrogram_png(*args) diff --git a/graph/waveform_audiolab.py b/graph/waveform_audiolab.py index 59d9a50..f9b9201 100644 --- a/graph/waveform_audiolab.py +++ b/graph/waveform_audiolab.py @@ -20,22 +20,22 @@ # Author: Guillaume Pellerin from timeside.core import * -from timeside.graph.api import IMediaItemGrapher +from timeside.graph.api import IGrapher from tempfile import NamedTemporaryFile from timeside.graph.wav2png import * class WaveFormGrapherAudiolab(Component): """WaveForm graph driver (python style thanks to wav2png.py and scikits.audiolab)""" - implements(IMediaItemGrapher) + implements(IGrapher) bg_color = None color_scheme = None - def get_id(self): + def id(self): return "waveform_audiolab" - def get_name(self): + def name(self): return "Waveform (audiolab)" def set_colors(self, background=None, scheme=None): @@ -58,7 +58,7 @@ class WaveFormGrapherAudiolab(Component): image_height = 200 fft_size = 2048 - args = (wav_file, pngFile.name, image_width, image_height, fft_size, + args = (wav_file, pngFile.name, image_width, image_height, fft_size, self.bg_color, self.color_scheme) create_wavform_png(*args) diff --git a/tests/test.py b/tests/test.py new file mode 100755 index 0000000..cc1f6b4 --- /dev/null +++ b/tests/test.py @@ -0,0 +1,63 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import timeside +from timeside.core import Component, ExtensionPoint, ComponentManager + +class TestAnalyzers(Component): + analyzers = ExtensionPoint(timeside.analyze.IAnalyzer) + + def run(self): + analyzers = [] + for analyzer in self.analyzers: + analyzers.append({'name':analyzer.name(), + 'id':analyzer.id(), + 'unit':analyzer.unit(), + }) + print analyzers + +class TestDecoders(Component): + decoders = ExtensionPoint(timeside.decode.IDecoder) + + def run(self): + decoders = [] + for decoder in self.decoders: + decoders.append({'format':decoder.format(), + 'mime_type':decoder.mime_type(), + }) + print decoders + + +class TestEncoders(Component): + encoders = ExtensionPoint(timeside.encode.IEncoder) + + def run(self): + encoders = [] + for encoder in self.encoders: + encoders.append({'format':encoder.format(), + 'mime_type':encoder.mime_type(), + }) + print encoders + +class TestGraphers(Component): + graphers = ExtensionPoint(timeside.graph.IGrapher) + + def run(self): + graphers = [] + for grapher in self.graphers: + graphers.append({'id':grapher.id(), + 'name':grapher.name(), + }) + print graphers + +if __name__ == '__main__': + comp_mgr = ComponentManager() + a = TestAnalyzers(comp_mgr) + d = TestDecoders(comp_mgr) + e = TestEncoders(comp_mgr) + g = TestGraphers(comp_mgr) + a.run() + d.run() + e.run() + g.run() +