[FFmpeg-trac] #11428(undetermined:new): SIGFPE in xpsnr filter
FFmpeg
trac at avcodec.org
Wed Jan 22 23:47:00 EET 2025
#11428: SIGFPE in xpsnr filter
-------------------------------------+-------------------------------------
Reporter: Ronald S. | Type: defect
Bultje |
Status: new | Priority: normal
Component: | Version:
undetermined | unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
How to reproduce:
{{{
$ ~/Projects/ffmpeg/x86-64-gpl/ffmpeg -i ~/Movies/cif/bus_cif.y4m -i x.ivf
-lavfi
'[0:v]settb=1/30,setpts=N[a];[1:v]settb=1/30,setpts=N[b];[a][b]xpsnr' -f
null -
ffmpeg version N-118043-g2dc864eb4e Copyright (c) 2000-2024 the FFmpeg
developers
built with Apple clang version 13.1.6 (clang-1316.0.21.2.5)
configuration: --enable-gpl --samples=/Users/ronaldbultje/Movies/fate-
suite --enable-libvpx --enable-libaom --enable-ffplay --enable-sdl2
--enable-version3 --enable-libdav1d --enable-libx264 --enable-libx265
--disable-videotoolbox --enable-libvmaf
libavutil 59. 49.100 / 59. 49.100
libavcodec 61. 26.100 / 61. 26.100
libavformat 61. 9.100 / 61. 9.100
libavdevice 61. 4.100 / 61. 4.100
libavfilter 10. 6.101 / 10. 6.101
libswscale 8. 12.100 / 8. 12.100
libswresample 5. 4.100 / 5. 4.100
libpostproc 58. 4.100 / 58. 4.100
Input #0, yuv4mpegpipe, from '/Users/ronaldbultje/Movies/cif/bus_cif.y4m':
Duration: 00:00:05.00, start: 0.000000, bitrate: 36496 kb/s
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p(progressive),
352x288, SAR 128:117 DAR 1408:1053, 30 fps, 30 tbr, 30 tbn
Input #1, ivf, from 'x.ivf':
Duration: 00:00:03.34, start: 0.000000, bitrate: 341 kb/s
Stream #1:0: Video: av1 (libdav1d) (Main) (AV01 / 0x31305641),
yuv420p(tv), 352x288 [SAR 1:1 DAR 11:9], 29.97 tbr, 29.97 tbn
Stream mapping:
Stream #0:0 (rawvideo) -> settb:default
Stream #1:0 (libdav1d) -> settb:default
xpsnr:default -> Stream #0:0 (wrapped_avframe)
Press [q] to stop, [?] for help
Floating point exception: 8
}}}
This is because xpsnr uses the framerate:
https://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavfilter/vf_xpsnr.c;h=1b2c2a7c2c7a24da9494f4bddc9c1e368b5cb17a;hb=HEAD#l571
and this is reset in setpts and/or settb. Adding a fps=30 filter fixes it.
I believe xpsnr uses fps to do 1st vs. 2nd order diffs (1st if fps<32, 2nd
if fps>=32). But maybe it's meaningful to give users an alternative way to
configure this distinction and not crash if the FPS is not set?
--
Ticket URL: <https://trac.ffmpeg.org/ticket/11428>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list