From ce7ca726b2cae0eeb4a4e688c5c7d0ea05776832 Mon Sep 17 00:00:00 2001 From: Vittorio Giovara Date: Wed, 25 Jul 2018 17:21:04 +0200 Subject: vf_tonemap: Fix logic for detecting the maximum peak of untagged sources MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- libavfilter/vf_tonemap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'libavfilter/vf_tonemap.c') 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; } -- cgit v1.2.3