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.
Showing the changes to libavfilter (1 of 1 file). Show all
Unified · Split
| @@ -692,11 +692,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples) · 691 unmodified lines | ||
| 692 | 692 | double peak = dsp->find_peak(ebur128->true_peaks_per_frame, nb_channels, |
| 693 | 693 | swr_samples, ret); |
| 694 | 694 | |
| 695 | − ebur128->true_peak = DBFS(peak); | |
| 696 | 695 | for (int ch = 0; ch < nb_channels; ch++) { |
| 696 | + peak = FFMAX(peak, ebur128->true_peaks[ch]); | |
| 697 | 697 | ebur128->true_peaks[ch] = FFMAX(ebur128->true_peaks[ch], |
| 698 | 698 | ebur128->true_peaks_per_frame[ch]); |
| 699 | 699 | } |
| 700 | + | |
| 701 | + ebur128->true_peak = DBFS(peak); | |
| 700 | 702 | } |
| 701 | 703 | #endif |
| 702 | 704 | |