cdl_convert¶
Project Info¶
- Name: cdl_convert
- Version: 0.9.2
- Author/Maintainer: Sean Wallitsch
- Email: shidarin@alphamatte.com
- License: MIT
- Status: Development
- Docs: http://cdl-convert.readthedocs.org/
- GitHub: https://github.com/shidarin/cdl_convert
- PyPI: https://pypi.python.org/pypi/cdl_convert
- Python Versions: 2.6-3.4, PyPy
Introduction¶
cdl_convert converts between common ASC CDL formats. The American Society of
Cinematographers Color Decision List (ASC CDL, or CDL for short) is a
schema to simplify the process of interchanging color data between
various programs and facilities.
The ASC has defined schemas for including the 10 basic numbers in 5 different formats:
- Avid Log Exchange (ALE)
- Film Log EDL Exchange (FLEx)
- CMX EDL
- XML Color Correction (cc)
- XML Color Correction Collection (ccc)
- XML Color Decision List (cdl)
Unofficial Formats:
- OCIOCDLTransform, a Foundry Nuke node
- Space separated CDL, a Rhythm & Hues internal cdl format
It is the purpose of cdl_convert to convert ASC CDL information between
these basic formats to further facilitate the ease of exchange of color
data within the Film and TV industries.
cdl_convert supports parsing ALE, FLEx, CC, CCC, CDL and RCDL. We can write
out CC, CCC, CDL and RCDL.
cdl_convert is not associated with the American Society of Cinematographers
Changelog¶
New in version 0.9.2:
- Fixed a bug where ALE’s with blank lines would not convert correctly.
- Fixed a bug that was preventing
cdl_convertfrom being correctly installed in Python 2.6 - Fixed continuous integration testing.
- No longer officially supporting Python 3.2, as I’ve had to remove it from our CI builds. It should still work just fine though, but we won’t be running CI against it.
New in version 0.9:
- Added ability to parse CMX EDLs
- Fixed a script bug where a collection format containing color decisions will not have those color decisions exported as individual color corrections.
- Fixed a bug where we weren’t reading line endings correctly in certain situations.
- Added a cdl_convert.py stub file to the package root level, which will allow running of the cdl_convert script without installation. Due to relative imports in the python code, it was no longer possible to call cdl_convert/cdl_convert.py directly.
- The script, when run directly from cdl_convert.py, will now write errors to stderror correctly, and exit with a status of 1.
New in version 0.8:
- Added –single flag. When provided with an output collection format, each color correction in the input will be exported to it’s own collection.
- Giving a
ColorCorrectiona non-duplicate ID now works unless the--haltflag is given. This means that incoming collections that contain duplicate IDs will not fail out.
New in version 0.7.1:
- Fixed bug where ALE’s without ‘Scan Filename’ fields could not parse correctly.
New in version 0.7:
The biggest change in 0.7 is the addition of collection format support.
.ccc, Color Correction Collections, can now be parsed and written. .cdl,
Color Decision Lists, can now be parsed and written. .ale
and .flex files now return a collection.
- New script flags:
- Adds
--checkflag to script, which checks all parsedColorCorrectsfor sane values, and prints warnings to shell - Adds
-d,--destinationflag to the script, which allows user to specify the output directory converted files will be written to. - Adds
--no-ouputflag to the script, which goes through the entire conversion process but doesn’t actually write anything to disk. Useful for troubleshooting, especially when combined with--check - Adds
--haltflag to the script, which halts on errors that can be resolved safely (such as negative slope or power values)
- Adds
Renames
ColorCollectionBasetoColorCollection, since it will be used directly by bothcccandcdl.Adds
parse_cccwhich returns aColorCollection.Adds
write_cccwhich writes aColorCollectionas acccfile.Adds
parse_cdlwhich returns aColorCollection.Adds
write_cdlwhich returns aColorCollectionas acdlfile.ColorCollectionis now a fully functional container class, with many attributes and methods.Added
ColorDecision, which stores either aColorCorrectionorColorCorrectionRef, and an optionalMediaRefAdded
ColorCorrectionRef, which stores a reference to aColorCorrectionAdded
parentattribute toColorCorrection.Calling
sop_nodeorsat_nodeon aColorCorrectionbefore attempting to set a SOP or Sat power now works.ColorCorrectioncdl_fileinit argument renamed toinput_file, which is now optional and able to be set after init.parse_ccandparse_rnh_cdlnow only yield a singleColorCorrection, not a single member list.Added dev-requirements.txt (contains
mock)All
determine_destmethods now take a seconddirectoryargument, which determines the output directory.Adds
sanity_checkfunction which prints values which might be unusual to stdout.parse_cdlandwrite_cdlrenamed toparse_rnh_cdlandwrite_rnh_cdlrespectively.member_resetmethods:ColorCorrectionnow has areset_membersmethod, which resets the class level member’s dictionary.MediaRefalso has areset_membersmethod, as doesColorCollectionreset_allfunction calls all of the abovereset_membersmethods at once.
- Renamed
cdl_fileargument: parse_cccdl_filearg renamed toinput_fileand now accepts a either a raw string or anElementTreeElementasinput_file.parse_rnh_cdlcdl_filearg renamed toinput_file.parse_aleedl_filearg renamed toinput_file.parse_flexedl_filearg renamed toinput_file.
- Renamed
- Python Structure Refactoring
- Moved
HALT_ON_ERRORinto theconfigmodule, which should now be referenced and set by importing the entireconfigmodule, and referencing or settingconfig.HALT_ON_ERROR - Script functionality remains in
cdl_convert.cdl_convert, but everything else has been moved out. AscColorSpaceBase,AscDescBase,AscXMLBaseandColorNodeBasenow live undercdl_convert.baseColorCollectionnow lives incdl_convert.collectionColorCorrection,SatNodeandSopNodenow live undercdl_convert.correctionColorDecision,ColorCorrectionRefandMediaRefnow live undercdl_convert.decision- All parse functions now live under
cdl_convert.parse - All write functions now live under
cdl_convert.write sanity_checknow live undercdl_convert.utilsreset_allnow lives under the main module
- Moved


