Media Architecture notes
At some point down the road Moonlight|3D will have to be able to read and write audio and video files as part of its processing. Therefore, a basic media architecture needs to be established.
Design Notes
- Need Demultiplexer and Decoder classes, the latter being capable of being fed arbitrarily sized chunks of data
- Need Encoders and Multiplexers, the latter getting fed arbitrarily sized chunks of data from the former
- Require support for seeking in streams for which decoding is set up
- If possible, make no assumptions on how much data a decoder or encoder needs to produce the next bit of output (avoid one frame in, one frame out and other design errors)
Existing Resources
(extend this list whenever something new is discovered)
- Open Source decoders from fluendo
- partial Java-implementation for Matroska based formats: http://svn.matroska.org/svn/matroska/trunk/JEBML/
- ffmpeg: C sourcecode for many container formats and codecs, would need porting
