[FFmpeg-trac] #8428(undetermined:new): ffmpeg has problems with some AC-3/EAC-3 files with "syncword" 0x770b
FFmpeg
trac at avcodec.org
Fri Dec 13 01:21:34 EET 2019
#8428: ffmpeg has problems with some AC-3/EAC-3 files with "syncword" 0x770b
-------------------------------------+-------------------------------------
Reporter: zhidd | Type: defect
Status: new | Priority: normal
Component: | Version:
undetermined | unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
ffmpeg only seem to distinguish AC-3(.ac3)/EAC-3(.ec3) files by a 0x0b77
syncword. so when i pass on an .ac3 file with 0x770b syncword to ffmpeg,
it shows me the wrong .ac3 info. but when it comes to decoding said file
into a lossless little-endian 16-bit PCM file with a RIFF header it only
seems to have an entirely different header info from what's shown in mind.
yet for whatever reason ffmpeg just stops decoding the whole thing after
just two seconds.
How to reproduce:
{{{
H:\ffmpeg\bin>ffmpeg.exe -i
H:\ffmpeg\bin\[some_ps2_game][ac3_file_demuxed_from_dat+sz_file]movie_01.ac3
H:\ffmpeg\bin\[some_ps2_game][ac3_file_demuxed_from_dat+sz_file]movie_01.wav
ffmpeg version git-2019-12-11-13f2b6d Copyright (c) 2000-2019 the FFmpeg
developers
built with gcc 9.2.1 (GCC) 20191125
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-
fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-
libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr
--enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack
--enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2
--enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-
libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa
--enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx
--enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc
--enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
--enable-amf
libavutil 56. 36.101 / 56. 36.101
libavcodec 58. 64.101 / 58. 64.101
libavformat 58. 35.101 / 58. 35.101
libavdevice 58. 9.101 / 58. 9.101
libavfilter 7. 68.100 / 7. 68.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
[ac3 @ 000001c92b258ec0] Estimating duration from bitrate, this may be
inaccurate
Input #0, ac3, from
'H:\ffmpeg\bin\[some_ps2_game][ac3_file_demuxed_from_dat+sz_file]movie_01.ac3':
Duration: 00:02:51.78, start: 0.000000, bitrate: 112 kb/s
Stream #0:0: Audio: eac3, 44100 Hz, 2.1, fltp, 112 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (eac3 (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[eac3 @ 000001c92b266980] Multiple frames in a packet.
[eac3 @ 000001c92b266980] incomplete frame
H:\ffmpeg\bin\[some_ps2_game][ac3_file_demuxed_from_dat+sz_file]movie_01.ac3:
corrupt decoded frame in stream 0
Output #0, wav, to
'H:\ffmpeg\bin\[some_ps2_game][ac3_file_demuxed_from_dat+sz_file]movie_01.wav':
Metadata:
ISFT : Lavf58.35.101
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz,
5.1(side), s16, 4608 kb/s
Metadata:
encoder : Lavc58.64.101 pcm_s16le
[eac3 @ 000001c92b266980] new coupling strategy must be present in block 0
[eac3 @ 000001c92b266980] error decoding the audio block
Error while decoding stream #0:0: Error number -16976906 occurred
[eac3 @ 000001c92b266980] new snr offsets must be present in block 0
[eac3 @ 000001c92b266980] error decoding the audio block
Error while decoding stream #0:0: Error number -16976906 occurred
[eac3 @ 000001c92b266980] new coupling strategy must be present in block 0
[eac3 @ 000001c92b266980] error decoding the audio block
Error while decoding stream #0:0: Error number -16976906 occurred
[eac3 @ 000001c92b266980] new coupling strategy must be present in block 0
[eac3 @ 000001c92b266980] error decoding the audio block
Error while decoding stream #0:0: Error number -16976906 occurred
[eac3 @ 000001c92b266980] invalid coupling range (12 >= 11)
[eac3 @ 000001c92b266980] error decoding the audio block
Error while decoding stream #0:0: Error number -16976906 occurred
[eac3 @ 000001c92b266980] expacc 125 is out-of-range
[eac3 @ 000001c92b266980] error decoding the audio block
Error while decoding stream #0:0: Error number -16976906 occurred
[eac3 @ 000001c92b266980] exponent -2 is out-of-range
[eac3 @ 000001c92b266980] error decoding the audio block
Error while decoding stream #0:0: Error number -16976906 occurred
size= 1296kB time=00:00:02.30 bitrate=4608.4kbits/s speed=12.1x
video:0kB audio:1296kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.007686%
}}}
Anyway, the .7z file (which contains the .ac3 sample file) was made using
'''''7-Zip ZS''''', an off-shoot of 7-Zip which apparently supports more
compression algorithms than what base 7-Zip currently has. The version I
used for this one is 19.00 v1.4.4 R1(Release 1).
this bug could be an endianness problem for all i care, but keep in mind
that i only have an .ac3 file with me as of this writing. anyway, here's
the file.
[https://www.sendspace.com/file/dzrgkm
[some_ps2_game][ac3_file_demuxed_from_dat+sz_file]movie_01.7z]
i got the file using my own quickBMS script that demuxes some dat+sz movie
format i managed to discover through some PS2 game, hence the filename.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8428>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list