lp:~johnlm/mage/mage-libav
- Get this branch:
- bzr branch lp:~johnlm/mage/mage-libav
Branch merges
Recent revisions
- 17. By JohnLM
-
Split off audio file input backends' code in seperate source files.
And some other minor fixes. - 16. By JohnLM
-
An overhaul of file handling mechanism. Made the back-end handler classes
internal to AudioFile class. Change summary:
- AudioFile now uses MallocVector for static buffer
- Removed file open failure handling code from AudioFile
This should be handled elsewhere (a sample test code in main.cpp)
- Removed monoaural file checks from AudioFile
- Added AudioFile::isMono() method so it can be quieried from outside
- Reimplemented AudioFile::getAudio( ) to use the new MallocVector buffer
- Implemented FileLoop class to act as "neverending loop" source
- Made AudioFile back-end handler classes internal to AudioFile
- Changed var names in AudioFile methods to emphasise the frame/sample
distinction
- Moved inline methods to header files (for proper linking)
- Numerous minor changes - 15. By JohnLM
-
First rudimentary mixing support. No cues are processed yet, but data
can be passed to the only implemented -- MonoMix -- mixing bus.
Some improvements made on MallocVector to make it more useful with
C-style data retreival functions. You can now take a raw pointer to
a slice of vecor's internal data so functions can fill it chunk at a
time. For more C++ likeness I wrote MallocVector::iterator, but it
ain't used anywhere yet.
- AudioSource class to serve as an abstraction for data retreival
+ AudioSource declares virtual getAudio() method for polymorphism
+ Static getAudio() methods also moved to AudioSource
- AudioFile now inherits from AudioSource
- EmptySource class defined (to replace "silent" AudioFile)
- AudioFile::eof() renamed to override virtual AudioSource::eos()
- MixingBus now uses MallocVector for buffers
- Defined virtual MixBus::mix() method to mix audio from arbitary
sources (arbitary to support filters and generators) into final mix
- MixBus::Piece class to simplify passing arguments for mix()
- MonoMix can dump data to .wav file (for debugging only)
- MallocVector additions
+ getBuffer() method to get "self-allocated" array
+ Defined iterator (unused yet)
- Defined strConv() function to provide numeric-to-string conversion
- Moved stripToSymbol() and basename() to messages.cpp - 14. By JohnLM
-
This is a backup commit before audio processing path draft gets
implemented. Quite a few modifications in this commit.
- Mixing Bus classes draft written
- TimeStamp class draft written (revise this)
- SimpleBuffer (was retbuffer_t) class implemented to pass
arbitary sized chunks around.
- AudioFile::getAudio( ) now returns SimpleBuffer
- ResampleLayer::getData( ) now returns SimpleBuffer
- AudioFile::makeCache( ) modified to handle SimpleBuffers
- Implemented argument parsing with TCLAP
- Minor fixes to prevent memory leaks in case of failure
in AudioFile::getAudio( )
- Minor modification in LADSPA plugin identification mechanism
- makefile now uses pkg-config to get flags - 13. By JohnLM
-
- More LADSPA Host code
+ Loads .so files
+ Get's and parses descriptors
+ Recognizes plugins by ID/Label pairs
- Amplitude modulator recognizes usuable plugins
+ TODO: It just recognizes, actual data processing code pending
- Reimplemented Resampler code to use callbacks
- Modified makeCache() to cache with new callback resampler
- Added a method to gain access to MallocVector's internal buffer
- Moved around some declarations in headers, to avoid circular deps - 12. By JohnLM
-
- Started coding LADSPA Host code.
+ Retreives Plugin .so file list.
+ TODO: Dynamic library loading
+ TODO: Plugin .so file black/whitelist
- Started to code wrapping classes around plugins
- Added undefined private copy constructors to file handler classes
to avoid copying them.
- Split out audio.hpp from master header
- Added some optimization flags to makefile to drop unused code
(FIXME: This may or may not interfere with
other optimization, please test!)Damn it! This just keeps getting more and more complicated.
I just keep wrapping pieces of code in other code. This can't be
good for performance.
Need to make code more modular, and try simplify things a wee bit
(provided it won't affect performance... much) - 11. By JohnLM
-
- Reimplemented CachedDataHandler class to use MallocVector for buffer
- Reimplemented AudioFile::makeCache to use MallocVector
- Added AudioFile::fillIn() for partial or external buffer fills
- Rewrote AudioFile::getAudio( ) to wrap around fillIn()
- Implemented cache with resampling
- Added EXTRA_DEBUG macro for them very verbose debug messages
- New user-configurable Resampler settings in conf file - 10. By JohnLM
-
Bunch of things done for this commit
- FIXED: AudioFile::makeCache saves streaming read "pointer"
- Implemented seeking methods for AudioFile and it's data handlers
- FIXED: Created a dummy, virtual ~GenericDataHandler destructor,
for proper polymorphic destruction of child class objects.
- Minor fixes in resampler layer code.
- Added MallocVector class - 9. By JohnLM
-
This is quite a big commit, guess should've done some more
along the way. Lots of new code.
- Completed the AudioFile class (can now read data)
- Created Resampling layer (not used anywhere yet)
- Implemented caching mechanism (without resampling)
- Fully defined libsndfile handler for input files
- Fully defined cached data handler for input files
- Made AudioFile buffer static (shared accross objects)
- ResampleLayer buffer is also static
- Added MageFatalException class to simplify exception catching
- New downmixer function (downmixes in place)
- New message types added
- makefile updated for more efficient... making
- Split some headers out of magical.hpp, to lessen the mess. - 8. By JohnLM
-
This commit is a total overhaul of the code. Pretty much everything is
rewritten in C++ with classes. This decision was made because C code
was pretty ugly and complicated already, and it would be even more so
if I continued that way.
On other note, the Amplitude Modulator plugin is now deprecated and will
be removed. Why did I need to reinvent the sqare wheel anyway?
In short:
- Rewrote most code in C++ organised in classes
- Deprecated my Amplitude Modulator plugin (4421)
Branch metadata
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)
- Stacked on:
- lp:mage