core: add processor buffersize (default 65536), required to be a power of 2 and >= 4096
for proper support of fft-based analyzers and similar
refactor api:
- improve documentation
- remove IEncoder.finish(), same as process() with nframes < buffersize
- remove format(), description() and such from IDecoder, a decoder can handle multiple
formats so this information is dynamic
- add duration(), samplerate(), channels() etc... to IDecoder, obsoleting all
corresponding analyzers
- add IGrapher.process()
- require IGrapher.render() to return a PIL image instead of streaming binary data,
and move the width/height arguments into the constructor
- add IAnalyzer.process()
- add IValueAnalyzer and let dc, maxlevel and meanlevel analyzers implement it
- move result() into IValueAnalyzer. This method may not be adequate for other types of analyzers
- merge all api's into timeside.api
- add core.get_processor()
- put all exceptions into exceptions.py
- use SubProcessError instead of EncodeProcesError, DecodeProcessError and VampProcessError
- rename TimeSideError to Error (= timeside.Error)
- move id() into to IProcessor, all processors are required to implement this static method
- MetaProcessor now ensures that all id's are wellformed and unique and raise an exception otherwise
- add id() to all encoders and decoders, and make it static in analyzers and graphers
- remove underscores and shorten a couple of id's, see the doc of IProcessor.id()
- move generic component/interface architecture from core to component.py
- add Processor, MetaProcessor and processors() to core
- add IProcessor base interface for all processor interfaces
- let IAnalyzer, IGrapher, IEncoder and IDecoder subclass IProcessor
- let all actual processor classes descend from Processor
- use processors() instead of implementations() in test.py
- add listprocessors.py test script
- turn all such methods as name(), id(), file_extension() into static methods
- add the self argument to non static methods in interfaces for clarity
- encode api: the constructor doesn't conflict anymore with the new core, fixme gone
replace the core with the new core:
- requires absolutely no change in the encode, decode, analyze and graph code
- the test scripts needed a few changes
add new core:
- less intrusive component/interface mechanism
- no need for a component manager
- one can create several instances of a component (no singleton)
- component constructors do not need component manager anymore
- unit test included