Free Film Project

 [image of the Head of a GNU]

Free Film Project - Formats

This will document all the data and file formats for the project. This is intended as a guide for other programmers wishing to contribute to the project.

Data Formats

File Formats

In NO case should non-free source files or headers be used. If this would make it impractical to use a listed file format, that format should be excluded. The free nature of the project comes first. We can always write more software.

FFP-compliant files have a corresponding meta-file. This meta-file has the same format for ALL data files and is used to synchronise components.

The FFP meta-file is defined as follows:

Field 0 defines the ID of the component. 0 is reserved for the film as a whole.

Field 1 defines the ID of the parent component. All values from here on are defined relative to the parent object. Thus, if a scene contains sound and video, if the scene is moved, both sound and video are moved. This value can not be the same as the value in field 0. (A component cannot be its own parent.) For this reason, the component with an ID of 0 has no defined value for the parent, other than it cannot be 0.

Field 2 defines how identical media types should be layered. The following cases are defined.

Field 3 defines where the data fits, relative to the start of the parent component. This ensures that sub-components are attached to the correct point in the sequence, independently of the editing of any other components.

Field 4 defines where the data ends, relative to the start of the film. This must have a value greater than that in field 1. It is stored relative to the parent, rather than relative to the start of the component, to simplify the posititioning of sub-components within a parent component.

Field 5 defines how complex the time sequence is, in terms of the order of differentiation required to define it. eg: O(0) = constant steps, of size defined in field 6. O(1) = ax+b size steps, where a is in field 7 and b is in field 6. etc.

Fields 6 onwards define the constants used to generate the time sequence. This allows for a variable time sequences.

For all data types other than text, if the component's data does NOT exactly match the number of points of time defined in the meta-data, the data is expanded or compressed to fit within the time-slot given in the meta-data. Where the meta-data defines a non-linear sequence, it is up to the implementor as to how to present the sample.

Return to [ Free Film Project's home page | GNU's home page ].

Please send Free Film Project inquiries & questions to

Please send FSF & GNU inquiries & questions to There are also other ways to contact the FSF.

Please send comments on these web pages to, send other questions to

Copyright © 1999, 2001, 2006 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

Updated: $Date: 2011/10/24 19:36:51 $ $Author: jturner $