This Time Self-Hosted
dark mode light mode Search

Moving from FLAC to WavPack

Some of you might have noticed that I blogged about adding WavPack support in xine ; now I’ve also committed to the tree the ebuild for a new CVS snapshot of xine-lib with WavPack supported. The reason why I did this cvs snapshot rather than asking for a new xine-lib release next week (thing that I’m still thinking about) is because one of my additions to this release, a sanity check for the symbols used by the plugins being defined at link time, so that they will fail during build if symbols are missing rather than die on the user at runtime, requires a bit of testing. Compiles both on my systems and on Debian’s buildhost already found some missing link lines that are now fixed, but I cannot really test all the possible combinations. For this reason, the ebuild is now in Portage under package.mask.

Now, to use WavPacks easily with Amarok, you also need TagLib to support them.. luckily aumuell found on the Net some TagLib plugins, now imported into Amarok, that support both WavPack and TrueAudio (the other lossless format I added support for in xine-lib in the past days). The patch is applied in the repository and will be released with version 1.4.5, but for my own pleasure, I’ve patched 1.4.4-r3 in my overlay to add those plugins, as I wanted to be able to test WavPack as much as I could. The result is really good, the plugin works well both in reading and writing APEv2 tags on WavPack files.

Now, I wanted to give WavPack a better go… when I first implemented OggFlac support into xine-lib, I got in a really bad fight with the FLAC format for the use of 3-bits 7-bits and 22-bits fields that are a mess to read without implementing a bitstream parser altogether (which is not practical to be done when the most of the reading is done at byte blocks, rather than bits, like a demuxer does usually), and having the choice of backing off it, I wanted to try it.

Well, I’m satisfied with WavPack way more than with FLAC; encoding a CD Rip (I rip my own CDs, as I want to listen to them with Amarok rather than having to change the CD every time) takes a fraction of the time needed with FLAC, and the files are smaller; now that xine and Amarok supports it, it’s worth the hassle.

Of course, WavPack is not at the same level of FLAC yet, at least when it comes to popularity: neither KAudioCreator nor ruby-ripper have a preset to rip to WavPack, the wavpack commandline utility does not allow you to set APEv2 tags, ls does not recognise them, nor does GNU file, nor KDE’s mimetypes, but it works quite fine to me.

As no commandline tagging application besides Amarok (edit: Lukáš Lalinský pointed out that there are taggers for WavPack files.. unfortunately I was too sleepy when I wrote the entry and I didn’t specify, I meant commandline tools.. and I was sidetracked thinking that Amarok had a DCOP interface for tagging files… instead it was JulTagger I was designing the DCOP tagging interface… so here it is what I meant :)) seemed to be available for WavPack files, I’ve resumed my work with RubyTag++, even if it’s still half broken due to TagLib being incomplete (and Wheels hasn’t released the long promised 1.5 yet), and started adding the support for the extra plugins found in Amarok…

The result is quite nice to me, as I now have a simple script that decompress a flac file, re-compress it in WavPack and copies the basic tags from one to the other, so I could transcode my whole library from FLAC to WavPack, sparing about a gigabyte out of the total (23/22GB) of my music collection.

I’m planning to release in the next days the first alpha of RubyTag++, and then start shipping at least some commandline tool to allow tags manipulation, and hopefully resume work on JulTagger soon too.

And now a little question for my readers: what should I do with MTP support being now lingering? Seems like no interested dev has a MTP device to test with, and after Thomas retired, the libmtp package is also unmaintained. I’m not that keen on buying myself an MTP player just to test Amarok (especially since my cellphone – well, the broken one I have to get repaired – is also an MP3 player of tis own). Is anyone available to be a tester/maintainer for MTP stuff?

Comments 4
  1. I’ve been successfully using libmtp and amarok with my Creative Zen Vision:M mp3 player and everything seems to work great. Please contact me if you need me to help with testing of the code.ThanksJeremy

  2. IIRC, the biggest problem with WavPack is that it is a symmetric compression scheme: the higher the compression is, the more CPU is needed by the encoder but also by the decoder. And this is a big problem of embedded systems. On the other hand, FLAC is asymmetric, the burden of additional computation is all on the encoder, the decoder requires a constant amount of CPU, regardless of the encoding quality.Anyway, WavPack could end up requesting less CPU than FLAC if you consider all the additional code required to deal with bit-precision fields as opposed to the byte-precision fields of FLAC.

  3. > As no tagging application besides Amarok seemed to be available for WavPack files, …There are at least two I know of: MB Picard (which is where are the TagLib plugins from, btw) and Ex Falso.

  4. Thanks Lukáš for pointing them out, although I meant console-based ones 🙂 For scripting a conversion, it’s a bit difficult to use a GUI 🙂

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.