Awesome. I will update immediately.
Since, I am kinda tired of binding stuff, and need a break, I will begin working on the OggCodecs, TheoraCodec, VorbisCodec, StrOggCoded (need to finsish StrOgg first - will probably be done later).
Bascially, for an Ogg file (either video or audio), you pass it to
OggCodec::load(DataStreamptr)
It would create the TheoraCodec/VorbisCodec/StrOggCodec based on what streams are inside of the ogg file. If the video contained only video, than no sound class would be created. If it contained only audio, an audio class would be created.
We need a common Codec base class, that would have a load( datastreamptr ) and update().
The AvManager should contain the exposed play, seek, close, etc methods of SoundSystem. The end user should never see the SoundSystem pointer. makes things easier.The AvManager hides all the details, and treats all video/audio the same basically. Creates it, loops through it, and calls an Codec::update method (from a AvManager::update class). this allows the codec's to be threaded, and gives them a chance to syncronize with the main thread.
Anyway, i will code up the base class codec, and the ogg codecs.