[FFmpeg-trac] #9196(undetermined:new): adelay suffers integer overflow when delaying over 2^32-1 samples
FFmpeg
trac at avcodec.org
Tue Apr 20 00:09:17 EEST 2021
#9196: adelay suffers integer overflow when delaying over 2^32-1 samples
-------------------------------------+-------------------------------------
Reporter: frumsdotxyz | Owner: (none)
Type: defect | Status: new
Priority: normal | Component:
| undetermined
Version: unspecified | Resolution:
Keywords: avfilter, | Blocked By:
adelay |
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Description changed by frumsdotxyz:
Old description:
> I'm not sure how widely-scoped this issue is, but adelay seems to be
> managing sample counts for delays in unsigned 32-bit integers, and
> complains about negative input values when those counts would overflow -
> for instance, using a 50_000_000 millisecond delay on a video with a 48
> kHZ audio track, or (as in the sample below) a 100_000_000 millisecond
> delay on a 22.05 kHz audio file.
> Output for a sample transformation, and output for an ex input file
> itself are provided, but this problem was reproduced across several
> platforms/input audio files/versions, including 4.4.0-r0 (Alpine
> distribution).
>
> {{{
> ffmpeg started on 2021-04-19 at 14:00:35
> Report written to "ffmpeg-20210419-140035.log"
> Log level: 48
> Command line:
> ffmpeg -i zombo.mp3 -af "adelay=delays=100000000:all=1" -report out.mp3
> ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers
> built with Apple clang version 12.0.0 (clang-1200.0.32.29)
> configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4 --enable-shared
> --enable-pthreads --enable-version3 --enable-avresample --cc=clang
> --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-
> gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-
> libmp3lame --enable-libopus --enable-librav1e --enable-librubberband
> --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-
> libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx
> --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2
> --enable-libxvid --enable-lzma --enable-libfontconfig --enable-
> libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb
> --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex
> --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack
> --disable-indev=jack --enable-videotoolbox
> libavutil 56. 70.100 / 56. 70.100
> libavcodec 58.134.100 / 58.134.100
> libavformat 58. 76.100 / 58. 76.100
> libavdevice 58. 13.100 / 58. 13.100
> libavfilter 7.110.100 / 7.110.100
> libavresample 4. 0. 0 / 4. 0. 0
> libswscale 5. 9.100 / 5. 9.100
> libswresample 3. 9.100 / 3. 9.100
> libpostproc 55. 9.100 / 55. 9.100
> Splitting the commandline.
> Reading option '-i' ... matched as input url with argument 'zombo.mp3'.
> Reading option '-af' ... matched as option 'af' (set audio filters) with
> argument 'adelay=delays=100000000:all=1'.
> Reading option '-report' ... matched as option 'report' (generate a
> report) with argument '1'.
> Reading option 'out.mp3' ... matched as output url.
> Finished splitting the commandline.
> Parsing a group of options: global .
> Applying option report (generate a report) with argument 1.
> Successfully parsed a group of options.
> Parsing a group of options: input url zombo.mp3.
> Successfully parsed a group of options.
> Opening an input file: zombo.mp3.
> [NULL @ 0x7fe3f700e800] Opening 'zombo.mp3' for reading
> [file @ 0x7fe3f4420e00] Setting default whitelist 'file,crypto,data'
> [mp3 @ 0x7fe3f700e800] Format mp3 probed with size=2048 and score=51
> [mp3 @ 0x7fe3f700e800] Skipping 0 bytes of junk at 0.
> [mp3 @ 0x7fe3f700e800] Before avformat_find_stream_info() pos: 0 bytes
> read:65664 seeks:2 nb_streams:1
> [mp3 @ 0x7fe3f700e800] All info found
> [mp3 @ 0x7fe3f700e800] Estimating duration from bitrate, this may be
> inaccurate
> [mp3 @ 0x7fe3f700e800] After avformat_find_stream_info() pos: 4096 bytes
> read:65664 seeks:2 frames:50
> Input #0, mp3, from 'zombo.mp3':
> Duration: 00:01:45.48, start: 0.000000, bitrate: 24 kb/s
> Stream #0:0, 50, 1/14112000: Audio: mp3, 22050 Hz, mono, fltp, 24 kb/s
> Successfully opened the file.
> Parsing a group of options: output url out.mp3.
> Applying option af (set audio filters) with argument
> adelay=delays=100000000:all=1.
> Successfully parsed a group of options.
> Opening an output file: out.mp3.
> [file @ 0x7fe3f4707b00] Setting default whitelist 'file,crypto,data'
> Successfully opened the file.
> Stream mapping:
> Stream #0:0 -> #0:0 (mp3 (mp3float) -> mp3 (libmp3lame))
> Press [q] to stop, [?] for help
> cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
> if it occurs once at the start per stream)
> detected 8 logical cores
> [Parsed_adelay_0 @ 0x7fe3f5a04e80] Setting 'delays' to value '100000000'
> [Parsed_adelay_0 @ 0x7fe3f5a04e80] Setting 'all' to value '1'
> [graph_0_in_0_0 @ 0x7fe3f4424740] Setting 'time_base' to value '1/22050'
> [graph_0_in_0_0 @ 0x7fe3f4424740] Setting 'sample_rate' to value '22050'
> [graph_0_in_0_0 @ 0x7fe3f4424740] Setting 'sample_fmt' to value 'fltp'
> [graph_0_in_0_0 @ 0x7fe3f4424740] Setting 'channel_layout' to value '0x4'
> [graph_0_in_0_0 @ 0x7fe3f4424740] tb:1/22050 samplefmt:fltp
> samplerate:22050 chlayout:0x4
> [format_out_0_0 @ 0x7fe3f4424bc0] Setting 'sample_fmts' to value
> 's32p|fltp|s16p'
> [format_out_0_0 @ 0x7fe3f4424bc0] Setting 'sample_rates' to value
> '44100|48000|32000|22050|24000|16000|11025|12000|8000'
> [format_out_0_0 @ 0x7fe3f4424bc0] Setting 'channel_layouts' to value
> '0x4|0x3'
> [AVFilterGraph @ 0x7fe3f44245c0] query_formats: 4 queried, 9 merged, 0
> already done, 0 delayed
> [Parsed_adelay_0 @ 0x7fe3f5a04e80] Delay must be non negative number.
> [Parsed_adelay_0 @ 0x7fe3f5a04e80] Failed to configure input pad on
> Parsed_adelay_0
> Error reinitializing filters!
> Failed to inject frame into filter network: Invalid argument
> Error while processing the decoded data for stream #0:0
> [AVIOContext @ 0x7fe3f4422c00] Statistics: 0 seeks, 0 writeouts
> [AVIOContext @ 0x7fe3f4420f80] Statistics: 65664 bytes read, 2 seeks
> Conversion failed!
> }}}
>
> {{{
> ffmpeg started on 2021-04-19 at 14:00:50
> Report written to "ffmpeg-20210419-140050.log"
> Log level: 99
> Command line:
> ffmpeg -v 9 -loglevel 99 -i zombo.mp3 -report
> ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers
> built with Apple clang version 12.0.0 (clang-1200.0.32.29)
> configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4 --enable-shared
> --enable-pthreads --enable-version3 --enable-avresample --cc=clang
> --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-
> gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-
> libmp3lame --enable-libopus --enable-librav1e --enable-librubberband
> --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-
> libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx
> --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2
> --enable-libxvid --enable-lzma --enable-libfontconfig --enable-
> libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb
> --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex
> --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack
> --disable-indev=jack --enable-videotoolbox
> libavutil 56. 70.100 / 56. 70.100
> libavcodec 58.134.100 / 58.134.100
> libavformat 58. 76.100 / 58. 76.100
> libavdevice 58. 13.100 / 58. 13.100
> libavfilter 7.110.100 / 7.110.100
> libavresample 4. 0. 0 / 4. 0. 0
> libswscale 5. 9.100 / 5. 9.100
> libswresample 3. 9.100 / 3. 9.100
> libpostproc 55. 9.100 / 55. 9.100
> Splitting the commandline.
> Reading option '-v' ... matched as option 'v' (set logging level) with
> argument '9'.
> Reading option '-loglevel' ... matched as option 'loglevel' (set logging
> level) with argument '99'.
> Reading option '-i' ... matched as input url with argument 'zombo.mp3'.
> Reading option '-report' ... matched as option 'report' (generate a
> report) with argument '1'.
> Finished splitting the commandline.
> Parsing a group of options: global .
> Applying option v (set logging level) with argument 9.
> Applying option loglevel (set logging level) with argument 99.
> Applying option report (generate a report) with argument 1.
> Successfully parsed a group of options.
> Parsing a group of options: input url zombo.mp3.
> Successfully parsed a group of options.
> Opening an input file: zombo.mp3.
> [NULL @ 0x7fda90008200] Opening 'zombo.mp3' for reading
> [file @ 0x7fda8d707800] Setting default whitelist 'file,crypto,data'
> Probing mp3 score:51 size:2048
> [mp3 @ 0x7fda90008200] Format mp3 probed with size=2048 and score=51
> [mp3 @ 0x7fda90008200] Skipping 0 bytes of junk at 0.
> [mp3 @ 0x7fda90008200] Before avformat_find_stream_info() pos: 0 bytes
> read:65664 seeks:2 nb_streams:1
> [mp3 @ 0x7fda90008200] All info found
> [mp3 @ 0x7fda90008200] Estimating duration from bitrate, this may be
> inaccurate
> [mp3 @ 0x7fda90008200] stream 0: start_time: 0 duration: 105.482
> [mp3 @ 0x7fda90008200] format: start_time: 0 duration: 105.482 (estimate
> from bit rate) bitrate=24 kb/s
> [mp3 @ 0x7fda90008200] After avformat_find_stream_info() pos: 4096 bytes
> read:65664 seeks:2 frames:50
> Input #0, mp3, from 'zombo.mp3':
> Duration: 00:01:45.48, start: 0.000000, bitrate: 24 kb/s
> Stream #0:0, 50, 1/14112000: Audio: mp3, 22050 Hz, mono, fltp, 24 kb/s
> Successfully opened the file.
> At least one output file must be specified
> [AVIOContext @ 0x7fda8eb040c0] Statistics: 65664 bytes read, 2 seeks
> }}}
New description:
I'm not sure how widely-scoped this issue is, but adelay seems to be
managing sample counts for delays in unsigned 32-bit integers, and
complains about negative input values when those counts would overflow -
for instance, using a 50_000_000 millisecond delay on a video with a 48
kHZ audio track, or (as in the sample below) a 100_000_000 millisecond
delay on a 22.05 kHz audio file.
Output for a sample transformation, and output for an ex input file itself
are provided, but this problem was reproduced across several
platforms/input audio files/versions, including 4.4.0-r0 (Alpine
distribution).
This was first discovered when processing and time-aligning the audio
tracks of long video recordings with multiple slices made over the course
of a day, which is where the original ~50k second figure (around 14 hours)
was discovered.
{{{
ffmpeg started on 2021-04-19 at 14:00:35
Report written to "ffmpeg-20210419-140035.log"
Log level: 48
Command line:
ffmpeg -i zombo.mp3 -af "adelay=delays=100000000:all=1" -report out.mp3
ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 12.0.0 (clang-1200.0.32.29)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4 --enable-shared
--enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-
cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl
--enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame
--enable-libopus --enable-librav1e --enable-librubberband --enable-
libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora
--enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp
--enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid
--enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r
--enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb
--enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq
--enable-libzimg --disable-libjack --disable-indev=jack --enable-
videotoolbox
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Splitting the commandline.
Reading option '-i' ... matched as input url with argument 'zombo.mp3'.
Reading option '-af' ... matched as option 'af' (set audio filters) with
argument 'adelay=delays=100000000:all=1'.
Reading option '-report' ... matched as option 'report' (generate a
report) with argument '1'.
Reading option 'out.mp3' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url zombo.mp3.
Successfully parsed a group of options.
Opening an input file: zombo.mp3.
[NULL @ 0x7fe3f700e800] Opening 'zombo.mp3' for reading
[file @ 0x7fe3f4420e00] Setting default whitelist 'file,crypto,data'
[mp3 @ 0x7fe3f700e800] Format mp3 probed with size=2048 and score=51
[mp3 @ 0x7fe3f700e800] Skipping 0 bytes of junk at 0.
[mp3 @ 0x7fe3f700e800] Before avformat_find_stream_info() pos: 0 bytes
read:65664 seeks:2 nb_streams:1
[mp3 @ 0x7fe3f700e800] All info found
[mp3 @ 0x7fe3f700e800] Estimating duration from bitrate, this may be
inaccurate
[mp3 @ 0x7fe3f700e800] After avformat_find_stream_info() pos: 4096 bytes
read:65664 seeks:2 frames:50
Input #0, mp3, from 'zombo.mp3':
Duration: 00:01:45.48, start: 0.000000, bitrate: 24 kb/s
Stream #0:0, 50, 1/14112000: Audio: mp3, 22050 Hz, mono, fltp, 24 kb/s
Successfully opened the file.
Parsing a group of options: output url out.mp3.
Applying option af (set audio filters) with argument
adelay=delays=100000000:all=1.
Successfully parsed a group of options.
Opening an output file: out.mp3.
[file @ 0x7fe3f4707b00] Setting default whitelist 'file,crypto,data'
Successfully opened the file.
Stream mapping:
Stream #0:0 -> #0:0 (mp3 (mp3float) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
if it occurs once at the start per stream)
detected 8 logical cores
[Parsed_adelay_0 @ 0x7fe3f5a04e80] Setting 'delays' to value '100000000'
[Parsed_adelay_0 @ 0x7fe3f5a04e80] Setting 'all' to value '1'
[graph_0_in_0_0 @ 0x7fe3f4424740] Setting 'time_base' to value '1/22050'
[graph_0_in_0_0 @ 0x7fe3f4424740] Setting 'sample_rate' to value '22050'
[graph_0_in_0_0 @ 0x7fe3f4424740] Setting 'sample_fmt' to value 'fltp'
[graph_0_in_0_0 @ 0x7fe3f4424740] Setting 'channel_layout' to value '0x4'
[graph_0_in_0_0 @ 0x7fe3f4424740] tb:1/22050 samplefmt:fltp
samplerate:22050 chlayout:0x4
[format_out_0_0 @ 0x7fe3f4424bc0] Setting 'sample_fmts' to value
's32p|fltp|s16p'
[format_out_0_0 @ 0x7fe3f4424bc0] Setting 'sample_rates' to value
'44100|48000|32000|22050|24000|16000|11025|12000|8000'
[format_out_0_0 @ 0x7fe3f4424bc0] Setting 'channel_layouts' to value
'0x4|0x3'
[AVFilterGraph @ 0x7fe3f44245c0] query_formats: 4 queried, 9 merged, 0
already done, 0 delayed
[Parsed_adelay_0 @ 0x7fe3f5a04e80] Delay must be non negative number.
[Parsed_adelay_0 @ 0x7fe3f5a04e80] Failed to configure input pad on
Parsed_adelay_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
[AVIOContext @ 0x7fe3f4422c00] Statistics: 0 seeks, 0 writeouts
[AVIOContext @ 0x7fe3f4420f80] Statistics: 65664 bytes read, 2 seeks
Conversion failed!
}}}
{{{
ffmpeg started on 2021-04-19 at 14:00:50
Report written to "ffmpeg-20210419-140050.log"
Log level: 99
Command line:
ffmpeg -v 9 -loglevel 99 -i zombo.mp3 -report
ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 12.0.0 (clang-1200.0.32.29)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4 --enable-shared
--enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-
cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl
--enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame
--enable-libopus --enable-librav1e --enable-librubberband --enable-
libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora
--enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp
--enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid
--enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r
--enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb
--enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq
--enable-libzimg --disable-libjack --disable-indev=jack --enable-
videotoolbox
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with
argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging
level) with argument '99'.
Reading option '-i' ... matched as input url with argument 'zombo.mp3'.
Reading option '-report' ... matched as option 'report' (generate a
report) with argument '1'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Applying option loglevel (set logging level) with argument 99.
Applying option report (generate a report) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url zombo.mp3.
Successfully parsed a group of options.
Opening an input file: zombo.mp3.
[NULL @ 0x7fda90008200] Opening 'zombo.mp3' for reading
[file @ 0x7fda8d707800] Setting default whitelist 'file,crypto,data'
Probing mp3 score:51 size:2048
[mp3 @ 0x7fda90008200] Format mp3 probed with size=2048 and score=51
[mp3 @ 0x7fda90008200] Skipping 0 bytes of junk at 0.
[mp3 @ 0x7fda90008200] Before avformat_find_stream_info() pos: 0 bytes
read:65664 seeks:2 nb_streams:1
[mp3 @ 0x7fda90008200] All info found
[mp3 @ 0x7fda90008200] Estimating duration from bitrate, this may be
inaccurate
[mp3 @ 0x7fda90008200] stream 0: start_time: 0 duration: 105.482
[mp3 @ 0x7fda90008200] format: start_time: 0 duration: 105.482 (estimate
from bit rate) bitrate=24 kb/s
[mp3 @ 0x7fda90008200] After avformat_find_stream_info() pos: 4096 bytes
read:65664 seeks:2 frames:50
Input #0, mp3, from 'zombo.mp3':
Duration: 00:01:45.48, start: 0.000000, bitrate: 24 kb/s
Stream #0:0, 50, 1/14112000: Audio: mp3, 22050 Hz, mono, fltp, 24 kb/s
Successfully opened the file.
At least one output file must be specified
[AVIOContext @ 0x7fda8eb040c0] Statistics: 65664 bytes read, 2 seeks
}}}
--
--
Ticket URL: <https://trac.ffmpeg.org/ticket/9196#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list