Opened 5 months ago

Last modified 5 months ago

#10696 new defect

44.1 16-bit monkey's audio .ape file decodes with blasts of noise

Reported by: therentabrain Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords: monkey's audio .ape
Cc: therentabrain Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description (last modified by therentabrain)

Summary of the bug:
Occasional .ape files created by Monkey's Audio 3.88 in Extra High mode are mangled when read by ffmpeg, as containing sections of white noise and/or silence. Out of about 60 files in my tests, it happened 3 times.

Files created by Monkey's Audio 3.99 did not seem to have this problem in my experience. Still, the problem files test with no errors and can be successfully played in Winamp or decompressed by either version of MA without a problem. Only ffmpeg fails and only under this specific situation.

How to reproduce:

I:\>ffmpeg -i themagicwannago.ape themagicwannago.wav
ffmpeg version Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --pkg-config=pkgconf --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      58. 32.100 / 58. 32.100
  libavcodec     60. 34.100 / 60. 34.100
  libavformat    60. 17.100 / 60. 17.100
  libavdevice    60.  4.100 / 60.  4.100
  libavfilter     9. 13.100 /  9. 13.100
  libswscale      7.  6.100 /  7.  6.100
  libswresample   4. 13.100 /  4. 13.100
  libpostproc    57.  4.100 / 57.  4.100
Input #0, ape, from 'themagicwannago.ape':
  Duration: 00:00:01.87, start: 0.000000, bitrate: 370 kb/s
  Stream #0:0: Audio: ape (APE  / 0x20455041), 44100 Hz, stereo, s16p
Stream mapping:
  Stream #0:0 -> #0:0 (ape (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to 'themagicwannago.wav':
    ISFT            : Lavf60.17.100
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
      encoder         : Lavc60.34.100 pcm_s16le
[out#0/wav @ 0000017fc96c8880] video:0kB audio:322kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.023639%
size=     322kB time=00:00:01.67 bitrate=1579.3kbits/s speed= 101x

File info from Monkey's Audio 3.88:

Format Info
Version: 3.8
Mode: Extra High
Format Flags: 6
Tag: None
Audio Info
Sample Rate: 44100
Channels: 2
Bits Per Sample: 16
Peak Level: 22186
Length / Size Info
Length: 0:01
File Size: 0.00 MB
Compression: 26.22%

Monkey's Audio 3.99 reports no errors with it either, and both versions of MA have no problems decoding it correctly. Then, the resulting WAV can then be turned into FLAC etc by ffmpeg just fine.

I did notice that using MediaInfo (0.7.80), the number of tracks is hugely incorrect on these files. The attached test file here shows as 2,500 tracks in MediaInfo, when it should say two. In my limited experience, MediaInfo is capable of seeing the correct number of tracks in my other ape files. That said, most of these v2.88 Extra High ape files that show a huge number of tracks in MediaInfo still converted perfectly back to 2ch WAV using ffmpeg.

I want to add, even if this was a bug in a 20 year old version of Monkey's Audio that has been fixed in newer versions, the risk here is using ffmpeg to convert precious old .ape files (in my case to .flacs), not receiving any errors at all, deleting the old files, and discovering at some point in the future that many of your dearly valued old archives are gone.


Attachments (2)

themagicwannago.ape (84.5 KB ) - added by therentabrain 5 months ago.
ape file made with v2.88, tests as valid and plays fine, chokes in ffmpeg
themagicwannago.wav (322.3 KB ) - added by therentabrain 5 months ago.
Output of ffmpeg, just noise

Download all attachments as: .zip

Change History (3)

by therentabrain, 5 months ago

Attachment: themagicwannago.ape added

ape file made with v2.88, tests as valid and plays fine, chokes in ffmpeg

by therentabrain, 5 months ago

Attachment: themagicwannago.wav added

Output of ffmpeg, just noise

comment:1 by therentabrain, 5 months ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.