Working on the infamous Wavpack…

.. plugin for xine.

As my sucky ISP has something wrong with international routing, that makes it impossible for me to get a full cvs up of the tree, and blocks my attempts to read Userfriendly, I’ve decided to spend some more time on xine trying to get more into the internals.

In particular, there was that idea of writing a wavpack plugin, as xine right now does not support that particular format. I originally started writing an FFmpeg demuxer, but ended up not having a clue of how split the stuff to pass to the decoder.

I then started looking into writing a demuxer and decoder for Wavpack directly in xine-lib, by using libwavpack. After a night of working on that, I can tell it’s not a good idea. The library is a big mess; to start with, it has a wrapper structure that wraps around file access, allowing to read a stream out of a buffer too, which ain’t that bad on its own (actually was quite simple to write a version that works using xine’s input plugin stuff), but it assumes 32-bit everywhere, which means that it won’t work with largefiles (>= 2 GiB). There’s no decoding function that can work with a raw buffer of bytes, all need the same context used for reading the file, which makes the decoding using libwavpack a lot tricky.

I’m afraid that this idea is going to take quite a bit more of time than I expected, as I cannot really rely on libwavpack too much, so I should probably write some routines to handle the whole format from inside xine-lib itself, and that becomes a major problem considering I have works to handle.

Oh well, sooner or later something will come up.