Revert "lavfi/bwdif: fix heap-buffer-overflow with small height videos"

This reverts commit 795bccdaf5.

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 <kasper93@gmail.com>
This commit is contained in:
Kacper Michajłow
2026-07-26 19:56:11 +02:00
parent 5e6d663c94
commit 2a20737f66
4 changed files with 8 additions and 17 deletions

View File

@@ -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,

View File

@@ -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

View File

@@ -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

View File

@@ -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