]> git.sesse.net Git - mlt/blob - README
Initial revision
[mlt] / README
1 README
2 ------
3
4         This document provides a description of the VPS project organisation.
5
6         It provides *CRITICAL* architecture information, so please read carefully
7         if you plan to extend or use the VPS code base.
8
9 Directories
10 -----------
11
12         The directory heirarchy is defined as follows:
13
14         + docs                                  - Location of all text and source format 
15                                                           documentation
16         + src                                   - All project source is provided here
17                 + client                        - Client API to access the server
18                 + framework                     - The media framework - this code is 100% posix
19                                                           and as such contain no implementations 
20                                                           requiring additional libraries
21                 + modules                       - All components are defined here with a 
22                                                           subdirectory for each dependency
23                         + bluefish              - Bluefish dependent modules and test code
24                         + ffmpeg                - ffmpeg dependent modules and test code
25                         + mainconcept   - mainconcept dependent modules and test code
26                         + SDL                   - SDL dependent modules and test code
27                 + server                        - The server implementation
28
29         Additional subdirectories may be nested below those shown and should be
30         documented in their parent or here.
31
32 Configuration
33 -------------
34
35         Configuration is triggered from the top level directory via a 
36         ./configure script.
37
38         Each source bearing subdirectory shown above have their own configure
39         script which are called automatically from the top level.
40
41         Typically, new modules can be introduced without modification to the 
42         configure script and arguments are accepted and passed through to all 
43         subdirectories.
44
45         Top level usage is:
46
47         ./configure --help                      - report all configure options
48         ./configure --prefix=[dir]      - target install directory (default: /usr/local)
49         ./configure --disable-[mod] - do not compile specified module(s)
50         ./configure --[other]           - pass through to children
51
52 Compilation
53 -----------
54
55         Makefiles are generated during configuration and these are based on
56         a per directory template which must be provided by the developer.
57
58 Installation
59 ------------
60
61         The install is triggered by running make install or make install-strip
62         from the top level directory.
63         
64         The framework produces a single shared object which is installed in 
65         $prefix/lib/ and public header files which are installed in
66         $prefix/include/mlt/framework.
67
68         The client produces a single shared object which is installed in 
69         $prefix/lib/ and public header which are installed in 
70         $prefix/include/mlt/client.
71
72         The server produces a single exectuable which is installed in
73         $prefix/bin/. This is linked against the framework shared object and
74         posix libs but not against any of the modules.
75
76         The modules produce a shared object per module and a text file containing
77         a list of modules provided by this build. These are installed in
78         $prefix/share/mlt/. It is at the discretion of the module to install
79         additional support files. 
80         
81         To allow the development of external components, mlt-client-config and
82         mlt-framework-config scripts are generated and installed in $prefix/bin.
83
84         After install, only those modules listed are usable by the server. No
85         module is loaded unless explicitly requested via server configuration
86         or usage.
87
88         External modules are also placed in this $prefix/share/mlt, and the 
89         installation of those must modify the text file accordingly before they
90         will be considered at runtime.
91
92 Development
93 -----------
94
95         All compilation in the project has {top-level-dir}/src on the include path. 
96         All headers are included as:
97
98                 #include <framework/file.h>
99         
100         All external modules have {prefix}/include/mlt on the include path. All 
101         headers should also be included as:
102
103                 #include <framework/file.h>
104
105         This allows migration of source between external and internal
106         modules. The configuration and Makefile template requirements will require
107         attention though.
108
109 Summary
110 -------
111
112         1.      The server will interact with public interfaces from the framework only;
113         2.      The modules must expose public framework interfaces only;
114         3.      All modules are dynamically loaded at runtime.
115