aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.dev>2025-06-23 20:47:22 +0200
committerNiklas Haas <git@haasn.dev>2025-06-24 12:12:37 +0200
commitf67ca10f2e1e0c7aa53de12ebcc2c17ed63240a2 (patch)
tree7cb750291921214518ac26039189194b5d6d2e98
parent60fc0288ae39c3294091c2a4e06816836be95740 (diff)
downloadffmpeg-f67ca10f2e1e0c7aa53de12ebcc2c17ed63240a2.tar.gz
avfilter/f_ebur128: properly propagate true peak
After 3b26b782ee, `ebur128->true_peak` was only set to the maximum of the current "true peak per frame" values, when it should report the true peak for the entire stream. Fixes: 3b26b782eeded9b9ab7fac013cd1a83a30d68206
-rw-r--r--libavfilter/f_ebur128.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavfilter/f_ebur128.c b/libavfilter/f_ebur128.c
index 80cbe20330..63669b71de 100644
--- a/libavfilter/f_ebur128.c
+++ b/libavfilter/f_ebur128.c
@@ -692,11 +692,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples)
double peak = dsp->find_peak(ebur128->true_peaks_per_frame, nb_channels,
swr_samples, ret);
- ebur128->true_peak = DBFS(peak);
for (int ch = 0; ch < nb_channels; ch++) {
+ peak = FFMAX(peak, ebur128->true_peaks[ch]);
ebur128->true_peaks[ch] = FFMAX(ebur128->true_peaks[ch],
ebur128->true_peaks_per_frame[ch]);
}
+
+ ebur128->true_peak = DBFS(peak);
}
#endif