Commit ce7ca726 authored by Vittorio Giovara's avatar 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.
parent 076b1966
...@@ -131,10 +131,10 @@ static double determine_signal_peak(AVFrame *in) ...@@ -131,10 +131,10 @@ static double determine_signal_peak(AVFrame *in)
peak = av_q2d(metadata->max_luminance) / REFERENCE_WHITE; peak = av_q2d(metadata->max_luminance) / REFERENCE_WHITE;
} }
/* smpte2084 needs the side data above to work correctly // For untagged source, use peak of 10000 if SMPTE ST.2084
* if missing, assume that the original transfer was arib-std-b67 */ // otherwise assume HLG with reference display peak 1000.
if (!peak) if (!peak)
peak = 12; peak = in->color_trc == AVCOL_TRC_SMPTE2084 ? 100.0f : 10.0f;
return peak; return peak;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment