]> git.sesse.net Git - mlt/blob - docs/install.txt
documentation updates
[mlt] / docs / install.txt
1 INSTALL
2 -------
3
4         This document provides a description of the MLT project installation and
5         organisation.
6
7         It provides *CRITICAL* architecture information, so please read carefully
8         if you plan to extend or use the MLT code base.
9
10
11 Directories
12 -----------
13
14         The directory heirarchy is defined as follows:
15
16         + demo                  - A selection of samples to show off capabilities.
17         + docs                  - Location of all documentation
18         + src                   - All project source is provided here
19             + framework         - The mlt media framework
20             + modules           - All services are defined here
21                 + core          - Independent MLT services
22                 + dv            - libdv dependent services
23                 + ffmpeg        - ffmpeg dependent services
24                 + avformat      - libavformat dependent services
25                 + vorbis        - vorbis dependenent services
26                 + sdl            - SDL dependent services
27                 + resample      - libresample dependent services
28                 + gtk2          - pango and pixbuf dependent services
29                 + fezzik        - A giant (meta) service to load and normalise media
30                 + westley         Nice and clever XML services
31                 + vorbis          Ogg Vorbis dependent services
32                 + xine          - Xine-derived sources
33                 + bluefish      - Bluefish dependent services (*)
34                 + mainconcept   - mainconcept dependent services (*)
35             + inigo             - A media playing test application
36             + valerie           - Client API to access the server
37             + miracle           - The server implementation
38             + albino            - A simple console (protocol level) example
39             + humperdink        - A terminal-based example client
40             + tests             - Reserved for regression and unit tests
41
42         Additional subdirectories may be nested below those shown and should be
43         documented in their parent.
44
45         (*) Not posted to CVS due to licensing issues.
46
47
48 Configuration
49 -------------
50
51         Configuration is triggered from the top level directory via a 
52         ./configure script.
53
54         Each source bearing subdirectory shown above have their own configure
55         script which are called automatically from the top level.
56
57         Typically, new modules can be introduced without modification to the 
58         configure script and arguments are accepted and passed through to all 
59         subdirectories.
60
61         Top level usage is:
62
63         ./configure --help          - report all configure options
64         ./configure --prefix=[dir]  - target install directory (default: /usr/local)
65         ./configure --disable-[mod] - do not compile specified module(s)
66         ./configure --[other]       - pass through to children
67
68         NB: This script must be run to register new services after a CVS checkout
69         or subsequent update.
70
71         
72 Compilation
73 -----------
74
75         Makefiles are generated during configuration and these are based on
76         a per directory template which must be provided by the developer.
77
78
79 Testing
80 -------
81
82         To execute the mlt tools without installation, or to test a new version
83         on a system with an already installed mlt version, you should run:
84
85         . setenv
86
87         NB: This applies to your current shell only.
88
89
90 Installation
91 ------------
92
93         * NOT IMPLEMENTED YET *
94
95         The install is triggered by running make install or make install-strip
96         from the top level directory.
97         
98         The framework produces a single shared object which is installed in 
99         $prefix/lib/ and public header files which are installed in
100         $prefix/include/mlt/framework.
101
102         The client produces a single shared object which is installed in 
103         $prefix/lib/ and public header which are installed in 
104         $prefix/include/mlt/client.
105
106         The server produces a single exectuable which is installed in
107         $prefix/bin/. This is linked against the framework shared object and
108         posix libs but not against any of the modules.
109
110         The modules produce a shared object per module and update text files
111         containing a list of modules provided by this build. These are installed 
112         in $prefix/share/mlt/. It is at the discretion of the module to install
113         additional support files. 
114         
115         To allow the development of external components, mlt-client-config and
116         mlt-framework-config scripts are generated and installed in $prefix/bin.
117
118         After install, only those modules listed are usable by the server. No
119         module is loaded unless explicitly requested via server configuration
120         or usage.
121
122         External modules are also placed in this $prefix/share/mlt, and the 
123         installation of those must modify the text file accordingly before they
124         will be considered at runtime.
125
126
127 Development
128 -----------
129
130         All compilation in the project has {top-level-dir}/src on the include path. 
131         All headers are included as:
132
133             #include <framework/file.h>
134         
135         All external modules have {prefix}/include/mlt on the include path. All 
136         headers should also be included as:
137
138             #include <framework/file.h>
139
140         This allows migration of source between external and internal modules. 
141         The configuration and Makefile template requirements will require
142         attention though.