[FFmpeg-cvslog] vf_tonemap: Fix logic for detecting the maximum peak of untagged sources

Vittorio Giovara git at videolan.org
Mon Aug 6 21:53:53 EEST 2018


ffmpeg | branch: master | Vittorio Giovara <vittorio.giovara at gmail.com> | Wed Jul 25 17:21:04 2018 +0200| [ce7ca726b2cae0eeb4a4e688c5c7d0ea05776832] | committer: Vittorio Giovara

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ce7ca726b2cae0eeb4a4e688c5c7d0ea05776832
---

 libavfilter/vf_tonemap.c | 6 +++---
 1 file 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;
 }



More information about the ffmpeg-cvslog mailing list