Opened 6 years ago
Closed 6 years ago
#8511 closed defect (fixed)
mp3 probe regression in 4.2.2
| Reported by: | Mattias Wadman | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | avformat |
| Version: | git-master | Keywords: | mp3 probe regression |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
Summary of the bug:
mp3 file probe without file extension hint work fine with 4.2.1 but fails with 4.2.2
How to reproduce:
Download mp3 file from https://anondino.squarespace.com/osc/2020/1/28/osc-53-super-smash-bros-brawl and pipe file to 4.2.1 and 4.2.2 to skip file extension hint. Increased formatprobesize fixes issue.
My guess is that commit https://github.com/FFmpeg/FFmpeg/commit/e9a335150a62bb377a26ce096187b4476145d02b#diff-c66b10cb5a4804b2196f81772f8cd68c caused the regression. Looking at the mp3 file it seems like the id3v2 tag is quite big (nearly 1MB) which causes the first mp3 frame to be partially read and fails the new frame size fits into probe buffer check.
Not sure what could be a sane fix for this. Keep increasing the default probe buffer size might not be feasible? allow partial mp3 frames again would fix only this narrow case i guess?
4.2.1:
$ cat OSC053.mp3 | ffmpeg -v trace -i pipe:0
ffprobe version 4.2.1 Copyright (c) 2007-2019 the FFmpeg developers
built with gcc 8.3.0 (Alpine 8.3.0)
configuration: --pkg-config-flags=--static --extra-cflags=-fopenmp --extra-ldflags='-static -fopenmp' --toolchain=hardened --disable-debug --disable-shared --disable-ffplay --enable-static --enable-gpl --enable-nonfree --enable-openssl --enable-iconv --enable-libxml2 --enable-libmp3lame --enable-libfdk-aac --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvpx --enable-libx264 --enable-libx265 --enable-libwebp --enable-libwavpack --enable-libspeex --enable-libaom --enable-libvidstab --enable-libkvazaar --enable-libfreetype --enable-fontconfig --enable-libfribidi --enable-libass --enable-libzimg --enable-libsoxr --enable-libopenjpeg --enable-libdav1d
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
[NULL @ 0x5555559993c0] Opening 'pipe:0' for reading
[pipe @ 0x555555999c80] Setting default whitelist 'crypto'
Probing mp3 score:12 size:2048
Probing mp3 score:12 size:4096
Probing mp3 score:12 size:8192
Probing mp3 score:12 size:16384
Probing mp3 score:12 size:32768
Probing mp3 score:12 size:65536
Probing mp3 score:12 size:131072
Probing mp3 score:12 size:262144
Probing mp3 score:12 size:524288
Probing mp3 score:1 size:82
[mp3 @ 0x5555559993c0] Format mp3 detected only with low score of 1, misdetection possible!
id3v2 ver:3 flags:00 len:1048484
[mp3 @ 0x5555559993c0] Skipping 0 bytes of junk at 1048494.
[mp3 @ 0x5555559993c0] Before avformat_find_stream_info() pos: 1048494 bytes read:1081344 seeks:0 nb_streams:2
[mjpeg @ 0x55555599c040] marker=d8 avail_size_in_buf=883980
[mjpeg @ 0x55555599c040] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x55555599c040] marker=e1 avail_size_in_buf=883978
[mjpeg @ 0x55555599c040] marker parser used 8597 bytes (68776 bits)
[mjpeg @ 0x55555599c040] marker=ed avail_size_in_buf=875378
[mjpeg @ 0x55555599c040] marker parser used 10641 bytes (85128 bits)
[mjpeg @ 0x55555599c040] marker=e1 avail_size_in_buf=864734
[mjpeg @ 0x55555599c040] marker parser used 4543 bytes (36344 bits)
[mjpeg @ 0x55555599c040] marker=e2 avail_size_in_buf=860188
[mjpeg @ 0x55555599c040] marker parser used 3160 bytes (25280 bits)
[mjpeg @ 0x55555599c040] marker=ee avail_size_in_buf=857026
[mjpeg @ 0x55555599c040] marker parser used 33 bytes (264 bits)
[mjpeg @ 0x55555599c040] marker=db avail_size_in_buf=856991
[mjpeg @ 0x55555599c040] index=0
[mjpeg @ 0x55555599c040] qscale[0]: 0
[mjpeg @ 0x55555599c040] index=1
[mjpeg @ 0x55555599c040] qscale[1]: 0
[mjpeg @ 0x55555599c040] marker parser used 132 bytes (1056 bits)
[mjpeg @ 0x55555599c040] marker=c2 avail_size_in_buf=856857
[mjpeg @ 0x55555599c040] Changing bps from 0 to 8
[mjpeg @ 0x55555599c040] sof0: picture: 3100x3100
[mjpeg @ 0x55555599c040] component 0 1:1 id: 0 quant:0
[mjpeg @ 0x55555599c040] component 1 1:1 id: 1 quant:1
[mjpeg @ 0x55555599c040] component 2 1:1 id: 2 quant:1
[mjpeg @ 0x55555599c040] pix fmt id 11111100
[mjpeg @ 0x55555599c040] Format yuvj444p chosen by get_format().
[mjpeg @ 0x55555599c040] marker parser used 17 bytes (136 bits)
[mjpeg @ 0x55555599c040] marker=c4 avail_size_in_buf=856838
[mjpeg @ 0x55555599c040] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x55555599c040] escaping removed 750224 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=856479
[mjpeg @ 0x55555599c040] marker parser used 106255 bytes (850040 bits)
[mjpeg @ 0x55555599c040] escaping removed 728692 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=750100
[mjpeg @ 0x55555599c040] marker parser used 21408 bytes (171264 bits)
[mjpeg @ 0x55555599c040] escaping removed 702901 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=728519
[mjpeg @ 0x55555599c040] marker parser used 25618 bytes (204944 bits)
[mjpeg @ 0x55555599c040] escaping removed 585158 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=702808
[mjpeg @ 0x55555599c040] marker parser used 117650 bytes (941200 bits)
[mjpeg @ 0x55555599c040] escaping removed 528692 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=584856
[mjpeg @ 0x55555599c040] marker parser used 56164 bytes (449312 bits)
[mjpeg @ 0x55555599c040] escaping removed 441063 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=528460
[mjpeg @ 0x55555599c040] marker parser used 87397 bytes (699176 bits)
[mjpeg @ 0x55555599c040] escaping removed 1978 bytes
[mjpeg @ 0x55555599c040] marker=da avail_size_in_buf=440548
[mjpeg @ 0x55555599c040] marker parser used 438570 bytes (3508560 bits)
[mjpeg @ 0x55555599c040] marker=d9 avail_size_in_buf=0
[mjpeg @ 0x55555599c040] decode frame unused 0 bytes
[mp3 @ 0x5555559993c0] All info found
[mp3 @ 0x5555559993c0] stream 0: start_time: 0.000 duration: -653583619391.637
[mp3 @ 0x5555559993c0] stream 1: start_time: -102481911520608.625 duration: -102481911520608.625
[mp3 @ 0x5555559993c0] format: start_time: 0.000 duration: -9223372036854.775 bitrate=128 kb/s
[mp3 @ 0x5555559993c0] After avformat_find_stream_info() pos: 1069998 bytes read:1081344 seeks:0 frames:51
Input #0, mp3, from 'pipe:0':
Metadata:
genre : Podcast
track : 53
album : Original Soundchat
title : SUPER SMASH BROS. BRAWL - Episode 53 (JAN 28, 2020)
artist : Anonymous Dinosaur
album_artist : Joe DeVader & Peter Spezia
date : 2020-01-27 20:20
id3v2_priv.XMP : <?xpacket begin="\xef\xbb\xbf" id="W5M0MpCehiHzreSzNTczkc9d"?>\x0a<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c148 79.164036, 2019/08/13-01:06:57 ">\x0a <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">\x0a <rdf
Duration: N/A, start: 0.000000, bitrate: 128 kb/s
Stream #0:0, 50, 1/14112000: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s
Stream #0:1, 1, 1/90000: Video: mjpeg (Progressive), 1 reference frame, yuvj444p(pc, bt470bg/unknown/unknown, center), 3100x3100, 0/1, 90k tbr, 90k tbn, 90k tbc (attached pic)
Metadata:
comment : Other
[AVIOContext @ 0x5555559a1e80] Statistics: 1081344 bytes read, 0 seeks
4.2.2:
$ cat OSC053.mp3 | ffmpeg -v trace -i pipe:0
ffprobe version 4.2.2 Copyright (c) 2007-2019 the FFmpeg developers
built with gcc 9.2.0 (Alpine 9.2.0)
configuration: --pkg-config-flags=--static --extra-cflags=-fopenmp --extra-ldflags='-static -fopenmp' --toolchain=hardened --disable-debug --disable-shared --disable-ffplay --enable-static --enable-gpl --enable-nonfree --enable-openssl --enable-iconv --enable-libxml2 --enable-libmp3lame --enable-libfdk-aac --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvpx --enable-libx264 --enable-libx265 --enable-libwebp --enable-libwavpack --enable-libspeex --enable-libaom --enable-libvidstab --enable-libkvazaar --enable-libfreetype --enable-fontconfig --enable-libfribidi --enable-libass --enable-libzimg --enable-libsoxr --enable-libopenjpeg --enable-libdav1d
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
[NULL @ 0x55555641e4c0] Opening 'pipe:0' for reading
[pipe @ 0x55555641ed80] Setting default whitelist 'crypto'
Probing mp3 score:12 size:2048
Probing mp3 score:12 size:4096
Probing mp3 score:12 size:8192
Probing mp3 score:12 size:16384
Probing mp3 score:12 size:32768
Probing mp3 score:12 size:65536
Probing mp3 score:12 size:131072
Probing mp3 score:12 size:262144
Probing mp3 score:12 size:524288
[AVIOContext @ 0x555556426f80] Statistics: 1073152 bytes read, 0 seeks
pipe:0: Invalid data found when processing input
4.2.2 with increased formatprobesize:
$ cat OSC053.mp3 | ffmpeg -formatprobesize 2000000 -v trace -i pipe:0
ffprobe version 4.2.2 Copyright (c) 2007-2019 the FFmpeg developers
built with gcc 9.2.0 (Alpine 9.2.0)
configuration: --pkg-config-flags=--static --extra-cflags=-fopenmp --extra-ldflags='-static -fopenmp' --toolchain=hardened --disable-debug --disable-shared --disable-ffplay --enable-static --enable-gpl --enable-nonfree --enable-openssl --enable-iconv --enable-libxml2 --enable-libmp3lame --enable-libfdk-aac --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvpx --enable-libx264 --enable-libx265 --enable-libwebp --enable-libwavpack --enable-libspeex --enable-libaom --enable-libvidstab --enable-libkvazaar --enable-libfreetype --enable-fontconfig --enable-libfribidi --enable-libass --enable-libzimg --enable-libsoxr --enable-libopenjpeg --enable-libdav1d
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
[NULL @ 0x5555557b5540] Opening 'pipe:0' for reading
[pipe @ 0x5555557b5e80] Setting default whitelist 'crypto'
Probing mp3 score:12 size:2048
Probing mp3 score:12 size:4096
Probing mp3 score:12 size:8192
Probing mp3 score:12 size:16384
Probing mp3 score:12 size:32768
Probing mp3 score:12 size:65536
Probing mp3 score:12 size:131072
Probing mp3 score:12 size:262144
Probing mp3 score:12 size:524288
Probing mp3 score:51 size:1048658
[mp3 @ 0x5555557b5540] Format mp3 probed with size=2097152 and score=51
id3v2 ver:3 flags:00 len:1048484
[mp3 @ 0x5555557b5540] Skipping 0 bytes of junk at 1048494.
[mp3 @ 0x5555557b5540] Before avformat_find_stream_info() pos: 1048494 bytes read:2105344 seeks:0 nb_streams:2
[mjpeg @ 0x5555557b8180] marker=d8 avail_size_in_buf=883980
[mjpeg @ 0x5555557b8180] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x5555557b8180] marker=e1 avail_size_in_buf=883978
[mjpeg @ 0x5555557b8180] marker parser used 8597 bytes (68776 bits)
[mjpeg @ 0x5555557b8180] marker=ed avail_size_in_buf=875378
[mjpeg @ 0x5555557b8180] marker parser used 10641 bytes (85128 bits)
[mjpeg @ 0x5555557b8180] marker=e1 avail_size_in_buf=864734
[mjpeg @ 0x5555557b8180] marker parser used 4543 bytes (36344 bits)
[mjpeg @ 0x5555557b8180] marker=e2 avail_size_in_buf=860188
[mjpeg @ 0x5555557b8180] marker parser used 3160 bytes (25280 bits)
[mjpeg @ 0x5555557b8180] marker=ee avail_size_in_buf=857026
[mjpeg @ 0x5555557b8180] marker parser used 33 bytes (264 bits)
[mjpeg @ 0x5555557b8180] marker=db avail_size_in_buf=856991
[mjpeg @ 0x5555557b8180] index=0
[mjpeg @ 0x5555557b8180] qscale[0]: 0
[mjpeg @ 0x5555557b8180] index=1
[mjpeg @ 0x5555557b8180] qscale[1]: 0
[mjpeg @ 0x5555557b8180] marker parser used 132 bytes (1056 bits)
[mjpeg @ 0x5555557b8180] marker=c2 avail_size_in_buf=856857
[mjpeg @ 0x5555557b8180] Changing bps from 0 to 8
[mjpeg @ 0x5555557b8180] sof0: picture: 3100x3100
[mjpeg @ 0x5555557b8180] component 0 1:1 id: 0 quant:0
[mjpeg @ 0x5555557b8180] component 1 1:1 id: 1 quant:1
[mjpeg @ 0x5555557b8180] component 2 1:1 id: 2 quant:1
[mjpeg @ 0x5555557b8180] pix fmt id 11111100
[mjpeg @ 0x5555557b8180] Format yuvj444p chosen by get_format().
[mjpeg @ 0x5555557b8180] marker parser used 17 bytes (136 bits)
[mjpeg @ 0x5555557b8180] marker=c4 avail_size_in_buf=856838
[mjpeg @ 0x5555557b8180] marker parser used 0 bytes (0 bits)
[mjpeg @ 0x5555557b8180] escaping removed 750224 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=856479
[mjpeg @ 0x5555557b8180] marker parser used 106255 bytes (850040 bits)
[mjpeg @ 0x5555557b8180] escaping removed 728692 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=750100
[mjpeg @ 0x5555557b8180] marker parser used 21408 bytes (171264 bits)
[mjpeg @ 0x5555557b8180] escaping removed 702901 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=728519
[mjpeg @ 0x5555557b8180] marker parser used 25618 bytes (204944 bits)
[mjpeg @ 0x5555557b8180] escaping removed 585158 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=702808
[mjpeg @ 0x5555557b8180] marker parser used 117650 bytes (941200 bits)
[mjpeg @ 0x5555557b8180] escaping removed 528692 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=584856
[mjpeg @ 0x5555557b8180] marker parser used 56164 bytes (449312 bits)
[mjpeg @ 0x5555557b8180] escaping removed 441063 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=528460
[mjpeg @ 0x5555557b8180] marker parser used 87397 bytes (699176 bits)
[mjpeg @ 0x5555557b8180] escaping removed 1978 bytes
[mjpeg @ 0x5555557b8180] marker=da avail_size_in_buf=440548
[mjpeg @ 0x5555557b8180] marker parser used 438570 bytes (3508560 bits)
[mjpeg @ 0x5555557b8180] marker=d9 avail_size_in_buf=0
[mjpeg @ 0x5555557b8180] decode frame unused 0 bytes
[mp3 @ 0x5555557b5540] All info found
[mp3 @ 0x5555557b5540] stream 0: start_time: 0.000 duration: -653583619391.637
[mp3 @ 0x5555557b5540] stream 1: start_time: -102481911520608.625 duration: -102481911520608.625
[mp3 @ 0x5555557b5540] format: start_time: 0.000 duration: -9223372036854.775 bitrate=128 kb/s
[mp3 @ 0x5555557b5540] After avformat_find_stream_info() pos: 1069998 bytes read:2105344 seeks:0 frames:51
Input #0, mp3, from 'pipe:0':
Metadata:
genre : Podcast
track : 53
album : Original Soundchat
title : SUPER SMASH BROS. BRAWL - Episode 53 (JAN 28, 2020)
artist : Anonymous Dinosaur
album_artist : Joe DeVader & Peter Spezia
date : 2020-01-27 20:20
id3v2_priv.XMP : <?xpacket begin="\xef\xbb\xbf" id="W5M0MpCehiHzreSzNTczkc9d"?>\x0a<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c148 79.164036, 2019/08/13-01:06:57 ">\x0a <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">\x0a <rdf
Duration: N/A, start: 0.000000, bitrate: 128 kb/s
Stream #0:0, 50, 1/14112000: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s
Stream #0:1, 1, 1/90000: Video: mjpeg (Progressive), 1 reference frame, yuvj444p(pc, bt470bg/unknown/unknown, center), 3100x3100, 0/1, 90k tbr, 90k tbn, 90k tbc (attached pic)
Metadata:
comment : Other
[AVIOContext @ 0x5555557be080] Statistics: 2105344 bytes read, 0 seeks
Change History (2)
comment:1 by , 6 years ago
| Keywords: | mp3 probe regression added |
|---|---|
| Priority: | normal → important |
| Reproduced by developer: | set |
| Status: | new → open |
| Version: | unspecified → git-master |
comment:2 by , 6 years ago
| Resolution: | → fixed |
|---|---|
| Status: | open → closed |
Fixed by Michael in 23645f95ec0ae3f4ccc8ad2b23d1fbb16575ae16
Note:
See TracTickets
for help on using tickets.



Indeed a regression since e9a335150a62bb377a26ce096187b4476145d02b