Installation Documentation

Last Revision: 2009-05-08

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
  • src - All project source is provided here
    • framework - The mlt media framework
    • modules - All services are defined here
      • avformat - libavformat dependent services
      • core - independent but essential MLT services
      • dv - libdv dependent services
      • gtk2 - pango and pixbuf dependent services
      • normalize - audio normalisation functions (**)
      • plus - throwaway silliness
      • resample - libresample dependent services (**)
      • sdl - SDL dependent services
      • vorbis - vorbis dependenent services
      • xml - XML (de)serialization services
      • xine - Xine-derived sources (**)
      • melt - A media playing test application (**)
      • tests - Reserved for regression and unit tests

Additional subdirectories may be nested below those shown and should be documented in their parent.

(*) Not posted to CVS due to licensing issues.
(**) Contains GPL dependencies or code.

Dependencies

The MLT core is dependent on:

  • a C99 compliant C compiler
  • posix threading
  • standard posix libraries

The MLT applications and libraries provided are all dependent on the core.

The modules have the following dependencies:

Module Description
avformat FFmpeg or libav v0.5+
dv libdv 0.102 or later.
gtk2 GTK2 and associated dependencies.
resample libsamplerate 0.15 or later
sdl SDL 1.2 or later.
vorbis libvorbis 1.0.1 or later.
xml libxml2 2.5 or later.

Configuration

Configuration is triggered from the top level directory via a ./configure script.

Each source bearing subdirectory shown above have their own configure script which are called automatically from the top level.

Typically, new modules can be introduced without modification to the configure script and arguments are accepted and passed through to all subdirectories.

More information on usage is found by running:

./configure --help

Note
This script must be run to register new services after a git clone or subsequent update.

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:

. setenv

Note
This applies to your current shell only and it assumes sh or bash.

Installation

The install is triggered by running make install 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 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/modules. It is at the discretion of the module to install additional support files.

To allow the development of external components, mlt-config and scripts are generated and installed in $prefix/bin.

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/modules, 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:

#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.

Topic revision: r4 - 2012-12-17 - DanDennedy
 
This site is powered by the TWiki collaboration platformCopyright © 2008-2013 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding MLT Framework? Send feedback
TWiki Appliance - Powered by TurnKey Linux