This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch release/9.0
in repository ffmpeg.

commit 03d9533176e98bb9fbf569c1f34968e73e948dd9
Author:     Kacper Michajłow <[email protected]>
AuthorDate: Sun Jul 26 19:56:11 2026 +0200
Commit:     ffmpeg-devel <[email protected]>
CommitDate: Sat Aug 8 21:46:50 2026 +0000

    Revert "lavfi/bwdif: fix heap-buffer-overflow with small height videos"
    
    This reverts commit 795bccdaf57772b1803914dee2f32d52776518e2.
    
    The heap-buffer-overflow was a symptom of the >8 bit boundary
    conditions bug fixed in the previous commit. This workaround is no
    longer needed.
    
    This restores spatial-only interpolation of the whole frame for the
    first and last fields, instead of running the temporal edge filter
    against cloned reference frames on the outermost lines. Because of that
    first frame references are updated to pre-fix values.
    
    Signed-off-by: Kacper Michajłow <[email protected]>
    (cherry picked from commit 3cd408c2a6e5a7de8b6d641dedd12d523b94014c)
---
 libavfilter/vf_bwdif.c            | 19 +++++--------------
 tests/ref/fate/filter-bwdif-mode0 |  2 +-
 tests/ref/fate/filter-bwdif-mode1 |  2 +-
 tests/ref/fate/filter-bwdif10     |  2 +-
 4 files changed, 8 insertions(+), 17 deletions(-)

diff --git a/libavfilter/vf_bwdif.c b/libavfilter/vf_bwdif.c
index a34f1906dd..5fba0e7a14 100644
--- a/libavfilter/vf_bwdif.c
+++ b/libavfilter/vf_bwdif.c
@@ -77,20 +77,11 @@ static int filter_slice(AVFilterContext *ctx, void *arg, 
int jobnr, int nb_jobs)
             uint8_t *next = &yadif->next->data[td->plane][y * linesize];
             uint8_t *dst  = &td->frame->data[td->plane][y * 
td->frame->linesize[td->plane]];
             if (yadif->current_field == YADIF_FIELD_END) {
-                if ((y < 3) || ((y + 3) >= td->h)) {
-                    s->dsp.filter_edge(dst, prev, cur, next, td->w,
-                                   (y + 1) < td->h ? refs : -refs,
-                                   y > 0 ? -refs : refs,
-                                   refs << 1, -(refs << 1),
-                                   td->parity ^ td->tff, clip_max,
-                                   (y < 2) || ((y + 3) > td->h) ? 0 : 1);
-                } else {
-                    s->dsp.filter_intra(dst, cur, td->w, (y + 1) < td->h ? 
refs : -refs,
-                                    y > 0 ? -refs : refs,
-                                    (y + 3) < td->h ? 3 * refs : -refs,
-                                    y > 2 ? -3 * refs : refs,
-                                    td->parity ^ td->tff, clip_max);
-                }
+                s->dsp.filter_intra(dst, cur, td->w, (y + 1) < td->h ? refs : 
-refs,
+                                y > 0 ? -refs : refs,
+                                (y + 3) < td->h ? 3 * refs : -refs,
+                                y > 2 ? -3 * refs : refs,
+                                td->parity ^ td->tff, clip_max);
             } else if ((y < 4) || ((y + 5) > td->h)) {
                 s->dsp.filter_edge(dst, prev, cur, next, td->w,
                                (y + 1) < td->h ? refs : -refs,
diff --git a/tests/ref/fate/filter-bwdif-mode0 
b/tests/ref/fate/filter-bwdif-mode0
index 91b47dbe70..23dcaee900 100644
--- a/tests/ref/fate/filter-bwdif-mode0
+++ b/tests/ref/fate/filter-bwdif-mode0
@@ -3,7 +3,7 @@
 #codec_id 0: rawvideo
 #dimensions 0: 720x576
 #sar 0: 16/15
-0,          9,          9,        1,   622080, 0x3f25bfc2
+0,          9,          9,        1,   622080, 0xd435648a
 0,         10,         10,        1,   622080, 0x62085455
 0,         11,         11,        1,   622080, 0x60f943a0
 0,         12,         12,        1,   622080, 0x5396f14a
diff --git a/tests/ref/fate/filter-bwdif-mode1 
b/tests/ref/fate/filter-bwdif-mode1
index 1e604646e7..e8db88c932 100644
--- a/tests/ref/fate/filter-bwdif-mode1
+++ b/tests/ref/fate/filter-bwdif-mode1
@@ -3,7 +3,7 @@
 #codec_id 0: rawvideo
 #dimensions 0: 720x576
 #sar 0: 16/15
-0,         18,         18,        1,   622080, 0x3f25bfc2
+0,         18,         18,        1,   622080, 0xd435648a
 0,         19,         19,        1,   622080, 0xef4617cc
 0,         20,         20,        1,   622080, 0x62085455
 0,         21,         21,        1,   622080, 0x5b5ae735
diff --git a/tests/ref/fate/filter-bwdif10 b/tests/ref/fate/filter-bwdif10
index 70a7f9d3ed..76fcb8882e 100644
--- a/tests/ref/fate/filter-bwdif10
+++ b/tests/ref/fate/filter-bwdif10
@@ -3,7 +3,7 @@
 #codec_id 0: rawvideo
 #dimensions 0: 720x576
 #sar 0: 16/15
-0,          9,          9,        1,  1244160, 0xee7d128d
+0,          9,          9,        1,  1244160, 0x71ca561b
 0,         10,         10,        1,  1244160, 0x6c25ebe8
 0,         11,         11,        1,  1244160, 0xae8e297d
 0,         12,         12,        1,  1244160, 0x20284ad0

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to