Updated documentation.
[vlc.git] / plugins / mad / DESIGN
1 File:   Plugin mad for vlc is based upon libmad from the mad distribution.
2 Author: Jean-Paul Saman <jpsaman@wxs.nl>
3
4 Directories:
5 ============
6 vlc/plugins/mad         : mad audio decoder plugin for vlc
7
8 Interface functions to implement in mad plugin are:
9 =========
10 decoder_Probe
11 decoder_Run
12 adec_mad_InitThred
13 adec_mad_EndThread
14
15 libmad_input
16 libmad_output
17 libmad_header
18 libmad_messages
19 libmad_error
20
21 Design: (ASCII art)
22 =======
23 It represents the function call flow viewed from the vlc main program. The main program is in charge of allocating decoders,
24 initializing, starting and stopping them.
25
26       ---------------   
27       |  <library>  |
28       |   libmad    |
29       ---------------
30             ^
31             |
32       ---------------           
33       |   <plugin>  |
34       |     mad     |
35       _______________
36             ^
37             |
38       ________________________
39       |  <decoder interface> |
40       | vlc plugin interface |
41       ________________________
42
43
44 Interface view:
45 ===============
46                                     [mad decoder plugin]
47                                    ----------------------
48         vlc decoder interface -> | mad_adec     mad_libmad | -> libmad
49                                    -----------------------
50
51 Rationel:
52 Keeping libmad as a separate library on the system, either dynamic or statically linked in, makes maintenance so much simpeler.
53 Merging with a new libmad version should be straight forward as long as the interface stays stable.
54 There is another benefit: Disk (actually flash ROM) resources and memory are very limited on a iPaq.
55 Other programs or utilities like madplay and BBplay can make use of the same libmad version we do. In this way
56 limiting the needed storage place on disk (flash ROM). Also this is only possible when the interface stays the same.
57
58