[FFmpeg-cvslog] avfilter/f_ebur128: properly propagate true peak

Niklas Haas git at videolan.org
Tue Jun 24 13:14:43 EEST 2025


ffmpeg | branch: master | Niklas Haas <git at haasn.dev> | Mon Jun 23 20:47:22 2025 +0200| [f67ca10f2e1e0c7aa53de12ebcc2c17ed63240a2] | committer: Niklas Haas

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

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

 libavfilter/f_ebur128.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

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
 



More information about the ffmpeg-cvslog mailing list