Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH] lavfilter/af_loudnorm: fix loudnorm limiter invalid at final frame
@ 2023-11-19  6:18 shu coon
  2023-11-19 11:39 ` Paul B Mahol
  0 siblings, 1 reply; 2+ messages in thread
From: shu coon @ 2023-11-19  6:18 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: 萧辰琨 <xiaochenkun@xiaohongshu.com>
---
libavfilter/af_loudnorm.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavfilter/af_loudnorm.c b/libavfilter/af_loudnorm.c
index d83398ae2a..b8c10285ca 100644
--- a/libavfilter/af_loudnorm.c
+++ b/libavfilter/af_loudnorm.c
@@ -570,10 +570,10 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)

    case FINAL_FRAME:
        gain = gaussian_filter(s, s->index + 10 < 30 ? s->index + 10 : s->index + 10 - 30);
-        s->limiter_buf_index = 0;
        src_index = 0;

-        for (n = 0; n < s->limiter_buf_size / inlink->ch_layout.nb_channels; n++) {
+        subframe_length = frame_size(inlink->sample_rate, 100);
+        for (n = 0; n < subframe_length; n++) {
            for (c = 0; c < inlink->ch_layout.nb_channels; c++) {
                s->limiter_buf[s->limiter_buf_index + c] = src[src_index + c] * gain * s->offset;
            }
@@ -658,6 +658,7 @@ static int flush_frame(AVFilterLink *outlink)
        offset  = ((s->limiter_buf_size / inlink->ch_layout.nb_channels) - s->prev_nb_samples) * inlink->ch_layout.nb_channels;
        offset -= (frame_size(inlink->sample_rate, 100) - s->prev_nb_samples) * inlink->ch_layout.nb_channels;
        s->buf_index = s->buf_index - offset < 0 ? s->buf_index - offset + s->buf_size : s->buf_index - offset;
+        s->limiter_buf_index = s->limiter_buf_index - offset < 0 ? s->limiter_buf_index - offset + s->limiter_buf_size : s->limiter_buf_index - offset;

        for (n = 0; n < nb_samples; n++) {
            for (c = 0; c < inlink->ch_layout.nb_channels; c++) {
-- 
2.39.2 (Apple Git-143)



	The issue will cause a large amount of clipping in the last 3 seconds of audio data.  Causing this issue is due to s->limiter_buf_index and s->env_index being misaligned;
	
	Following steps can be used to reproduce the issue:
	
       1.Download the file from https://streams.videolan.org/ffmpeg/incoming/keyboard.mp4.
       2.Run the following command.
ffmpeg -i 'keyboard.mp4'  -af loudnorm=I=-12:TP=-1.0:LRA=7:measured_I=-44.37:measured_LRA=20.10:measured_thresh=-55.61:offset=4.18:linear=true:dual_mono=true:print_format=summary -ar 48000 'output.mp4'

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-11-19 11:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-19  6:18 [FFmpeg-devel] [PATCH] lavfilter/af_loudnorm: fix loudnorm limiter invalid at final frame shu coon
2023-11-19 11:39 ` Paul B Mahol

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git