View Bug Details

IDProjectCategoryView StatusLast Update
0002590DCP-o-maticBugspublic2023-12-22 22:32
Reporteroverlookmotel Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status acknowledgedResolutionopen 
PlatformMacOSOS XOS Version10.14
Product Version2.16.59 
Target Version2.16.x 
Summary0002590: ProRes export reduces luminance and produces artefacts in dark regions
Description

When exporting a DCP to ProRes with DOM, there's a noticeable reduction in luminance and unpleasant colour artefacts appear in areas of image very close to black.

This isn't at all new - have been seeing this consistently for years in 2.14.x, 2.15.x and 2.16.x. But have only just found time to properly investigate.

Example below:

  1. Start with ProRes of colour bars.
  2. Create DCP with DOM from ProRes.
  3. In new DOM project, export that DCP back to ProRes.

Below are the 3 as seen on Resolve's scopes.

The DCP is an accurate representation of the original ProRes (except for noise in blacks - in practice not visible). The conversion back to ProRes, however, noticeably alters the image in 2 ways:

  1. Luminance is reduced across the board. I've annotated the effect on highlights below, but midtones and darks are also reduced in luminance.

  2. In tones close to black, red, blue and green depart from each other and cease to be linear.

The diagonal line in the scopes image is the black-to-white gradient in bottom half of the colour bars. In the original, it's a straight line proceeding in small steps. In the DCP to ProRes export, however, there's a large step at the bottom of the gradient, and the colours diverge from each other.

In real footage, this manifests as banding artefacts which appear as dark green blocky splodges in dark areas. This is mostly not visible, but very dark scenes e.g. "don't go down to the basement" in horror films can be very badly affected.

I believe this is actually the fault of FFMPEG. I get exactly the same result doing the same conversion with FFMPEG (recent nightly build of 6.0).

ffmpeg -i j2c.mxf -c:v prores -profile:v 3 -pix_fmt yuv422p10 -an output.mov

I'm going to raise a bug report on FFMPEG. However I'm not sure how easy it'll be to get it fixed upstream, so thought I'd raise it here too. Since DOM already knows how to do XYZ-Rec709 colour space conversion, I wondered if it might be better for DOM to handle that conversion, before passing it to FFMPEG?

TagsNo tags attached.
Branch
Estimated weeks required
Estimated work requiredUndecided

Activities

overlookmotel

2023-07-07 17:23

developer  

ProRes source image.png (326,878 bytes)
ProRes source.png (88,768 bytes)   
ProRes source.png (88,768 bytes)   
DOM DCP.png (705,103 bytes)
DOM DCP export annotated.png (188,451 bytes)   
DOM DCP export annotated.png (188,451 bytes)   

overlookmotel

2023-07-07 18:22

developer   ~0005852

FFMPEG bug report: https://trac.ffmpeg.org/ticket/10451

overlookmotel

2023-07-10 10:28

developer   ~0005856

I'm wondering if the reduction in levels is due the conversion missing out the inverse of the "Normalize values" step outlined in https://dcpomatic.com/manual/colour.pdf which is a roughly 8% reduction in levels.

What is this "Normalize values" step anyway? In the colour document, it seems rather arbitrary/unexplained.

Bug History

Date Modified Username Field Change
2023-07-07 17:23 overlookmotel New Bug
2023-07-07 17:23 overlookmotel File Added: ProRes source image.png
2023-07-07 17:23 overlookmotel File Added: ProRes source.png
2023-07-07 17:23 overlookmotel File Added: DOM DCP.png
2023-07-07 17:23 overlookmotel File Added: DOM DCP export annotated.png
2023-07-07 17:23 overlookmotel File Added: bars premiere 1998x1080 ProResHQ.mov
2023-07-07 18:22 overlookmotel Note Added: 0005852
2023-07-08 15:31 carl Target Version => 2.16.x
2023-07-08 15:31 carl Estimated work required => Undecided
2023-07-10 10:28 overlookmotel Note Added: 0005856
2023-12-22 22:32 carl Status new => acknowledged