-INSTALL
--------
+---+ Installation Documentation
+
+Last Revision: 2013-09-07
+
+ This document provides a description of the MLT project installation and
+ organisation.
+
+
+---++ Directories
+
+ The directory heirarchy is defined as follows:
+
+ * demo - A selection of samples to show off capabilities.
+ * docs - Location of all documentation
+ * presets - Properties presets for various services
+ * profiles - MLT profile configurations
+ * src - All project source is provided here
+ * framework - The MLT media framework
+ * melt - A media playing test application (*)
+ * mlt++ - C++ wrapper for framework
+ * modules - All services are defined here
+ * avformat - FFmpeg/Libav dependent services
+ * avsync - services to help test audio/video synchronization
+ * core - independent MLT services
+ * decklink - Blackmagick Design SDI/HDMI services
+ * dgraft - ports of Donald Graft's filters (*)
+ * dv - libdv dependent services
+ * effectv - ports of !EffecTV filters (*)
+ * feeds - templates for use with core's data filters
+ * frei0r - adapter for frei0r video plugins
+ * gtk2 - GTK+ pango and pixbuf dependent services
+ * jackrack - adapter for LADSPA audio plugins and JACK server
+ * kdenlive - services contributed by Kdenlive project
+ * kino - DV/AVI demuxer from Kino project (*)
+ * linsys - DVEO SDI card consumer (*)
+ * lumas - wipe file generator for core's luma transition
+ * motion_est - motion estimation-based filters (*)
+ * normalize - audio normalisation functions (*)
+ * oldfilm - filters to make pristine video dirty
+ * opengl - !OpenGL dependent services (*)
+ * plus - miscellaneous services (pending move to core)
+ * qimage - Qt dependent services (*)
+ * resample - libresample dependent services (*)
+ * rotoscoping - spline-based alpha mask filter (*)
+ * rtaudio - audio consumer based on !RtAudio project code
+ * sdl - SDL dependent services
+ * sox - !SoX dependent audio filters
+ * swfdec - Swfdec dependent producer for Flash files
+ * videostab - video stabilization filters (*)
+ * vmfx - services contributed by (defunct) Visual Media FX
+ * vorbis - vorbis dependenent services
+ * xine - Xine-derived sources (*)
+ * xml - XML (de)serialization services
+ * swig - High level language bindings using SWIG
+ * tests - Reserved for regression and unit tests
+ * win32 - Windows-specific helper functions
- This document provides a description of the MLT project installation and
- organisation.
+ Additional subdirectories may be nested below those shown and should be
+ documented in their parent.
- It provides *CRITICAL* architecture information, so please read carefully
- if you plan to extend or use the MLT code base.
+ (*) Contains GPL dependencies or code.
-Directories
------------
+---++ Dependencies
- The directory heirarchy is defined as follows:
+ The MLT core is dependent on:
- + docs - Location of all documentation
- + src - All project source is provided here
- + framework - The mlt media framework
- + modules - All services are defined here
- + core - Independent MLT services
- + dv - libdv dependent services
- + ffmpeg - ffmpeg dependent services
- + avformat - libavformat dependent services
- + vorbis - vorbis dependenent services
- + sdl - SDL dependent services
- + resample - libresample dependent services
- + gtk2 - pango and pixbuf dependent services
- + bluefish - Bluefish dependent services (*)
- + mainconcept - mainconcept dependent services (*)
- + inigo - A media playing test application
- + valerie - Client API to access the server
- + miracle - The server implementation
- + humperdink - The evil demo
- + albino - The simple but nice demo
- + tests - Reserved for regression and unit tests
+ * a C99 compliant C compiler
+ * posix threading (pthread)
+ * standard posix libraries (libc)
- Additional subdirectories may be nested below those shown and should be
- documented in their parent.
+ The MLT applications and libraries provided are all dependent on the core.
- (*) Not posted to CVS due to licensing issues.
+ The modules have the following dependencies:
+ | *Module* | *Description* |
+ | avformat | [[http://www.ffmpeg.org][FFmpeg]] or [[http://www.libav.org][libav]] v0.7 or later |
+ | dv | [[http://libdv.sf.net][libdv]] 0.102 or later |
+ | gtk2 | [[http://www.gtk.org][GTK2]] and associated dependencies |
+ | jackrack | [[http://jackaudio.org][JACK]], [[http://www.xmlsoft.org/][libxml2]], and ladspa.h |
+ | opengl | [[http://git.sesse.net/movit][Movit]] |
+ | qimage | [[http://www.qt-project.org][Qt]] 4.4 or later |
+ | resample | [[http://www.mega-nerd.com/SRC][libsamplerate]] 0.15 or later |
+ | sdl | [[http://www.libsdl.org][SDL]] 1.2 or later |
+ | sox | [[http://sox.sourceforge.net][SoX]] 13 or later |
+ | swfdec | [[http://github.com/mltframework/swfdec][swfdec]] 0.8 or later |
+ | vorbis | [[http://www.vorbis.com][libvorbis]] 1.0.1 or later |
+ | xml | [[http://www.xmlsoft.org][libxml2]] 2.5 or later |
-Configuration
--------------
- Configuration is triggered from the top level directory via a
- ./configure script.
+---++ Configuration
- Each source bearing subdirectory shown above have their own configure
- script which are called automatically from the top level.
+ Configuration is triggered from the top level directory via a
+ ./configure script.
- Typically, new modules can be introduced without modification to the
- configure script and arguments are accepted and passed through to all
- subdirectories.
+ Each source bearing subdirectory shown above have their own configure
+ script which are called automatically from the top level.
- Top level usage is:
+ Typically, new modules can be introduced without modification to the
+ configure script and arguments are accepted and passed through to all
+ subdirectories.
- ./configure --help - report all configure options
- ./configure --prefix=[dir] - target install directory (default: /usr/local)
- ./configure --disable-[mod] - do not compile specified module(s)
- ./configure --[other] - pass through to children
+ More information on usage is found by running:
- NB: This script must be run to register new services after a CVS checkout
- or subsequent update.
+ =./configure --help=
-
-Compilation
------------
+ Note: This script must be run to register new services after a git clone
+ or subsequent update.
- Makefiles are generated during configuration and these are based on
- a per directory template which must be provided by the developer.
+---++ Compilation
+ Makefiles are generated during configuration and these are based on
+ a per directory template which must be provided by the developer.
-Testing
--------
- To execute the mlt tools without installation, or to test a new version
- on a system with an already installed mlt version, you should run:
+---++ Testing
- . setenv
+ To execute the MLT tools without installation, or to test a new version
+ on a system with an already installed MLT version in a Bash shell run:
- NB: This applies to your current shell only.
+ =source setenv=
+ Note: This applies to your current shell only and it assumes sh or bash.
-Installation
-------------
- * NOT IMPLEMENTED YET *
+---++ Installation
- The install is triggered by running make install or make install-strip
- from the top level directory.
-
- The framework produces a single shared object which is installed in
- $prefix/lib/ and public header files which are installed in
- $prefix/include/mlt/framework.
+ The install is triggered by running make install from the top level
+ directory.
- The client produces a single shared object which is installed in
- $prefix/lib/ and public header which are installed in
- $prefix/include/mlt/client.
+ The framework produces a single shared object which is installed in
+ $prefix/lib/ and public header files which are installed in
+ $prefix/include/mlt/framework and $prefix/include/mlt++.
- The server produces a single exectuable which is installed in
- $prefix/bin/. This is linked against the framework shared object and
- posix libs but not against any of the modules.
+ The modules produce a shared object per module installed to
+ $prefix/lib/mlt. Also, each module may have support files installed to
+ $prefix/share/mlt/modules.
- The modules produce a shared object per module and update text files
- containing a list of modules provided by this build. These are installed
- in $prefix/share/mlt/. It is at the discretion of the module to install
- additional support files.
-
- To allow the development of external components, mlt-client-config and
- mlt-framework-config scripts are generated and installed in $prefix/bin.
+ For the development of modules and applications, pkg-config metadata files
+ are generated and installed in $prefix/lib/pkgconfig.
- After install, only those modules listed are usable by the server. No
- module is loaded unless explicitly requested via server configuration
- or usage.
- External modules are also placed in this $prefix/share/mlt, and the
- installation of those must modify the text file accordingly before they
- will be considered at runtime.
+---++ Development
+ All compilation in the project has {top-level-dir}/src on the include path.
+ All headers are included as:
-Development
------------
+ #include <framework/file.h>
- All compilation in the project has {top-level-dir}/src on the include path.
- All headers are included as:
-
- #include <framework/file.h>
-
- All external modules have {prefix}/include/mlt on the include path. All
- headers should also be included as:
-
- #include <framework/file.h>
-
- This allows migration of source between external and internal modules.
- The configuration and Makefile template requirements will require
- attention though.
+ All external modules have {prefix}/include/mlt on the include path. All
+ headers should also be included as:
+ #include <framework/file.h>
+ This allows migration of source between external and internal modules.
+ The configuration and Makefile template requirements will require
+ attention though.