aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2018-07-25 17:21:04 +0200
committerVittorio Giovara <vittorio.giovara@gmail.com>2018-08-06 18:34:49 +0200
commitce7ca726b2cae0eeb4a4e688c5c7d0ea05776832 (patch)
treefb24b0fd3ed7fdf892a55f3367d4d5e8d6867b62
parent076b19660e7c9466d2d78ff9ae66b97ff2b6aa1e (diff)
downloadffmpeg-ce7ca726b2cae0eeb4a4e688c5c7d0ea05776832.tar.gz
vf_tonemap: Fix logic for detecting the maximum peak of untagged sources
When there is no metadata attached to a frame, take into account both the PQ and HLG transfers, and change the HLG default value to 10: the value of 12 is the maximum range in scene referred light, but the reference OOTF maps this from 0 to 1000 cd/m² on the ideal HLG monitor. This matches what vf_tonemap_opencl does.
-rw-r--r--libavfilter/vf_tonemap.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libavfilter/vf_tonemap.c b/libavfilter/vf_tonemap.c
index 10308bdb16..10fd7ea016 100644
--- a/libavfilter/vf_tonemap.c
+++ b/libavfilter/vf_tonemap.c
@@ -131,10 +131,10 @@ static double determine_signal_peak(AVFrame *in)
peak = av_q2d(metadata->max_luminance) / REFERENCE_WHITE;
}
- /* smpte2084 needs the side data above to work correctly
- * if missing, assume that the original transfer was arib-std-b67 */
+ // For untagged source, use peak of 10000 if SMPTE ST.2084
+ // otherwise assume HLG with reference display peak 1000.
if (!peak)
- peak = 12;
+ peak = in->color_trc == AVCOL_TRC_SMPTE2084 ? 100.0f : 10.0f;
return peak;
}