Fix video range in preview and DCP when source is VIDEO rather than FULL. video-range-bug
authorCarl Hetherington <cth@carlh.net>
Thu, 11 Aug 2022 21:42:01 +0000 (23:42 +0200)
committerCarl Hetherington <cth@carlh.net>
Thu, 11 Aug 2022 21:48:40 +0000 (23:48 +0200)
commit2e607b7968a0af94d7e38fb9d7d5459e33beed85
tree0069869c5160b8dc7c705b596b70b19eeab22ba2
parentda75178e689a48dc689b70e0880a45f0cf8c07a8
Fix video range in preview and DCP when source is VIDEO rather than FULL.

It looks like the handling of "video" range (16-235) sources (when
creating "full" range (0-255) outputs) has been broken for some considerable
time.  Full range outputs are used for both preview and DCP creation.

We assumed that after we called sws_setColorspaceDetails FFmpeg would take
care of the conversion from video to full, but its source suggests that
it refuses to convert to full-range RGB (only full-range YUV or
greyscale).  Previously there was a seemingly correct comment (that
FFmpeg would do nothing if source _or_ destination were RGB) but the
check on when to use video_range_to_full_range() was only activated
for RGB sources, not (also) RGB outputs.

It's hard to believe that this has been around unnoticed for so long.

https://dcpomatic.com/forum/viewtopic.php?t=1928&start=10 has a
discussion which pointed out the problem.
src/lib/image.cc