Convert a QuickTime’s Color Space

Problem

You have a QuickTime movie that is not in the desired color space. For example, the QuickTime file has linear color but you want sRGB instead.

Solution

Use the Draft.LUT class:

import Draft

inFile = '/path/to/input.mov'
outFile = '/path/to/output.mov'

dec = Draft.VideoDecoder( inFile )
enc = Draft.VideoEncoder( outFile, dec.fps, dec.width, dec.height )

lut = Draft.LUT.CreateSRGB()

img = Draft.Image.CreateImage( 1, 1 )

while dec.DecodeNextFrame( img ):
    lut.Apply( img )
    enc.EncodeNextFrame( img )

enc.FinalizeEncoding()

Discussion

In our script above, two lines are repsonsible for performing the color conversion. First, we call Draft.LUT.CreateSRGB() to create the LUT. The returned LUT will convert images from Linear color to sRGB.

Next, we call Apply() to apply our LUT to every frame in the movie before we encode it into our output movie.

Draft includes several LUTs in addition to sRGB:

LUT

Draft command

Cineon

Draft.LUT.CreateCineon()

Alexa V3 Log C

Draft.LUT.CreateAlexaV3LogC()

sRGB

Draft.LUT.CreateSRGB()

Rec. 709

Draft.LUT.CreateRec709()

Gamma correction

Draft.LUT.CreateGamma()

See Also

For the inverting a LUT please review Bake a Color Transform.