This tool is for converting color-correction metadata for advanced theatrical/television workflows, as it relates to a conversion tool for the ASC Color Decision List (CDL) metadata: the Academy Award® Technological Achievement winning invention by the American Society of Cinematography (ASC) Science and Technology Committee for representation and transportation of cinematographic-quality “color grading” information ― from on-set to postproduction. More information at the bottom of the present document.
edl2cdl
reads the CDL metadata embedded, as comments, in the editing events of a CMX3600-like Edit Decision List file (EDL). Every CDL is named after and differentiated by an identifier called “CCCid” that is read after each EDL event's ClipName
or Locator
comment-field (so be sure to include it as comment in your EDL). The tool then converts the CDL metadata into either one of three XML-based variants of the ASC CDL file formats:
- A series of Color Decision List files, each containing SOP+saturation metadata for one individual color decision (CDL,
.cdl
file extension). This is also the default output format ofedl2cdl
. - A single Color Correction Collection file (CCC,
.ccc
file extension) containing all the color decisions in the original EDL. - A series of Color Correction files, each containing SOP+saturation metadata for one individual color decision (CC,
.cc
file extension). This is not really a standard ASC CDL file format, but is effectively what is supported by many software applications with lighter implementations of CDL (e.g. The Foundry Nuke ).
Since the original ClipName
or Locator
name is transformed into a CCCid and the on-set color-correction usually includes just one version/grade per clip shot, no multiple CDLs are extracted from a single ClipName/TapeName.
python edl2cdl.py -i file.edl -o path/to/folder
This will name each CDL file after the corresponding edit event in the EDL.
python edl2cdl.py -i file.edl -o path/to/file.ccc -f ccc
python edl2cdl.py -i file.edl -o path/to/folder -f cc
This will name each CC file after the corresponding edit event in the EDL.
By default edl2cdl uses FROM CLIP NAME comment to determine edit events. edl2cdl also supports using Locator/LOC comment as edit events. To use LOC as an edit event pass -e loc
along with the rest of the command.
python edl2cdl.py -i file.edl -o path/to/folder -e loc
To get all available options and flags for edl2cdl use the help(-h
) flag.
python edl2cdl.py -h
Each “color decision”, i.e. a so-called “primary” color grading operator mimicking 35mm film color-timing and telecine operations and affecting the whole frame or sequence of frames, is represented by a 10-tuple of floating point values divided in 3+3+3+1 numbers: (sR, sG, sB), (oR, oG, oB), (pR, pG, pB) and S.
The s's are "slope" values, the o's are "offset" values, the p's are "power" values (each triplet containing a different value for the raster image's Red-, Green- and Blue-component codevalues); the capital S is a "saturation" parameter. The first 9 floats are also called a "SOP" after their triplets' initials, and their mapping formula is, invariably for all three RGB channels (where x is the input-color codevalue and y the output-color's): y = (s·x + o)^p.
CDL operators are pseudo-invertible, as long as the SOP operations (each individually invertible) are applied in reverse orders). Yet CDLs are not "algebraically closed", as neither every primary color-correction can be represented by a CDL, nor every CDL can be inverted by another CDL. So the set of all the CDLs forms a semigroup.
In order to emulate film color-timing/grading operations, SOP values should be applied ‘on top’ of a scene-referred image colorimetry preferably encoded using a “logarithmic” transfer characteristic or similar tone curve. Examples of digital colour spaces (in the RGB model) with such characteristics are: ACEScc, ARRI Log.C, Kodak Cineon Printing Density (CPD), REDlogFilm, Panasonic V-Log, Sony S-Log3, Film Log.E/Log.D. Please refer to the ASC CDL Wikipedia page for further description and references.