4 This document provides a description of the MLT project organisation.
6 It provides *CRITICAL* architecture information, so please read carefully
7 if you plan to extend or use the MLT code base.
12 The directory heirarchy is defined as follows:
14 + docs - Location of all documentation
15 + src - All project source is provided here
16 + framework - The mlt media framework
17 + modules - All services are defined here
18 + core - Independent MLT services
19 + dv - libdv dependent services
20 + ffmpeg - ffmpeg dependent services
21 + avformat - libavformat dependent services
22 + vorbis - vorbis dependenent services
23 + sdl - SDL dependent services
24 + resample - libresample dependent services
25 + gtk2 - pango and pixbuf dependent services
26 + bluefish - Bluefish dependent services (*)
27 + mainconcept - mainconcept dependent services (*)
28 + inigo - A media playing test application
29 + valerie - Client API to access the server
30 + miracle - The server implementation
31 + humperdink - The evil demo
32 + albino - The simple but nice demo
33 + tests - Reserved for regression and unit tests
35 Additional subdirectories may be nested below those shown and should be
36 documented in their parent.
38 (*) Not posted to CVS due to licensing issues.
43 Configuration is triggered from the top level directory via a
46 Each source bearing subdirectory shown above have their own configure
47 script which are called automatically from the top level.
49 Typically, new modules can be introduced without modification to the
50 configure script and arguments are accepted and passed through to all
55 ./configure --help - report all configure options
56 ./configure --prefix=[dir] - target install directory (default: /usr/local)
57 ./configure --disable-[mod] - do not compile specified module(s)
58 ./configure --[other] - pass through to children
60 NB: This script must be run to register new services after a CVS checkout
66 Makefiles are generated during configuration and these are based on
67 a per directory template which must be provided by the developer.
72 To execute the mlt tools without installation, or to test a new version
73 on a system with an already installed mlt version, you should run:
77 NB: This applies to your current shell only.
82 * NOT IMPLEMENTED YET *
84 The install is triggered by running make install or make install-strip
85 from the top level directory.
87 The framework produces a single shared object which is installed in
88 $prefix/lib/ and public header files which are installed in
89 $prefix/include/mlt/framework.
91 The client produces a single shared object which is installed in
92 $prefix/lib/ and public header which are installed in
93 $prefix/include/mlt/client.
95 The server produces a single exectuable which is installed in
96 $prefix/bin/. This is linked against the framework shared object and
97 posix libs but not against any of the modules.
99 The modules produce a shared object per module and update text files
100 containing a list of modules provided by this build. These are installed
101 in $prefix/share/mlt/. It is at the discretion of the module to install
102 additional support files.
104 To allow the development of external components, mlt-client-config and
105 mlt-framework-config scripts are generated and installed in $prefix/bin.
107 After install, only those modules listed are usable by the server. No
108 module is loaded unless explicitly requested via server configuration
111 External modules are also placed in this $prefix/share/mlt, and the
112 installation of those must modify the text file accordingly before they
113 will be considered at runtime.
118 All compilation in the project has {top-level-dir}/src on the include path.
119 All headers are included as:
121 #include <framework/file.h>
123 All external modules have {prefix}/include/mlt on the include path. All
124 headers should also be included as:
126 #include <framework/file.h>
128 This allows migration of source between external and internal modules.
129 The configuration and Makefile template requirements will require
135 1. The server will interact with public interfaces from the framework only;
136 2. The modules must expose public framework interfaces only;
137 3. All modules are dynamically loaded at runtime.