This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit a62d99692780431aeb8cc96665434d5ec3210985 Author: Bogdan Lisman <[email protected]> AuthorDate: Mon Jun 15 03:24:14 2026 +0300 Commit: Michael Niedermayer <[email protected]> CommitDate: Wed Jun 17 02:27:33 2026 +0200 avcodec/snowenc: fix SIGFPE in get_dc() when a block lies outside the plane get_dc() divides the accumulated, OBMC-weighted DC by aa, the sum of the squared OBMC weights taken over the in-plane pixels. When an OBMC block falls entirely outside the plane - e.g. a tiny chroma plane after mcdeint splits a frame into fields - no pixel contributes, aa stays 0 and the ROUNDED_DIV() divides by zero (SIGFPE). ab is 0 in exactly the same case, so the result degenerates to 0; return it directly. Reproducible with the GPL mcdeint filter in slow/extra_slow mode, e.g. ffmpeg -f lavfi -i testsrc=s=128x2 -vf mcdeint=mode=slow -f null - Add a self-contained lavfi-based FATE regression test for the slow mode, which previously crashed and is therefore not covered by the existing sample-based fast/medium tests. Fixes trac ticket #7779. Signed-off-by: Bogdan Lisman <[email protected]> --- libavcodec/snowenc.c | 3 +++ tests/fate/filter-video.mak | 3 +++ tests/ref/fate/filter-mcdeint-slow | 8 ++++++++ 3 files changed, 14 insertions(+) diff --git a/libavcodec/snowenc.c b/libavcodec/snowenc.c index 74749ae263..2142769dbd 100644 --- a/libavcodec/snowenc.c +++ b/libavcodec/snowenc.c @@ -725,6 +725,9 @@ static int get_dc(SnowEncContext *enc, int mb_x, int mb_y, int plane_index) } *b= backup; + if (!aa) + return 0; + return av_clip_uint8( ROUNDED_DIV((int64_t)ab<<LOG2_OBMC_MAX, aa) ); //FIXME we should not need clipping } diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak index 374e50b966..d16fff4d6c 100644 --- a/tests/fate/filter-video.mak +++ b/tests/fate/filter-video.mak @@ -54,6 +54,9 @@ FATE_FILTER_SAMPLES-$(call FILTERDEMDEC, MCDEINT, MPEGTS, MPEG2VIDEO, SNOW_ENCOD FATE_FILTER-$(call FILTERFRAMECRC, MCDEINT TESTSRC, SNOW_ENCODER) += fate-filter-mcdeint-slow-edge fate-filter-mcdeint-slow-edge: CMD = framecrc -auto_conversion_filters -flags bitexact -lavfi testsrc=s=5x32:r=25:d=1,mcdeint=mode=slow -frames:v 3 +FATE_FILTER-$(call FILTERFRAMECRC, MCDEINT TESTSRC, SNOW_ENCODER) += fate-filter-mcdeint-slow +fate-filter-mcdeint-slow: CMD = framecrc -auto_conversion_filters -flags bitexact -lavfi testsrc=s=128x2:r=25:d=1,mcdeint=mode=slow -frames:v 3 + FATE_FILTER_SAMPLES-$(call FILTERDEMDEC, CODECVIEW, RM, RV40) += fate-filter-codecview-mvs fate-filter-codecview-mvs: CMD = framecrc -flags2 +export_mvs -i $(TARGET_SAMPLES)/real/spygames-2MB.rmvb -vf codecview=mv=pf+bf+bb -frames:v 60 -an diff --git a/tests/ref/fate/filter-mcdeint-slow b/tests/ref/fate/filter-mcdeint-slow new file mode 100644 index 0000000000..0888d44805 --- /dev/null +++ b/tests/ref/fate/filter-mcdeint-slow @@ -0,0 +1,8 @@ +#tb 0: 1/25 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 128x2 +#sar 0: 1/1 +0, 0, 0, 1, 768, 0x6d637c68 +0, 1, 1, 1, 768, 0x07867cb0 +0, 2, 2, 1, 768, 0xa1ef7d04 _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
