| ## MediaWare's Edit Decision List (EDL)

#### Copyright 2001 Dr Kevin W. Moore

> This document provides an introduction and guide to using MediaWare Solutions' EDL format version 3.0.X

# Contents

- Introduction
- Tutorial Walk through
- Format Specification

- Header
- TimeCode Conversion (TCC) Frame Rate
- Tag Lines
- Overlays
- Comments
- Edit Entries

- Cut entries
- Single Entry effects
- Dissolve Entries
- Wipe Entries

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

#### Overlays

Many TV stations today watermark their logo onto the corner of TV picture. The logo can block out entirely the part of the picture below it, or more commonly is semi-translucent so you can make out the picture behind it. Watermarking is supported in the EDL format through the use of a special overlay tag lines. The following edl overlay tag line, which must appear in the header, overlays the image mylogo.jpg onto the top right corner of each picture in MPEG produced by the EDL.

    # EDL OVERLAY = mylogo.jpg NE 1.0

To overlay a single entry in the EDL, the overlay tag is used:

    # EDIT OVERLAY = mylogo.jpg NE 1.0

The EDIT OVERLAY tag line applies the overlay to the next entry in the EDL. These lines can appear anywhere in the EDL.

Overlays can be applied to transitions in three different ways. The overlay can be applied to the image that results from combining the two source frames of the transition. Overlays can also be applied to each of the two source frames prior to their combination in the each of the two source frames prior to their combination in the transition.

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

### Overlays

# EDL OVERLAY = <filename|tag> <Anchor> <Fraction> [R G B]
# EDIT OVERLAY = <filename|tag> <Anchor> <Fraction> [R G B]

- <filename|tag>: Image filename or tag value. Can be JPEG, BMP or TIFF file. If there is a space in the filename then the filename must be quoted. e.g "my first file.jpg" .
- <Anchor>: 'N' | 'S' | 'E' | 'W' | 'NE' | 'NW' | 'SE' | 'SW' | 'CENTER' which is the anchor point where the source image will be overlayed.
- <Fraction>: The translucency fraction used to combine the source image with the entry image. A value of 1.0 mean that the overlay is opaque, a value of 0.0 means that the overlay is completely transparent. A value of 0.5 means the average of the overlay and source pixels is used.
- [R G B]: Optional transparency color. Pixels that are very close to this color will be transparent in the overlay image.

Overlays take a single image and overlay it onto the each picture of an EDL entry or every entry in the EDL. Each overlay application is specified using a special tag line that contains the name of the overlay image file, the location anchor, a translucency percent, and an optional transparency color. EDL OVERLAY lines can only appear in the header comment block and apply to every entry in the EDL. EDIT OVERLAY lines can appear anywhere in the EDL and apply only to the next EDL entry in the file. EDIT OVERLAY lines override the EDL OVERLAY for a given edit entry.

For transition entries (Dissolves and Wipes), the overlay is applied to the image resulting from the combination of the two source frames. To apply an overlay to one or both of the source frames before they are combined (e.g have the overlay dissolve out with the first source), variations of the EDIT OVERLAY tag line can be specified. These variants, which override any EDL OVERLAY line, take the following form:

# EDIT OVERLAY1 = <filename|tag> <Anchor> <Fraction> [R G B]

# EDIT OVERLAY2 = <filename|tag> <Anchor> <Fraction> [R G B]

The EDIT OVERLAY1 is applied to the first source and the EDIT OVERLAY2 is applied to the second source. An example use of such overlays follows.

    # Three cuts and one dissolve. The first two cuts will use the EDL watermark,

    # the last one overrides it
    # EDL OVERLAY = mws_logo.bmp C 1.0

    file1.mpg VA C 00:00:10:00 00:00:20:00
    file2.mpg VA C 00:00:00:00 00:00:10:00

    # EDIT OVERLAY = overlay.jpg E 1.0
    file3.mpg VA C 00:00:00:00 00:00:10:00

    # Overlay just the first part of the dissolve (file3.mpg)
    # EDIT OVERLAY1 = overlay.jpg NW 0.5
    file3.mpg VA C 00:00:10:00 00:00:10:00
    file4.mpg VA D 25 00:00:00:00 00:00:10:00

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

- <filename|tag>: Filename or tag value. Filename can be for an MPEG file, Image file, or Image file template. Image file templates use the same pattern matching as for command line glob, and can be used to specify images to encode into MPEG. i.e. /usr/data/images/image*.jpg
- <EditMode>: 'V' | 'A' | 'VA' | 'B' | 'v' | 'a' | 'va' | 'b' which equals Video, Audio, Video_Audio edits (note B or b can be used in place of VA or va).
- <TransitonType>: 'C' | 'D' | 'E' | 'FI' | 'FO' | 'W' | 'c' | 'd' | 'e' | 'fi' | 'fo' | 'w'. which equals Cut, Dissolve, Effect, FadeIn, FadeOut, Wipe.
- [num]: if TransitionType = Wipe, then a wipe number must be given. At the moment only wipe 'W0' and 'W1' are supported.
- [duration]: if the TransitionType is not equal to Cut, then an effect duration must be given. Duration is in frames.
- [srcIn]: Src in. If no srcIn is given, then it defaults to the first frame of the video or the first frame in the image pattern. If srcIn isn't specified, then srcOut, recIn, recOut can't be specified.
- [srcOut]: Src out. If no srcOut is given, then it defaults to the last frame of the video - or last image in the image pattern. if srcOut isn't given, then recIn and recOut can't be specified.
- [recIn]: Rec in. If no recIn is given, then it is calculated based on its position in the EDL and the length of its input.
[recOut]: Rec out. If no recOut is given, then it is calculated based on its position in the EDL and the length of its input. first frame of the video.

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:

- tcode : SMPTE timecode in hh:mm:ss:ff
- fnum : frame number (the first decodable frame in the video is taken to be frame 0).
- sec : seconds with 's' suffix (e.g. 5.2s)
- mps : seconds with 'mps' suffix (e.g. 5.2mps). This corresponds to the 'seconds' value displayed by Windows MediaPlayer.

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