MediaWare Solutions' EDL format version 3

Copyright 2001 Dr Kevin W. Moore


This document provides an introduction and guide to using MediaWare Solutions' EDL format version 3

Contents


Introduction

Edit Decision Lists (EDLs) are a means for describing the editing steps a video editing engine must perform in order to generate the desired output. EDLs can be created by hand, translated from another format, or by another application.

MediaWare's EDL format version 3.0.X is a CMX style EDL. 'CMX Style' is an industry term used to describe any reasonable derivation of the original EDL format that was specified by the CMX Corporation in the early 70s. The CMX EDL format was designed to work with early videotape editing controllers that were capable of performing basic edits between 'reels' or video tapes. The CMX EDL file format uses an ASCII (text) file, which makes it readable, and increases its portability. Edit lines contain edit number, reel id, edit mode and type information together with in and out points specified using SMPTE timecode values.

MediaWare's MPEG editing technology is file and stream based. Its EDL format 3.0.X modifies the original CMX EDL format to allow filenames rather than reel number to be specified. In the same manner as for CMX, MediaWare's EDL format uses SMPTE timecodes to specify edit in and out points since MPEG, like professional video tape, contains SMPTE timecodes recorded at regular intervals. In addition, MediaWare's format also supports others ways of specifying in and out points which are described later in this document.

This document provides a tutorial introduction and overview to MediaWare's EDL format. It is designed to provide enough information to allow a user to generate valid MediaWare EDL files manually, or to write translation programs to convert to/from other formats. The formal EDL specifications are included as the last section of this document.

Tutorial Walk through

MediaWare's EDL files are ASCII (text) files that contain a header, followed by a mixture of edit and comment lines (comment lines start with '#').

EDL Structure

Every EDL must contain a header at the beginning of the file which is a series of comment lines that contain file type and version information. i.e.
# TYPE = EDL
# VERSION = 3.0.0
#
# Can have general edl comments here
#
The rest of the EDL, called the body, contains the edit lines and edit line comments. i.e.
#   mode type      srcIn       srcOut      recIn       recOut
#  cut video and audio from file1
file1 VA C     00:00:10:00 00:00:16:00 00:00:00:00 00:00:06:00

# dissolve of 25 frames
#
file1 VA C    00:00:16:00 00:00:16:00 00:00:06:00 00:00:06:00
file2 VA D 25 00:00:35:00 00:00:37:00 00:00:06:00 00:00:08:00 

# video fade out to black of 25 frames
file2 V FO   00:00:48:00 00:00:50:00 00:00:08:00 00:00:10:00

# audio from file1 used for the final fade to black
file2 A C    00:00:17:00 00:00:19:00 00:00:08:00 00:00:10:00
The above EDL body performs a simple cut, followed by a dissolve of 25 frames, followed by a fade out to black, with the fade to black using the audio from the first file.  The first entry on each edit line is the filename (i.e. file1 or file2). The next entry is the edit mode which is either Video and Audio (VA), Video only (V), or Audio only (A).  This allows edits to be made on both the video and audio streams, or just the audio or just the video even if the file contains both streams.  Following the edit mode is the edit type, which can be either Cut (C), Dissolve (D), FadeOut (FO), FadeIn (FI), or a Wipe (W).  The in and out points for the source file (srcIn and srcOut) are next, and then the optional output in and out points (recIn and recOut).

Specifying Effects

CMX has a unque way of specifying a dissolve or a wipe between two files. It requires two edit lines. The first line specifies the first file as a cut with identical srcIn and srcOut times which specify the first frame of the edit. The second line specifies the second file with the length of the effect in frames, together with the first and last frame of the edit for the second file. i.e. In the example above, the output between time 00:00:06:00 and 00:00:08:00 consists of a one second dissolve between file1 [00:00:16:00, 00:00:17:00] and file2 [00:00:35:00, 00:00:36:00] and a straight cut from file2 [00:00:36:00, 00:00:37:00].

srcIn srcOut / recIn recOut

The srcIn and srcOut fields of each edit line specify the in and out times of the edit [in,out); in time is inclusive and while out time is exclusive. Note that the out time is the first frame after the edit. The recIn and recOut times specify where the edit will be located in the output footage. The rec times force an ordering of the edits in the file. RecIn and recOut times however are optional. If they are not specified, then the ordering of the edits is taken as the ordering of the edits in the file, and the recIn and recOut times are computed based on the ordering and the srcIn and srcOut times.

Tag Line

A special type of comment that can be found anywhere in the file is called a TAG line. A TAG line defines an alias for a filename. Usually TAG lines are grouped together in the initial header comment of the file, but can occur anywhere in the file. i.e.
# file1 = /usr/data/mpeg/mympegfile.mpg
This binds the tag file1 to represent the filename /usr/data/mpeg/mypegfile.mpg.  In essence, the TAG replaces the concept of the REEL id that was used in the original CMX EDL format. TAGs simplify the task of updating EDLs when files change names or locations, and improve the readability of the EDL. The one restriction of TAG lines is that they must appear before the first usage of the TAG. MediaWare's editing tools generate EDL with the automatic creation of tags in the EDL. Example of tags and a typical EDL:
# TYPE=EDL
# VERSION=3.0.0
#
# A simple edl with tags and separate video/audio
# cuts
#
# scen1 = /usr/data/mpeg/scenicview.mpg
# mybi1 = /usr/data/mpeg/mybirthday.mpg
# john1 = /usr/data/mpeg/johnswedding.mpg

# start with scenic view
scen1 V  C 00:01:00:00 00:01:10:00 00:00:00:00 00:00:10:00

# bits from my birthday
mybi1 V  C 00:00:00:00 00:00:15:00 00:00:10:00 00:00:20:00

# add the sound track from the wedding
john1 A  C 00:00:00:00 00:00:20:00 00:00:00:00 00:00:20:00

# finish with the wedding. keep audio continuous
john1 VA C 00:00:20:00 00:00:30:00 00:00:20:00 00:00:30:00
In the above EDL, the first three edits cut video out of scenicview.mpg and mybirthday.mpg and merges these with the audio from johnswedding.mpg. It finishes with a  synchronized video and audio cut from johnswedding.mpg.

More On recIn & recOut

Calculating the recIn and recOut times can be time consuming. When creating EDLs by hand, it is possible to leave out the recIn and recOut times. The order of the edits is then taken as the order of the edits in the file, and MediaWare's software will automatically calculate the correct recIn and recOut times. The EDL above could have been written as:
# TYPE=EDL
# VERSION=3.0.0
#
# A simple edl with tags and separate video/audio
# cuts
#
# scen1 = /usr/data/mpeg/scenicview.mpg
# mybi1 = /usr/data/mpeg/mybirthday.mpg
# john1 = /usr/data/mpeg/johnswedding.mpg

# start with scenic view
scen1 V  C 00:01:00:00 00:01:10:00

# bits from my birthday
mybi1 V  C 00:00:00:00 00:00:15:00

# add the sound track from the wedding
john1 A  C 00:00:00:00 00:00:20:00

# finish with the wedding. keep audio continuous
john1 VA C 00:00:20:00 00:00:30:00
RecIn and recOut times, when specified, can be used to create holes or gaps in either the video and/or the audio of the output stream. This occurs when there is no input for a given time region of the output. When there is a hole in the video stream of an edit, MediaWare's editing engine inserts blank (black) video frames to fill in the gap in the output. When there is a hole in the audio stream, MediaWare's engine inserts silence into the output. A hole in both Video and Audio is currently removed. The following EDL contains a video hole at the beginning which results in some lead-in black frames, and an audio hole at the end which results in silence.
#
# TYPE=EDL
# VERSION=3.0.0
#
# A simple edl with tags and separate video/audio
# cuts
#
# scen1 = /usr/data/mpeg/scenicview.mpg
# mybi1 = /usr/data/mpeg/mybirthday.mpg
# john1 = /usr/data/mpeg/johnswedding.mpg

# sound track from mybirthday
mybi1 A  C 00:00:00:00 00:00:20:00 00:00:00:00 00:00:20:00

# my birthday, preceded by 10 seconds of video black
mybi1 V  C 00:00:10:00 00:00:20:00 00:00:10:00 00:00:20:00

# the wedding video and audio
john1 VA C 00:00:20:00 00:00:30:00 00:00:20:00 00:00:30:00

# keep video going for last 5 seconds (no audio)
john1 V C 00:00:30:00 00:00:35:00 00:00:30:00 00:00:35:00
For more details on the syntax of the EDL format, see the Format Specification section.

Conclusion

MediaWare's EDL format is a CMX style format that can be used to easily and accurately specify a sequence of video edits. It modifies the original CMX format to support file and stream based editing, and allows in and out points to be given in several different time formats.

Ths tutorial has shown by example how to create and used MediaWare's EDL format 3.0.X to specify the most common types of video edits. For a further information on the EDL format and its use, see the formal specification in the following sections.


Format Specification

Header

EDLs must start with a valid header.
# type = EDL
# version = 3.0.0
#
# Comments
#
type and version keywords can be either capitalized or in lowercase. i.e. TYPE = EDL, or VERSION = 3.0.0. There can be any number of empty comment lines before or between type and version lines, however there can't be any other non empty comment lines before these are found.

The header block is defined to be the first continuous block of comments. Any non empty comment lines in this block of comments is associated with the EDL as a whole, and are stored as header comments.

TimeCode Conversion (TCC) Frame Rate Lines

The CMX EDL format was designed for editing video tapes. MediaWare's MPEG editor is able to edit audio streams separately from video streams. When an EDL contains just audio only edits, the interpretation of SMPTE timecodes is not well defined as it requires a frame rate value to convert it to seconds or frame number. In these cases, a TimeCode Conversion line can be used to specify the frame rate to use for decoding  when interpreting the in and out SMPTE timecode values. The format of these lines is as follows:
# TCC FRAME RATE = VIDEO
# TCC FRAME RATE = 25
# TCC FRAME RATE = d29.97
# tcc frame rate = 29.97
TCC Frame Rate can be either 'VIDEO', or a specified frame rate. If TCC Frame Rate is VIDEO, then the video frame rate is used to translate the timecodes of the entry. If the TCC Frame Rate is given, i.e. '25', '29.97', 'd29.97', then that frame rate is used to translate the timecodes. 'd29.97' refers to a frame rate of 29.97 with drop frame flag set to true. For more information on drop frames see the document "Frame Drops Keep Falling on my Head", by Dr Ken Tsui.

For EDL entries containing audio only, or image files, a TCC Frame Rate should be specified in the EDL header to allow the timecodes to be parsed.
 

Tag Lines

# tagname = filename

Tag Lines are any lines (usually starting with a comment indicator) that have a tag value, an ' = ', followed by a filename. The tag is then associated with that filename for the rest of the entries in the EDL. Each time the tag value is encountered in the filename position, it is replaced by the filename associated with it. i.e.

# This tag is used instead of the full filename
# in the edl.
# mymov = /usr/data/mpeg/mymovie.mpg

mymov V C 00:00:35:00 00:00:40:00
Tag Lines can occur anywhere in the EDL but must occur before the first use of the tag. The usual place for Tag Lines is the header of the EDL.

Comments

Comments can appear at the beginning of the EDL file (header) or between the edit lines in the EDL. The first block of comments in the file is defined to be the header comments and they are associated with the EDL as a whole. Subsequent comments in the EDL file are associated with the first edit line that appears after them.

Edit Entries

<filename|tag>  <EditMode>  <TransitionType>[num]  [duration]  [srcIn]  [srcOut]  [recIn]  [recOut] For srcIn, srcOut, recIn, recOut, the values can be specified as either timecode, frame number, seconds, or mps seconds. i.e.
[tcode | fnum | sec | mps], where:

Cut Entries

<filename|tag> <EditMode> C [srcIn] [srcOut] [recIn] [recOut]
# Cut ausfilm from 10 to 20 seconds
mymov VA C 00:00:10:00 00:00:20:00

Single Entry Effects (FadeIn, FadeOut, Effect)

A general single file effect has a TransitionType of E, with an effect number similar to a wipe entry.
(Currently there are no defined single file effect numbers - use shortcuts only).
<filename|tag> <EditMode> E[num] [srcIn] [srcOut] [recIn] [recOut]

Several common single file effects for which special TransitionTypes have been defined. These are FadeIn and FadeOut.

Fade In over the time period srcIn to srcOut
<filename|tag> <EditMode> FI [srcIn] [srcOut] [recIn] [recOut]

Fade Out over the time period srcIn to srcOut
<filename|tag> <EditMode> FO [srcIn] [srcOut] [recIn] [recOut]

e.g.

film1.mpg VA FI 00:00:10:00 00:00:20:00

Dissolve Entries

<filename|tag> <EditMode> C [srcIn] [srcOut] [recIn] [recOut]

 <filename|tag> <EditMode> D XX [srcIn] [srcOut] [recIn] [recOut]

Dissolve entries consist of two lines. The first line specifies the first file of the dissolve in as a cut edit line. The srcIn and srcOut timecodes are the same and specify the first frame of the dissolve. The recIn and recOut timecodes are also the same and equal the recIn timecode of the dissolve edit.

The second line contains information about the second file and the dissolve transition. It consists of a dissolve line with an effect duration in frames equal to the duration of the dissolve. The srcIn and srcOut times specify the duration of the section of video used from the second file. The duration of the dissolve should be less than or equal to the duration of the file segment specified in the dissolve. i.e.

# dissolve from filmclip1 (starting at 10secs) to filmclip2
# (starting at 0secs), over 75 frames. the duration of the
# filmclip2 section is 10 seconds including the 3 sec (75 frame)
# dissolve (frame rate of both videos is 25fps)
#
#
filmclip1.mpg VA C    00:00:10:00 00:00:10:00
filmclip2.mpg VA D 75 00:00:00:00 00:00:10:00

Wipe Entries

Same as for dissolve except instead of the second line continuing a 'D', it contains a 'Wn' where n is either 0 or 1 (the only wipes we've defined so far).

For More Information Contact: Mediaware Solutions Pty Ltd
GPO Box 1985, Canberra, ACT 2601, Australia
phone: +61 2 6247 4438
fax: +61 2 6247 4557
email: info@MediawareSolution.com
URL: http://www.MediawareSolutions.com


All Contents Copyright 1998 - 2001 Mediaware Solutions Pty Ltd
All rights reserved