Skip to content

D1ngkai/mlt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README
------

	This document provides a description of the MLT project organisation.

	It provides *CRITICAL* architecture information, so please read carefully
	if you plan to extend or use the MLT code base.

Directories
-----------

	The directory heirarchy is defined as follows:

	+ docs					- Location of all text and source format 
							  documentation
	+ src					- All project source is provided here
		+ framework			- The media framework
		+ modules			- All components are defined here
			+ core			- Non-dependent MLT service
			+ dv			- libdv services
			+ ffmpeg		- ffmpeg dependent modules and test code
			+ sdl			- SDL dependent modules and test code
			+ bluefish		- Bluefish dependent modules and test code (*)
			+ mainconcept	- mainconcept dependent modules and test code (*)
		+ inigo				- A media playing test application
		+ valerie			- Client API to access the server
		+ miracle			- The server implementation
		+ tests				- Reserved for regression and unit tests

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

	(*) Not posted to CVS due to licensing issues.

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.

	Top level usage is:

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

	NB: This script must be run to register new services after a CVS checkout
	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.

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 client produces a single shared object which is installed in 
	$prefix/lib/ and public header which are installed in 
	$prefix/include/mlt/client.

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

	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:

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

Summary
-------

	1.	The server will interact with public interfaces from the framework only;
	2.	The modules must expose public framework interfaces only;
	3.	All modules are dynamically loaded at runtime.

About

MLT Multimedia Framework

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 64.0%
  • C++ 33.5%
  • CMake 1.7%
  • Assembly 0.2%
  • Python 0.2%
  • Ruby 0.1%
  • Other 0.3%