File: Plugin mad for vlc is based upon libmad from the mad distribution. Author: Jean-Paul Saman Directories: ============ vlc/plugins/mad : mad audio decoder plugin for vlc Interface functions =================== The following interface functions are implemented in the mad plugin. decoder_Probe : vlc probes for plugin capabilities decoder_Run : vlc starts a decoder plugin by calling this function InitThread : routine to do some initializations EndThread : cleanup function The following functions are callback functions for the mad decoder library: libmad_input : called when input data is needed libmad_output : called whenever a frame has been decoded libmad_header : called upon decoding of only a frame header libmad_messages : libmad messages libmad_error : called whenever an error occurred during the decoding process Design: (ASCII art) ======= It represents the function call flow viewed from the vlc main program. The main program is in charge of allocating decoders, initializing, starting and stopping them. --------------- | | | libmad | --------------- ^ | --------------- | | | mad | _______________ ^ | ________________________ | | | vlc plugin interface | ________________________ Interface view: =============== [mad decoder plugin] ---------------------- vlc decoder interface -> | mad_adec mad_libmad | -> libmad ----------------------- Rationel: ======== Keeping libmad as a separate library on the system, either dynamic or statically linked in, makes maintenance so much simpeler. Merging with a new libmad version should be straight forward as long as the interface stays stable. There is another benefit: Disk (actually flash ROM) resources and memory are very limited on a iPaq. Other programs or utilities like madplay and BBplay can make use of the same libmad version we do. In this way limiting the needed storage place on disk (flash ROM). Also this is only possible when the interface stays the same.