fre:ac Developer Blog
fre:ac development status update 09/2014 Print
Written by Robert   
Tuesday, 30 September 2014 22:40

Here's the September issue of the fre:ac development status update.

The biggest news this month is the release of fre:ac snapshot 20140921 with experimental support for parallel conversions. Surprise!

Admittedly, this actually was not planned that way. While I had plans to add support for parallel conversions in a future release after fre:ac 1.1, I had a very complex architecture in mind. The decoding and encoding would run in different threads exchanging data using a ring buffer. However, building it that way would have taken several months, so I planned to release fre:ac 1.1 without it.

Then, about a month ago, I suddenly had the idea of doing it differently: Why not simply take the existing conversion code, but run several parallel instances of it - each processing a part of the joblist? Thought about it, started coding and had a working proof of concept after one day. About a week later, it was good enough to consider inclusion in the September snapshot as an experimental option - which finally came to be.

The originally planned solution would probably give an additional 1-5% speedup for single file conversions, but this is available now and the original ideas can still be implemented on top of the current solution at a later date.

When activating parallel mode in the configuration dialog, you can select how many CPU cores and thus parallel conversion threads should be used. The automatic option will use all the physical cores, leaving virtual cores alone, so you can still work while fre:ac is running in the background. You can move the slider to enable the use of virtual cores or set it to less than the total number of cores to avoid 100% CPU use on systems without hyper-threading support.

But enough of the talk, lets look at the numbers, which are really great! The charts show the time taken to convert the album Blonde by Coeur de Pirate from FLAC to MP3 on Windows 7 and OS X Mavericks using default settings (click to enlarge):

fre:ac 20140921 performance on Windowsfre:ac 20140921 performance on OS X

Mostly thanks to the use of more agressive optimization options for compiling the codecs, even the non parallel mode is roughly 30% faster than fre:ac 20140609 on my development system. In parallel mode, there's an additional speedup of 4.4x when using all 8 threads.

Truly groundbreaking are the numbers for OS X. Thanks to additional optimizations of the OS X code, non-parallel fre:ac 20140921 is more than 4x faster than 20140609 on my Mac. Using parallel mode even speeds it up 18x vs. the June snapshot. Even on my old PowerBook G4 with only one CPU core, fre:ac is actually usable now.

Where there's light, there must be some shadow, though, so the bad news is that some problems have been found in the September snapshot that I'm currently fixing. Most notably, decoding Vorbis files in parallel mode produces garbled audio and the 32 bit Windows version of fre:ac immediately crashes on some CPUs (definitely on Athlon 64, but possibly others as well) when trying to use the LAME, FLAC, Vorbis, Opus or Speex codecs. I will release a new snapshot in early October to address these issues.