#5319 closed defect (fixed)
ac3 decoder can become "broken from then on" if fed certain corrupted input
| Reported by: | Roger Pack | Owned by: | |
|---|---|---|---|
| Priority: | important | Component: | avcodec |
| Version: | git-master | Keywords: | ac3 regression |
| Cc: | jsantiago@fastmail.us | Blocked By: | |
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
Summary of the bug: While decoding some ac3 data received from a "live" source (i.e. with some small packet loss), the decoder can enter a state where it just outputs "junk" from then on and forever (i.e. doesn't recover).
How to reproduce:
% /ffmpeg -i 7mate.small.ts -y out.wav
ffmpeg version N-78986-ga62d768 Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 7.0.2 (clang-700.1.81)
configuration: --enable-libx264 --enable-gpl
libavutil 55. 19.100 / 55. 19.100
libavcodec 57. 28.100 / 57. 28.100
libavformat 57. 28.100 / 57. 28.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 39.102 / 6. 39.102
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, mpegts, from '7mate.small.ts':
Duration: 00:00:28.06, start: 1.400000, bitrate: 412 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, fltp, 384 kb/s
Output #0, wav, to 'out.wav':
Metadata:
ISFT : Lavf57.28.100
Stream #0:0(eng): Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s
Metadata:
encoder : Lavc57.28.100 pcm_s16le
Stream mapping:
Stream #0:0 -> #0:0 (ac3 (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[ac3 @ 0x7fdef1095400] exponent -1 is out-of-range
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fdef1095400] delta bit allocation strategy reserved
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fdef1095400] exponent 25 is out-of-range
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fdef1095400] delta bit allocation strategy reserved
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fdef1095400] new coupling strategy must be present in block 0
[ac3 @ 0x7fdef1095400] error decoding the audio block
Input stream #0:0 frame changed from rate:48000 fmt:fltp ch:2 chl:stereo to rate:44100 fmt:fltp ch:2 chl:stereo
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
Input stream #0:0 frame changed from rate:44100 fmt:fltp ch:2 chl:stereo to rate:48000 fmt:fltp ch:2 chl:stereo
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fdef1095400] exponent 26 is out-of-range
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fdef1095400] invalid coupling range (9 >= 5)
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fdef1095400] exponent -1 is out-of-range
[ac3 @ 0x7fdef1095400] error decoding the audio block
Input stream #0:0 frame changed from rate:48000 fmt:fltp ch:2 chl:stereo to rate:32000 fmt:fltp ch:4 chl:quad(side)
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fdef1095400] new coupling strategy must be present in block 0
[ac3 @ 0x7fdef1095400] error decoding the audio block
Input stream #0:0 frame changed from rate:32000 fmt:fltp ch:4 chl:quad(side) to rate:48000 fmt:fltp ch:2 chl:stereo
[ac3 @ 0x7fdef1095400] new coupling strategy must be present in block 0
[ac3 @ 0x7fdef1095400] error decoding the audio block
...
[ac3 @ 0x7fdef1095400] new coupling strategy must be present in block 0
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fdef1095400] new coupling strategy must be present in block 0
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] new coupling strategy must be present in block 0
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] new coupling strategy must be present in block 0
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fdef1095400] new coupling strategy must be present in block 0
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] new coupling strategy must be present in block 0
...
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] new coupling strategy must be present in block 0
[ac3 @ 0x7fdef1095400] error decoding the audio block
[ac3 @ 0x7fdef1095400] incomplete frame
size= 4823kB time=00:00:28.09 bitrate=1406.2kbits/s speed= 409x
full output (which has many repeated lines) here: https://gist.github.com/rdp/85f7273c59bb692f10d1
You'll notice the audio "conks out" after about 10s.
However, if you skip past 10s, it successfully decodes the audio after that point.
./ffmpeg -ss 10 -i 7mate.small.ts 7mate.after.wav
ffmpeg version N-78986-ga62d768 Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 7.0.2 (clang-700.1.81)
configuration: --enable-libx264 --enable-gpl
libavutil 55. 19.100 / 55. 19.100
libavcodec 57. 28.100 / 57. 28.100
libavformat 57. 28.100 / 57. 28.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 39.102 / 6. 39.102
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, mpegts, from '7mate.small.ts':
Duration: 00:00:28.06, start: 1.400000, bitrate: 412 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, fltp, 384 kb/s
Output #0, wav, to '7mate.after.wav':
Metadata:
ISFT : Lavf57.28.100
Stream #0:0(eng): Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s
Metadata:
encoder : Lavc57.28.100 pcm_s16le
Stream mapping:
Stream #0:0 -> #0:0 (ac3 (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[ac3 @ 0x7fcc12888600] exponent -1 is out-of-range
[ac3 @ 0x7fcc12888600] error decoding the audio block
[ac3 @ 0x7fcc12888600] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fcc12888600] exponent -1 is out-of-range
[ac3 @ 0x7fcc12888600] error decoding the audio block
[ac3 @ 0x7fcc12888600] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fcc12888600] exponent -1 is out-of-range
[ac3 @ 0x7fcc12888600] error decoding the audio block
[ac3 @ 0x7fcc12888600] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fcc12888600] exponent 25 is out-of-range
[ac3 @ 0x7fcc12888600] error decoding the audio block
[ac3 @ 0x7fcc12888600] frame sync error
Error while decoding stream #0:0: Invalid data found when processing input
[ac3 @ 0x7fcc12888600] incomplete frame
size= 3237kB time=00:00:18.09 bitrate=1465.4kbits/s speed= 609x
video:0kB audio:3237kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.002353%
It seems something at around 10s is somehow poison pilling the rest of the output and from then on it no longer recovers or decodes anything, even though there is some valid ac3 data there.
Attachments (1)
Change History (7)
by , 11 years ago
| Attachment: | 7mate.small.ts added |
|---|
comment:1 by , 11 years ago
(as a note, VLC seems able to decode/play the clip OK...not sure what decoder they're using...)
comment:2 by , 11 years ago
| Component: | undetermined → avcodec |
|---|---|
| Keywords: | ac3 regression added |
| Priority: | normal → important |
| Reproduced by developer: | set |
| Status: | new → open |
| Version: | unspecified → git-master |
See also ticket #5225.
Regression since 252f5663 / 97de206b
Workaround is to specify --disable-decoder=eac3 or -err_detect crccheck
comment:4 by , 11 years ago
| Cc: | added |
|---|
comment:5 by , 10 years ago
| Resolution: | → fixed |
|---|---|
| Status: | open → closed |



contains the offending ac3 blip