[FFmpeg-trac] #1041(undetermined:new): Illegal instruction when opening some files with (HE-)AAC streams
FFmpeg
trac at avcodec.org
Tue Mar 6 04:43:52 CET 2012
#1041: Illegal instruction when opening some files with (HE-)AAC streams
-------------------------------------+-------------------------------------
Reporter: qyot27 | Type: defect
Status: new | Priority: normal
Component: | Version: git-
undetermined | master
Keywords: aacdec | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Sometime between the 18th of February and the 25th of February, the AAC
decoder (at least, I think it's the AAC decoder doing this) started
breaking on certain files. I've observed it in native builds for both
Windows (built with MinGW) and Linux. It seems to fail with files that
contain AAC streams that MediaInfo detects as being HE-AAC, as my
purchases from iTunes (which report as standard LC-AAC) can open fine in
the same FFmpeg builds that have issues with the streams that report as
HE-AAC.
Since I also saw avconv crash with the same sample, I'm guessing this
issue arose with one of the merges that occurred during the timeframe
between the 18th and 25th. I tried to use git revert on specific AAC-
related commits from that date range, but that didn't resolve the error.
Furthermore, even this HE-AAC thing doesn't seem to occur on other
computers I have access to that are much newer and more powerful than
mine. For reference, my setup has a Celeron Coppermine and 512MBs of
PC133 SDRAM. Another computer that didn't exhibit this issue runs an
Athlon64 Orleans with 2GBs of DDR2 SDRAM (I think DDR2-800). The actual
FFmpeg binary used was the same on both computers.
The output of a working FFmpeg build:
{{{
./ffmpeg.exe -v 9 -loglevel 99 -i $HOME/sample-5.flv
ffmpeg version r37999 git-57182b9 Copyright (c) 2000-2012 the FFmpeg
developers
built on Feb 18 2012 21:44:50 with gcc 4.6.1
configuration: --prefix=/home/qyot27/win32_build --cross-
prefix=i686-w64-mingw32- --enable-gpl --enable-version3 --disable-
w32threads --enable-memalign-hack --disable-decoder=utvideo --enable-
libutvideo --enable-libxvid --disable-encoder=mpeg4 --enable-avisynth
--cpu=pentium3 --extra-cflags='-I/home/qyot27/win32_build/include
-march=pentium3 -mtune=pentium3 -DPTW32_STATIC_LIB' --extra-
ldflags=-L/home/qyot27/win32_build/lib --target-os=mingw32 --arch=x86
libavutil 51. 39.100 / 51. 39.100
libavcodec 54. 3.100 / 54. 3.100
libavformat 54. 1.100 / 54. 1.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 62.101 / 2. 62.101
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 6.100 / 0. 6.100
libpostproc 52. 0.100 / 52. 0.100
[flv @ 00142840] Format flv probed with size=2048 and score=100
[h264 @ 00148A00] no picture
[flv @ 00142840] All info found
rfps: 23.750000 0.011777
Last message repeated 1 times
rfps: 23.833333 0.004697
rfps: 23.916667 0.000836
rfps: 24.000000 0.000195
rfps: 24.083333 0.002773
rfps: 24.166667 0.008572
Last message repeated 1 times
rfps: 24.250000 0.017590
Last message repeated 1 times
rfps: 47.666667 0.018788
rfps: 47.750000 0.009456
rfps: 47.833333 0.003344
rfps: 47.916667 0.000452
rfps: 48.000000 0.000779
rfps: 48.083333 0.004327
rfps: 48.166667 0.011094
rfps: 23.976024 0.000049
Input #0, flv, from '/home/qyot27/sample-5.flv':
Metadata:
moovPosition : 272105568
avcprofile : 77
avclevel : 31
aacaot : 2
videoframerate : 24
audiochannels : 2
Duration: 00:21:22.80, start: 0.000000, bitrate: 32 kb/s
Stream #0:0, 41, 1/1000: Video: h264 (Main), yuv420p, 1280x720 [SAR
1:1 DAR 16:9], 1001/48000, 23.98 tbr, 1k tbn, 47.95 tbc
Stream #0:1, 36, 1/1000: Audio: aac, 44100 Hz, stereo, s16
At least one output file must be specified
}}}
The output of a non-working FFmpeg:
{{{
./ffmpeg -v 9 -loglevel 99 -i $HOME/sample-5.flv
ffmpeg version N-38556-g456d65a Copyright (c) 2000-2012 the FFmpeg
developers
built on Mar 5 2012 14:32:36 with gcc 4.6.1
configuration: --prefix=/home/qyot27/linuxffmpeg_build --enable-gpl
--enable-version3 --enable-libxvid --disable-encoder=mpeg4 --cpu=pentium3
--extra-cflags='-march=pentium3 -mtune=pentium3'
libavutil 51. 41.100 / 51. 41.100
libavcodec 54. 8.100 / 54. 8.100
libavformat 54. 2.100 / 54. 2.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 63.100 / 2. 63.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 7.100 / 0. 7.100
libpostproc 52. 0.100 / 52. 0.100
[flv @ 0x95eeac0] Format flv probed with size=2048 and score=100
[h264 @ 0x95f4da0] no picture
Illegal instruction
}}}
Only the audio (demuxed using the working build), still errors out with
newer builds:
{{{
./ffmpeg -v 9 -loglevel 99 -i $HOME/sample-5.aac
ffmpeg version N-38556-g456d65a Copyright (c) 2000-2012 the FFmpeg
developers
built on Mar 5 2012 14:32:36 with gcc 4.6.1
configuration: --prefix=/home/qyot27/linuxffmpeg_build --enable-gpl
--enable-version3 --enable-libxvid --disable-encoder=mpeg4 --cpu=pentium3
--extra-cflags='-march=pentium3 -mtune=pentium3'
libavutil 51. 41.100 / 51. 41.100
libavcodec 54. 8.100 / 54. 8.100
libavformat 54. 2.100 / 54. 2.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 63.100 / 2. 63.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 7.100 / 0. 7.100
libpostproc 52. 0.100 / 52. 0.100
[aac @ 0xa2f7ac0] Format aac probed with size=2048 and score=51
Illegal instruction
}}}
Remuxing instead to MKV or MP4 produces virtually the same result, with
'Illegal instruction' after the Format probing message (and the h264 no
picture message, if the video stream has been retained; otherwise it jumps
directly to 'Illegal instruction').
To show that it's not all AAC files, the output of a different file
(bought from iTunes):
{{{
./ffmpeg -v 9 -loglevel 99 -i /home/qyot27/Music/Songbird\ Music/Depeche\
Mode\ -\ Never\ Let\ Me\ Down\ Again\ \(Single\ Version\).m4a
ffmpeg version N-38556-g456d65a Copyright (c) 2000-2012 the FFmpeg
developers
built on Mar 5 2012 14:32:36 with gcc 4.6.1
configuration: --prefix=/home/qyot27/linuxffmpeg_build --enable-gpl
--enable-version3 --enable-libxvid --disable-encoder=mpeg4 --cpu=pentium3
--extra-cflags='-march=pentium3 -mtune=pentium3'
libavutil 51. 41.100 / 51. 41.100
libavcodec 54. 8.100 / 54. 8.100
libavformat 54. 2.100 / 54. 2.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 63.100 / 2. 63.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 7.100 / 0. 7.100
libpostproc 52. 0.100 / 52. 0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xaee3ac0] Format mov,mp4,m4a,3gp,3g2,mj2
probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xaee3ac0] ISO: File Type Major Brand: M4A
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xaee3ac0] All info found
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/qyot27/Music/Songbird
Music/Depeche Mode - Never Let Me Down Again (Single Version).m4a':
Metadata:
major_brand : M4A
minor_version : 0
compatible_brands: M4A mp42isom
creation_time : 1941-06-18 03:43:01
title : Never Let Me Down Again (Single Version)
artist : Depeche Mode
album_artist : Depeche Mode
album : Singles Box 4
genre : Rock
track : 1/8
disc : 2/6
date : 2004-12-07T08:00:00Z
gapless_playback: 0
copyright : ℗ 2004 Warner Bros. Records. Manufactured and
Marketed by Warner Strategic Marketing
media_type : 1
Duration: 00:04:22.03, start: 0.000000, bitrate: 278 kb/s
Stream #0:0(eng), 1, 1/44100: Audio: aac (mp4a / 0x6134706D), 44100
Hz, stereo, s16, 259 kb/s
Metadata:
creation_time : 1941-06-18 03:43:01
handler_name :
At least one output file must be specified
}}}
or one I'd encoded myself:
{{{
./ffmpeg -v 9 -loglevel 99 -i /home/qyot27/Music/Songbird\ Music/Third\
Eye\ Blind\ -\ Semi-Charmed\ Life.m4a
ffmpeg version N-38556-g456d65a Copyright (c) 2000-2012 the FFmpeg
developers
built on Mar 5 2012 14:32:36 with gcc 4.6.1
configuration: --prefix=/home/qyot27/linuxffmpeg_build --enable-gpl
--enable-version3 --enable-libxvid --disable-encoder=mpeg4 --cpu=pentium3
--extra-cflags='-march=pentium3 -mtune=pentium3'
libavutil 51. 41.100 / 51. 41.100
libavcodec 54. 8.100 / 54. 8.100
libavformat 54. 2.100 / 54. 2.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 63.100 / 2. 63.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 7.100 / 0. 7.100
libpostproc 52. 0.100 / 52. 0.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xaba5ac0] Format mov,mp4,m4a,3gp,3g2,mj2
probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xaba5ac0] ISO: File Type Major Brand: mp42
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xaba5ac0] All info found
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/qyot27/Music/Songbird
Music/Third Eye Blind - Semi-Charmed Life.m4a':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isom
creation_time : 2008-02-17 22:24:11
track : 5/21
genre : Soundtrack
album : ESPN Presents Jock Rock 2000
artist : Third Eye Blind
title : Semi-Charmed Life
date : 1999
Duration: 00:04:24.60, start: 0.000000, bitrate: 208 kb/s
Stream #0:0(eng), 1, 1/44100: Audio: aac (mp4a / 0x6134706D), 44100
Hz, stereo, s16, 207 kb/s
Metadata:
creation_time : 2008-02-17 22:24:11
handler_name :
Stream #0:1(eng), 0, 1/1000: Data: none (mp4s / 0x7334706D)
Metadata:
creation_time : 2008-02-17 22:24:43
handler_name :
Stream #0:2(eng), 0, 1/1000: Data: none (mp4s / 0x7334706D)
Metadata:
creation_time : 2008-02-17 22:24:43
handler_name :
At least one output file must be specified
}}}
I don't know if a sample would be helpful if this actually requires a
decade-old computer to reproduce the issue, but I've attached one anyway.
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/1041>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list