Tips, Tricks and Technical Information

ProRes Color Shifts In Post Production

prores chipProRes itself is very well defined, and should be completely gamma/color shift free in the YCbCr domain at 10 bits per component.  The transform to YCbCr from RGB can be specified within the compressed frame, and this same specification can be used to properly convert YCbCr to RGB.  With both 4:2:2 and 4:4:4 variants and the metadata/compatibility of the MOV container, ProRes should be an ideal format for post production.  This article explores why it often isn't.

ProRes Internal Color Format

The gamma/color shift problems of ProRes are well known, but the cause is not always clear. 

Internally ProRes is a YCbCr 4:2:2 or 4:4:4 frame with 10 bits per component, or Apple nomenclature v210 (YCbCr 10 bit 4:2:2) and v410 (YCbCr 10 bit 4:4:4). For SD it would normally be CCIR 601, otherwise it would normally be REC 709. Fortunately, the exact relationship between the YCbCr and RGB is actually specified in the header of the ProRes frame. The header includes the following elements:

  • Width
  • Height
  • Chrominance (4:2:2 or 4:4:4)
  • Interlaced (with top field marker) or progressive flags
  • Color primaries
    • ITU-R BT.709-2, SMPTE 274M-1995, and SMPTE 296M-1997
      white x = 0.3127 y = 0.3290 (CIE III. D65)
      red x=0.640 y = 0.330
      green x = 0.300 y = 0.600
      blue x = 0.150 y = 0.060
    • SMPTE RP 145-1993, SMPTE170M-1994, 293M-1996, 240M-1995, and SMPTE 274M-1995
      white x = 0.3127 y = 0.3290 (CIE III. D65)
      red x = 0.64 y = 0.33
      green x = 0.29 y = 0.60
      blue x = 0.15 y = 0.06
    • SMPTE 240M-1995
    • ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL / SECAM
    • ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
  • Transfer functions
    • ITU-R BT.709-2, SMPTE 274M-1995, 296M-1997, 293M-1996, 170M-1994
    • SMPTE 240M-1995 and 274M-1995
    • ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
    • ITU-R BT470BG
  • Color matrix
    • ITU-R BT.709-2 (1125/60/2:1 only), SMPTE 274M-1995, 296M-1997
    • ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL / SECAM
    • ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
    • SMPTE 240M-1995, 274M-1995
  • Original color format (source color format)

Based on this information it is simple to encode, decode, convert and display the exact colors at all points in compression and decompression. If this is what all software used to set up conversion, there would be no shifts.

ProRes Problems/Issues

Problem #1 - Bad Headers

The first problem is currently not the most prevalent: incorrect information in the ProRes compressed frame header. When compressed with Apple's codec, or other well implemented ProRes codecs, the information in the header is correct. Some open source implementations play fast and loose, often just putting in default parameters that have no relationship to the original material or how it was converted. Even if the header info makes sense, it is not a guarantee that that was how the conversion was actually done. There is nothing that can be done for these files, other than correction in post by eye.

Problem #2 - The 'colr' Atom

Apple added the colr atom to the MOV specification to specify the same three parameters (primaries/transfer/matrix) for conversions ProRes provides for codecs that don't have that information specified. If this atom exists in the MOV file, and it matches the settings in the ProRes header, then there is no problem. If, however, the information in the colr atom is different than in the header, it will override the ProRes header and result in bad color and shifts.

Problem #3 - Decoders Ignore The Information

All the information in the world is pointless if it is not used. Decoding (and encoding) ProRes properly requires that all the cases are tested and working. While 90% of the cases are covered by simple REC.709 and CCIR 601 conversions, it is the corner cases that will show which software can be trusted.

Problem #4 - Apple QuickTime SDK/API

Apple's QuickTime libraries under Windows and macOS ARE capable of properly decoding ProRes, but this is not what they do by default. By default a simple RGB conversion is used, or possibly a correct/incorrect conversion based on the colr atom, depending on the file. The QuickTime API is end of life and no longer being developed (AVFoundation et al taking over on macOS, nothing on Windows).  The best way to use this access method is to decode to v210/v410, get the conversion information and then do the color transforms yourself.

Problem #5 - QuickTime Player (especially on Windows)

QuickTime Player is not to be trusted. Period. On Windows, with ProRes, it is actually always wrong, using a 1.8 gamma when a 2.2 display gamma is necessary. This is true no matter what the ProRes header says or any colr atoms. Interestingly, you can get the correct gamma briefly with QuickTime Player on Windows: Load 2 ProRes MOVs and switch between them:  The one that does not have focus will have the correct gamma!  Useless, but interesting.

With QuickTime X on macOS, there are fewer playback issues than Windows, but when you export ProRes it adds a strange red hue to the video.  The workaround is to post install QuickTime 7 and use that instead.


Even More Information:

An excellent discussion of just the gamma problem in QuickTime:  Vitrolite The QuickTime Gamma Bug

Another interesting investigation of ProRes issues:  Investigating ProRes

Adobe After Effects specific gamma fix for macOS:  After Effects/FCP Round Trip

Adobe CS4 ProRes fix:  ProRes CS4 Fix

Adobe CS5 and greater ProRes fix:  ProRes CS5+ Fix

Quality comparison of DNxHD, ProRes, FMPEG, CineForm:  Codec Quality

Colr atom discussion:  nuke list

Some Apple information which should not be followed:  Apple Gamma Shifting 


Drastic ProRes Products:

To play ProRes files to your VGA/DVI with the correct color conversions, try videoQC 

To view ProRes files to HD-SDI with AJA/Bluefish444/Blackmagic, try videoQC Workstation

To export ProRes from Adobe/Apple/Avid/Assimilate on Windows/macOS, try MediaReactor Workstation

More great products from Drastic

Manual removal of Drastic software
Manual removal of Drastic software This article lists the locations where Drastic software components may be installed, in case the software needs to be removed manually.   macOS For vi... Tips, Tricks and Technical Information
Single/Dual Link Input Problems
Single/Dual Link Input Problems Connecting single and dual link inputs incorrectly can cause odd looking signals.  Here are each of the incorrect paths shown as they would be with a stand... Tips, Tricks and Technical Information
Using HDRScope/4KScope with Avid ScopeDirect OpenIO
Using HDRScope/4KScope with Avid ScopeDirect OpenIO Drastic's 2110Scope, HDRScope, and 4KScope products provide a ScopeDirect OpenIO plugin for Avid that allows users to monitor the main output directly from Avid... Tips, Tricks and Technical Information
Java on Dual Monitors
Java on Dual Monitors Java on Dual Monitors - NVidia vs. Java.  There are setups required on some systems to allow QuickClipXO and VTRIF to display full screen on the second DVI... Tips, Tricks and Technical Information
Setting Up Watch Folder Actions
Setting Up Watch Folder Actions Many of the tools in ccConvert, videoQC and Net-X-Code can be run as command line tools, as well as via REST API.  With command line tools, there are way... Tips, Tricks and Technical Information

For more than two decades, Drasticâ„¢ has been developing cutting edge solutions for television, post production and sports broadcasting, from real time web delivery to 8K broadcast.

We offer standalone software for the end user or enterprise, integrated solutions for automated workflows, and OEM tools for custom applications or branded devices.

Contact Us

523 The Queensway, Suite 201
Toronto, ON
M8Y 1J7, Canada

Phone: +1 (416) 255 5636


Fax: + 1 (416) 255 8780