Opened 2 years ago
Last modified 2 years ago
#9764 new defect
MP3 decoding errors on ARMv4 hardware
Reported by: | David Fletcher | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avcodec |
Version: | git-master | Keywords: | mp3 arm |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary of the bug: There is distortion, especially for low bitrate stations, using the FFmpeg fixed point mp3 decoder on older (ARMv4) processors. This does not occur using the same configuration in x86 or more modern/capable ARM processors.
The problem can be worked around using the libmad MP3 decoder which works perfectly on the ARMv4 processor (see patch http://ffmpeg.org/pipermail/ffmpeg-devel/2022-May/295941.html. But this just works around the issue rather than fixing it. I spent a lot of time looking at the fixed point math routines, especially libavcodec/arm/mpegaudiodsp_fixed_armv6.S. This is the main place there's ARM6 specific code - I wrote a new version of this for AMRv4 but it didn't fix the issue.
How to reproduce:
I've made a demonstration of transcoding an MP3 radio stream and saving it to file. It is saved in the AU format (this is useful in my application, changing the output format does not solve the issue). Relevant files are in "mp3_decode_ARMv4_errors.tar.gz" uploaded to upload.ffmpeg.org.
transcode_v4_ffmpeg.c - program to do the transcoding (Instructions to compile are at the top of this file. It makes use of static libraries for form a static binary. In the case of the ARMv4 hardware this is required as part of reducing binary size to get it onto the filesystem of the embedded board which has only 32MB storage, and 32MB RAM. I followed the same static route for the ARMv7 case - use of static libraries is not the issue).
output_armv4t.au - output from the ARMv4 system - listenable, but poor quality
output_arm7.au - output from the ARMv7 system - very good quality sound
Below is debug output generated from both systems, and also the configuration used to compile the libraries. This differs between the systems as for ARM4 it's a cross-compilation on another machine, whereas for ARM7 the compiler exists on the same machine that the binary will run on.
Arm 7 implimentation:
./transcode_v4_ffmpeg
[NULL @ 0xdcd260] Opening 'http://stream.live.vc.bbcmedia.co.uk/bbc_world_service' for reading
[http @ 0xdcd5c0] Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy,data'
[tcp @ 0xdd0130] Original list of addresses:
[tcp @ 0xdd0130] Address 132.185.209.55 port 80
[tcp @ 0xdd0130] Address 132.185.210.58 port 80
[tcp @ 0xdd0130] Address 132.185.209.58 port 80
[tcp @ 0xdd0130] Address 132.185.210.72 port 80
[tcp @ 0xdd0130] Interleaved list of addresses:
[tcp @ 0xdd0130] Address 132.185.209.55 port 80
[tcp @ 0xdd0130] Address 132.185.210.58 port 80
[tcp @ 0xdd0130] Address 132.185.209.58 port 80
[tcp @ 0xdd0130] Address 132.185.210.72 port 80
[tcp @ 0xdd0130] Starting connection attempt to 132.185.209.55 port 80
[tcp @ 0xdd0130] Successfully connected to 132.185.209.55 port 80
[http @ 0xdcd5c0] request: GET /bbc_world_service HTTP/1.1
User-Agent: Lavf/LIBAVFORMAT_VERSION
Accept: */*
Range: bytes=0-
Connection: close
Host: stream.live.vc.bbcmedia.co.uk
Icy-MetaData: 1
[http @ 0xdcd5c0] Metadata update for StreamTitle: BBC World Service Online
[mp3 @ 0xdcd260] Format mp3 probed with size=65536 and score=50
[mp3 @ 0xdcd260] Skipping 28 bytes of junk at 0.
[mp3 @ 0xdcd260] Before avformat_find_stream_info() pos: 28 bytes read:65679 seeks:0 nb_streams:1
[mp3 @ 0xdcd260] All info found
[mp3 @ 0xdcd260] After avformat_find_stream_info() pos: 9244 bytes read:65679 seeks:0 frames:50
Input #0, mp3, from 'http://stream.live.vc.bbcmedia.co.uk/bbc_world_service':
Metadata:
icy-br : 56
icy-pub : 0
icy-name : BBC Radio
icy-description : BBC Radio
StreamTitle : BBC World Service Online
Duration: N/A, start: 0.000000, bitrate: 56 kb/s
Stream #0:0, 50, 1/14112000: Audio: mp3, 24000 Hz, stereo, s16p, 56 kb/s
Frame rate 1: 24000
[file @ 0xde1000] Setting default whitelist 'file,crypto,data'
[SWR @ 0xdfe350] Using s16p internally between filters
Incoming bit rate: 14492400Frame rate: 24000
(I noted that the incoming bit rate is shown incorrectly, while shown ok on the ARMv4 version. Probably something about 32bit of 64bit and the printf formatting)
Arm 4 implementation:
./transcode_v4_ffmpeg
[NULL @ 0x187120] Opening 'http://stream.live.vc.bbcmedia.co.uk/bbc_world_service' for reading
[http @ 0x187470] Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy,data'
[tcp @ 0x189f50] Original list of addresses:
[tcp @ 0x189f50] Address 132.185.209.59 port 80
[tcp @ 0x189f50] Address 132.185.210.58 port 80
[tcp @ 0x189f50] Address 132.185.209.71 port 80
[tcp @ 0x189f50] Address 132.185.210.69 port 80
[tcp @ 0x189f50] Interleaved list of addresses:
[tcp @ 0x189f50] Address 132.185.209.59 port 80
[tcp @ 0x189f50] Address 132.185.210.58 port 80
[tcp @ 0x189f50] Address 132.185.209.71 port 80
[tcp @ 0x189f50] Address 132.185.210.69 port 80
[tcp @ 0x189f50] Starting connection attempt to 132.185.209.59 port 80
[tcp @ 0x189f50] Successfully connected to 132.185.209.59 port 80
[http @ 0x187470] request: GET /bbc_world_service HTTP/1.1
User-Agent: Lavf/LIBAVFORMAT_VERSION
Accept: */*
Range: bytes=0-
Connection: close
Host: stream.live.vc.bbcmedia.co.uk
Icy-MetaData: 1
[http @ 0x187470] Metadata update for StreamTitle: BBC World Service Online
[mp3 @ 0x187120] Format mp3 probed with size=65536 and score=50
[mp3 @ 0x187120] Skipping 85 bytes of junk at 0.
[mp3 @ 0x187120] Before avformat_find_stream_info() pos: 85 bytes read:65679 seeks:0 nb_streams:1
[mp3 @ 0x187120] All info found
[mp3 @ 0x187120] After avformat_find_stream_info() pos: 9301 bytes read:65679 seeks:0 frames:50
Input #0, mp3, from 'http://stream.live.vc.bbcmedia.co.uk/bbc_world_service':
Metadata:
icy-br : 56
icy-pub : 0
icy-name : BBC Radio
icy-description : BBC Radio
StreamTitle : BBC World Service Online
Duration: N/A, start: 0.000000, bitrate: 56 kb/s
Stream #0:0, 50, 1/14112000: Audio: mp3, 24000 Hz, stereo, s16p, 56 kb/s
Frame rate 1: 24000
[file @ 0x194020] Setting default whitelist 'file,crypto,data'
[SWR @ 0x1ac220] Using s16p internally between filters
Incoming bit rate: 56000Frame rate: 24000
Configuration of FFmpeg libraries
FFmpeg version: ffmpeg-master-b67572c (current on 2nd May 2022)
ARMv7 (native compilation on Raspberry Pi)
./configure --disable-everything --disable-avdevice --disable-swscale --disable-postproc --disable-avfilter --disable-encoders --enable-encoder='pcm_s16be,pcm_mulaw' --disable-filters --enable-shared --disable-muxers --enable-muxer=au --disable-bsfs --enable-bsf=remove_extradata --disable-decoders --enable-decoder=mp3 --disable-doc --disable-protocols --enable-protocol='http,file' --disable-demuxers --enable-demuxer='mp3,mpegts' --disable-parsers --disable-libxcb --disable-bzlib --disable-iconv --disable-lzma --disable-xlib --disable-zlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-libv4l2 --extra-cflags='-ffast-math' --disable-iconv --disable-linux-perf --disable-debug --enable-small --disable-vfp --disable-neon --enable-asm --enable-gpl --enable-nonfree
Environment:
gcc version 10.2.1 20210110 (Raspbian 10.2.1-6+rpi1)
Linux version 5.15.32-v7+
Processor: RP3A0 - ARMv7 Processor rev 4 (v7l)
ARMv4T (cross-compilation on Slackware linux)
./configure --disable-everything --disable-avdevice --disable-swscale --disable-postproc --disable-avfilter --disable-encoders --enable-encoder='pcm_s16be,pcm_mulaw' --disable-filters --enable-shared --disable-muxers --enable-muxer=au --disable-bsfs --enable-bsf=remove_extradata --disable-decoders --enable-decoder=mp3 --disable-doc --disable-protocols --enable-protocol='http,file' --disable-demuxers --enable-demuxer='mp3,mpegts' --disable-parsers --disable-libxcb --disable-bzlib --disable-iconv --disable-lzma --disable-xlib --disable-zlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-libv4l2 --extra-cflags='-ffast-math -I/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/include/ -I/tmp/reciva/root/include/ -I/tmp/reciva/root/usr/include/' --enable-cross-compile --cross-prefix=/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu- --arch=armv4t --target-os=linux --prefix=/tmp/reciva/root --disable-iconv --tempprefix=/home/dif/tmp/ --pkg-config=/usr/bin/pkg-config --disable-linux-perf --disable-debug --enable-small --disable-vfp --disable-neon --enable-asm --enable-gpl --enable-nonfree
Environment
gcc version 4.1.0
Compilation machine: Linux version 2.4.22
Target machine running code: Linux version 2.4.26-vrs1-bast2
Processor: Arm920Tid(wb) rev 0 (v4l)
Quite likely the ARMv4 version is using some code in FFmpeg that is very little used. ARMv4 has no floating point CPU, whereas ARM7 does - not both were configured to use the fixed point mp3 decoder (from reading the code this is a default unless you specifically ask for the floating point version).
The cross-compilation environment is ancient (a consequence of the target system, the Reciva Radio platform being ~16-17 years old). But compilation runs without errors other than lines 123 of libavutil/error.c which throw an error about "wrong type of argument to unary minus" - this can be resolved by commenting out the offending line and making the function return -1. This has no effect on the primary mp3 decoding issue. Multiple other libraries compiled using the same cross-compilation system and also making machine code optimisations are working fine (wolfSSL, libmad, fdk-aac-free(libfdk-aac).
There could be a compiler issue, but I think it's more likely something about the fixed point math routines used in FFmpeg. Working with version 5.0.1 I got this issue, but all tests were repeated using git-master.
Attachments (6)
Change History (15)
comment:2 by , 2 years ago
Keywords: | mp3 arm added |
---|
Please attach a short input sample file and provide the command line that you tested together with the complete, uncut console output to make this a valid ticket.
comment:3 by , 2 years ago
Example of the console output running on the ARMv4 machine (in this case using the transcode_v4_ffmpeg.c file already attached compiled against the latest source, snapshot N-107787-gc469c3c3b1). The transcode_v4_ffmpeg.c file was updated to read the source file (s-32-44100.mp3) which is attached to this ticket rather than the internet radio stream originally read. This is selected as characteristic of a low bitrate internet stream which is where the problem on arm4 hardware comes to light.
./transcode_arm4 [NULL @ 0x191d30] Opening 'http://www.megapico.co.uk/sharpfin/s-32-44100.mp3' for reading [http @ 0x192060] Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy,data' [tcp @ 0x194b20] Original list of addresses: [tcp @ 0x194b20] Address 80.229.167.224 port 80 [tcp @ 0x194b20] Interleaved list of addresses: [tcp @ 0x194b20] Address 80.229.167.224 port 80 [tcp @ 0x194b20] Starting connection attempt to 80.229.167.224 port 80 [tcp @ 0x194b20] Successfully connected to 80.229.167.224 port 80 [http @ 0x192060] request: GET /sharpfin/s-32-44100.mp3 HTTP/1.1 User-Agent: Lavf/59.30.100 Accept: */* Range: bytes=0- Connection: close Host: www.megapico.co.uk Icy-MetaData: 1 [mp3 @ 0x191d30] Format mp3 probed with size=131072 and score=51 id3v2 ver:3 flags:00 len:65526 [mp3 @ 0x191d30] Skipping 0 bytes of junk at 65536. [mp3 @ 0x191d30] Before avformat_find_stream_info() pos: 65536 bytes read:131445 seeks:0 nb_streams:1 [mp3 @ 0x191d30] All info found [mp3 @ 0x191d30] Estimating duration from bitrate, this may be inaccurate [mp3 @ 0x191d30] After avformat_find_stream_info() pos: 71680 bytes read:131445 seeks:0 frames:50 Input #0, mp3, from 'http://www.megapico.co.uk/sharpfin/s-32-44100.mp3': Metadata: title : 190130 album : Podnews artist : James Cridland album_artist : James Cridland comment : Visit https://podnews.net to get our daily newsletter, free track : 190130 RAD : {"remoteAudioData":{"episodeID":"generic","trackingUrls":["https://podnews.net/rad"],"events":[{"eventTime":"00:00:00.000","label":"RAD0"}, {"eventTime":"00:00:56.570","label":"RAD50"}],"podcastID":"podnews"}} genre : Podcast copyright : Amazingly Brilliant Pty Ltd encoded_by : Hindenburg Journalist Pro 1.82.2312 date : 2019 Duration: 00:00:56.72, start: 0.000000, bitrate: 41 kb/s Stream #0:0, 50, 1/14112000: Audio: mp3, 44100 Hz, stereo, s16p, 32 kb/s Frame rate 1: 44100 Too much data!! [file @ 0x198540] Setting default whitelist 'file,crypto,data' [SWR @ 0x1ae790] Using s16p internally between filters Incoming bit rate: 32000Frame rate: 44100 [AVIOContext @ 0x198590] Statistics: 9215276 bytes written, 2 seeks, 37 writeouts [AVIOContext @ 0x19d820] Statistics: 292407 bytes read, 0 seeks
The output on ARMv4 is distorted relative to the original. The same code running on X86-64 (intel i5) produces output that is not distorted.
by , 2 years ago
Attachment: | s-32-44100_arm4 (truncated).au added |
---|
Output from ARMv4 machine - distorted
by , 2 years ago
Attachment: | s-32-44100_x86 (truncated).au added |
---|
Output from X86-64 machine - not distorted
by , 2 years ago
Attachment: | transcode_v4_ffmpeg_1.c added |
---|
Transcode (based in example in source tree), modified from previously uploated to fetch the example MP3 insrtead of an internet radio stream
comment:6 by , 2 years ago
ffmpeg (the application) is not built in the configuration used here - it's the libraries that are being used: libavformat.a libavcodec.a libswresample.a libavutil.a
The configuration of the source code aims to minimise the size of the libraries due to total available storage on the ARMv4 device being 32MB. Using --disable-avfilter seems to prevent ffmpeg from building but all the required libraries are still built.
If you do build ffmpeg (--enable-avfilter) it ends up with at least a minimum number of filters included. It refuses to run without them so it's not reproducing the situation from the transcode_aac example file (which is adapted here to test the libraries).
I will try the ffmpeg application and report back, but it's not really reproducing the same situation as using the libraries direct.
comment:7 by , 2 years ago
I attached additional USB storage to enable me to run ffmpeg (the application) and do the conversion of mp3. The output remains very distorted even using the main application instead of the transcode program and libraries.
I'll attach the file truncated for the 2.5MB upload limit (s-32-44100_with_ffmpeg (truncated).au) and output listing from the conversion is below.
Thanks for looking at this - there's definitely something wrong not just my transcode app. Using ffmpeg with libmad as an mp3 decoder removes this problem completely.
./ffmpeg -i s-32-44100.mp3 s-32-44100_with_ffmpeg.au ffmpeg version N-107787-gc469c3c3b1 Copyright (c) 2000-2022 the FFmpeg developers built with gcc 4.1.0 (GCC) configuration: --disable-doc --disable-libxcb --disable-bzlib --disable-iconv --disable-lzma --disable-xlib --disable-zlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-libv4l2 --extra-cflags='-ffast-math \ -I/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/include/ \ -I/tmp/reciva/root/include/ -I/tmp/reciva/root/usr/include/' --enable-cross-compile --cross-prefix=/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu- --arch=armv4t --target-os=linux --prefix=/tmp/reciva/root --disable-iconv --tempprefix=/home/dif/tmp/ --pkg-config=/usr/bin/pkg-config --disable-linux-perf --disable-debug --enable-small --disable-vfp --disable-neon --enable-asm --enable-gpl --enable-nonfree --disable-vfp libavutil 57. 33.101 / 57. 33.101 libavcodec 59. 42.101 / 59. 42.101 libavformat 59. 30.100 / 59. 30.100 libavdevice 59. 8.101 / 59. 8.101 libavfilter 8. 46.103 / 8. 46.103 libswscale 6. 8.102 / 6. 8.102 libswresample 4. 8.100 / 4. 8.100 libpostproc 56. 7.100 / 56. 7.100 [mp3 @ 0x13e78d0] Estimating duration from bitrate, this may be inaccurate Input #0, mp3, from 's-32-44100.mp3': Metadata: title : 190130 album : Podnews artist : James Cridland album_artist : James Cridland comment : Visit https://podnews.net to get our daily newsletter, free track : 190130 RAD : {"remoteAudioData":{"episodeID":"generic","trackingUrls":["https://podnews.net/rad"],"events":[{"eventTime":"00:00:00.000","label":"RAD0"}, {"eventTime":"00:00:56.570","label":"RAD50"}],"podcastID":"podnews"}} genre : Podcast copyright : Amazingly Brilliant Pty Ltd encoded_by : Hindenburg Journalist Pro 1.82.2312 date : 2019 Duration: 00:00:56.72, start: 0.000000, bitrate: 41 kb/s Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 32 kb/s Stream mapping: Stream #0:0 -> #0:0 (mp3 (mp3float) -> pcm_s16be (native)) Press [q] to stop, [?] for help Output #0, au, to 's-32-44100_with_ffmpeg.au': Metadata: title : 190130 album : Podnews artist : James Cridland album_artist : James Cridland comment : Visit https://podnews.net to get our daily newsletter, free track : 190130 RAD : {"remoteAudioData":{"episodeID":"generic","trackingUrls":["https://podnews.net/rad"],"events":[{"eventTime":"00:00:00.000","label":"RAD0"}, {"eventTime":"00:00:56.570","label":"RAD50"}],"podcastID":"podnews"}} genre : Podcast copyright : Amazingly Brilliant Pty Ltd encoded_by : Hindenburg Journalist Pro 1.82.2312 date : 2019 encoder : Lavf59.30.100 Stream #0:0: Audio: pcm_s16be ([3][0][0][0] / 0x0003), 44100 Hz, stereo, s16, 1411 kb/s Metadata: encoder : Lavc59.42.101 pcm_s16be size= 9765kB time=00:00:56.65 bitrate=1411.9kbits/s speed=0.147x video:0kB audio:9765kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.001040%
by , 2 years ago
Attachment: | s-32-44100_with_ffmpeg (truncated).au added |
---|
File converted using the ffmpeg application - still distorted
comment:9 by , 2 years ago
Here's the latest output without -ffast-math and with --disable-optimizations. Unfortunately there's no change, the output on ARMv4 is still distorted. I'll upload as s-32-44100_no-fast-math.au.
# ./ffmpeg -i s-32-44100.mp3 s-32-44100_no-fast-math.au ffmpeg version N-107787-gc469c3c3b1 Copyright (c) 2000-2022 the FFmpeg developers built with gcc 4.1.0 (GCC) configuration: --disable-doc --disable-libxcb --disable-bzlib --disable-iconv --disable-lzma --disable-xlib --disable-zlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-libv4l2 --extra-cflags=' -I/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/include/ -I/tmp/reciva/root/include/ -I/tmp/reciva/root/usr/include/' --enable-cross-compile --cross-prefix=/opt/crosstool/gcc-4.1.0-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu- --arch=armv4t --target-os=linux --prefix=/tmp/reciva/root --disable-iconv --tempprefix=/home/dif/tmp/ --pkg-config=/usr/bin/pkg-config --disable-linux-perf --disable-debug --enable-small --disable-vfp --disable-neon --enable-asm --enable-gpl --enable-nonfree --disable-vfp --disable-optimizations libavutil 57. 33.101 / 57. 33.101 libavcodec 59. 42.101 / 59. 42.101 libavformat 59. 30.100 / 59. 30.100 libavdevice 59. 8.101 / 59. 8.101 libavfilter 8. 46.103 / 8. 46.103 libswscale 6. 8.102 / 6. 8.102 libswresample 4. 8.100 / 4. 8.100 libpostproc 56. 7.100 / 56. 7.100 [mp3 @ 0x13e9e30] Estimating duration from bitrate, this may be inaccurate Input #0, mp3, from 's-32-44100.mp3': Metadata: title : 190130 album : Podnews artist : James Cridland album_artist : James Cridland comment : Visit https://podnews.net to get our daily newsletter, free track : 190130 RAD : {"remoteAudioData":{"episodeID":"generic","trackingUrls":["https://podnews.net/rad"],"events":[{"eventTime":"00:00:00.000","label":"RAD0"}, {"eventTime":"00:00:56.570","label":"RAD50"}],"podcastID":"podnews"}} genre : Podcast copyright : Amazingly Brilliant Pty Ltd encoded_by : Hindenburg Journalist Pro 1.82.2312 date : 2019 Duration: 00:00:56.72, start: 0.000000, bitrate: 41 kb/s Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 32 kb/s Stream mapping: Stream #0:0 -> #0:0 (mp3 (mp3float) -> pcm_s16be (native)) Press [q] to stop, [?] for help Output #0, au, to 's-32-44100_no-fast-math.au': Metadata: title : 190130 album : Podnews artist : James Cridland album_artist : James Cridland comment : Visit https://podnews.net to get our daily newsletter, free track : 190130 RAD : {"remoteAudioData":{"episodeID":"generic","trackingUrls":["https://podnews.net/rad"],"events":[{"eventTime":"00:00:00.000","label":"RAD0"}, {"eventTime":"00:00:56.570","label":"RAD50"}],"podcastID":"podnews"}} genre : Podcast copyright : Amazingly Brilliant Pty Ltd encoded_by : Hindenburg Journalist Pro 1.82.2312 date : 2019 encoder : Lavf59.30.100 Stream #0:0: Audio: pcm_s16be ([3][0][0][0] / 0x0003), 44100 Hz, stereo, s16, 1411 kb/s Metadata: encoder : Lavc59.42.101 pcm_s16be size= 9765kB time=00:00:56.65 bitrate=1411.9kbits/s speed=0.14x video:0kB audio:9765kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.001040%
by , 2 years ago
Attachment: | s-32-44100_no-fast-math (truncated).au added |
---|
Output from ARMv4 machine without fast-math and with optimisations disabled
I can't get into the FTP upload site. The files mentioned in the ticket can be downloaded here instead:
http://www.megapico.co.uk/sharpfin/mp3_decode_ARMv4_errors_9764.tar.gz
(7.1MB, note this is a slow connection)