I am trying to make itpp classes exportable from dll on windows. This activity forced me to look more thoroughly into the audio file classes implementation and I think that audiofile-related classes need refactoring both in terms of interface, implementation and functionality.
In terms of functionality, specification of .au file says that variable-size annotations should be supported which is not the case for itpp implementation of audio file output stream. Also, existing implementation does not support any type of audio compression.
In terms of implementation, audio file classes duplicate a lot of code from binfile.h. It would be better to rely on binary file classes to implement audio files.
In terms of interface, I would suggest to use matrices instead of vectors for read/write operations. It would allow to store audio channels as separate rows/columns.
I guess, Itpp implementation should have at least variable-length annotations and basic G.711/G.721 compression supported.
I would appreciate to hear any thoughts/proposals/suggestions regarding functionality, interfaces and implementation of audio file classes. Also, please let me know if you are an active user of these classes and do not welcome any changes. Hopefully, this will relieve me of touching this stuff :-).