FLAC decoder testbench

From Hydrogenaudio Knowledgebase
Revision as of 11:21, 18 September 2021 by B-random (talk | contribs)

To further the use and development of FLAC, a testbench containing files with different parameters was constructed. The testbench consists of 46 files, each one having a different combination of characteristics (like samplerate, bitdepth and number of channels) and FLAC features (like blocksize, maximum partition order, maximum predictor order, maximum predictor precision etc.) However, all combinations fall within the so called subset: a limited set of FLAC parameters that fit in the frame header and are supposed to be 'streamable'. Please be aware that certain tested features (such as blocksize 16 or a samplerate of 38457Hz) are pretty much useless in day-to-day usage, and that failure to properly decode such a file is mostly of interest to developers than to users.

For more information on which file tests what characteristics and features, please refer to the readme.txt file that is included in the testbench. All files are licensed under a Creative Commons license, but please refer to the readme.txt file to see which file is licensed under which Creative Commons license and for 'attribution' as to who is the original author.

The testbench can be downloaded here

CDDA (44.1kHz/16-bit and less) High-res (96kHz/24-bit and more) Multichannel Metadata
Decoder Block­size Features Sample­rates Bit­depths Variable blocksize General Block­size Features Sample­rates Bit­depths Channel lay-outs Features Missing Extreme MIME Remarks
Files in test set 1-10 11-18 19-21 22-23 24-27 28 29-30 31-32, 34 33-36 37 38-43 44 45-47 48-55 56-59
Citroën DS5 Plays Plays Skips Fails Plays Skips Plays Hangs Plays Skips all high-res and multichannel files and all files with a non-standard samplerate. Extreme distortion on 12-bit file. Files with large seektable are skipped (after long delay) and file with combined extreme metadata causes player to hang, requiring removal of USB stick.
Chromecast Fails Plays Fails Plays Fails Plays Fails Fails Fails Plays Rejects Plays Reboots Rejects Heavy stutter with blocksize 16. Mangles non-standard samplerates. Doesn't start playing on old variable blocksize format, blocksizes 16384 and 13456, predictor order 32, 384kHz. Skips multichannel and image/avif. Crashes on file with 1000x repeating VORBISCOMMENT
Cowon iAudio 7 Fails Plays Fails Rejects Rejects Rejects Rejects Rejects Rejects Rejects Freezes - - - Freezes on blocksizes 254, 725; skips file with blocksize 1937. 38457Hz and 41kHz are speeded up; 22050 Plays. All files with bitdepth other than 16 are skipped. Files with variable block size are skipped. 3.0 plays as silence, others 16/44 MCH files make freeze.
JVC KD-R871BT Fails Plays Fails Plays Rejects Plays Freezes - Rejects - Rejects - - - Heavy stutter with blocksize 16. Stretches non-standard samplerates. Samplerates above 96kHz, variable blocksize files and multichannel files 'not supported'. Freezes on blocksize 16384
Kenwood KMM-BT304 Fails Plays Rejects Plays Rejects Plays Rejects Rejects Rejects Plays Rejects Rejects Plays Reboots Plays Track 03 plays extremely noisy, barely recognizable. Track 51 produces a "NO DEVICE" error and a reboot. Track 54 produces a reboot with no message. These tracks produce a "NA FILE" error and the player skips to the next: 19 21 24 25 26 27 29 30 31 34 35 36 38 39 40 41 42 43 44 45 46 48 55. (firmware: te1706k.krm from 2020-03-05)
Onkyo TX-NR686 Fails Plays Rejects Plays Rejects Plays Plays Plays Rejects Plays Rejects Plays Reboots Plays Heavy stutter with blocksize 16. Does not play non-standard samplerates, files with extremely large seektable, application block and vorbiscomment. Does not play current format variable blocksize files but does play 'pre-2007 format' variable blocksize files. Does not play 4.0, 5.1 and 7.1 files but does play 5.0 and 6.1 as stereo and 3.0 as 3.1. Crashes on file with 1000x repeating VORBISCOMMENT
Panasonic TX-60CX750E Plays Plays Fails Plays Plays Plays Plays Plays Fails Plays Plays Plays Plays Fails Plays Based on libFLAC 1.2.1. Stretches non-standard samplerates. Does not output more than 2 channels over HDMI. Keeps loading forever on extremely large VORBISCOMMENT
Pioneer BDP-150 Freezes Fails Fails Plays Freezes Plays Freezes Fails Fails Plays Freezes Freezes Freezes Plays Stretches non-standard samplerates to 44.1kHz. Freezes on any non-standard blocksize, on variable blocksize streams, files more than 6 channels, files with unknown number of total samples, files with several extremely large metadata blocks and file with 1000x repeated vorbiscomments. Rejects files with too many seekpoints. Incorrect decoding (short noisy bursts) of RICE2 partitions with escape codes. Incorrect decoding (garbled audio) of LPC with qlp precision of 2. Stutters on 192kHz with 32th order predictors
Rockbox Plays Plays Plays Plays Plays Plays Rejects Rejects Plays Plays Freezes - - - 6.1 and higher multichannel files freeze the player.
Software players
Foobar 2000 Plays Plays Plays Plays Plays Plays Plays Plays Plays Plays Plays Plays Plays Plays Plays
VLC Plays Plays Plays Plays Fails Plays Plays Plays Plays Plays Plays Plays Plays Crashes Plays Unable to play old-style variable blocksize. Crashes occasionally on files with extremely large VORBISCOMMENT
Winamp 5.8 Plays Plays Plays Freezes Plays Plays Plays Plays Freezes Plays Freezes Plays Plays Plays Freezes on 12 bit, 384kHz, 3.0, 5.0, 6.1, 7.1
Windows Media Player Plays Plays Plays Rejects Plays Plays Plays Plays Plays Rejects Plays Plays Plays Rejects Plays Rejects 12 and 20 bit FLAC and files with extremely large metadata blocks
Table legend
Plays all files in this category are played as intended, without glitches, changes etc.
Rejects One or more files are rejected by the player, either by skipping the file or mentioning a message like: "file not supported"
Fails One or more files are not played back as intended, for example by stuttering, garbling or playing at incorrect speed, or by never starting playing (though not skipping, freezing or rebooting)
Freezes On one or more files, the player crashes on decoding, leaving the unit inoperable until reboot, or the unit reboots by itself
The order of precedence is from bottom to top, so if one file freezes the player, one file is rejected and the other play fine, the table reads 'Freezes' for that category.
For the metadata tests, the (absence of) rendering of the metadata is not a criterium, simply whether its presence is an obstacle to playing