This Time Self-Hosted
dark mode light mode Search

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.

Comments 1
  1. Hi.I am the WavPack author and I stumbled into this today and I hope that I can help. There actually is a STREAMING_MODE flag that makes it easy to use the library to decode raw blocks. This is used in the DirectShow filter and in a new gstreamer plugin that will be available very soon (the old gstreamer plugin was written before this mode was available and uses internal APIs that it shouldn’t). Anyway, there is still some very basic parsing of WavPack files to do by the plugin, but it’s pretty trivial (and it’s been done at least twice that you could borrow from).I’m sorry that you didn’t e-mail me before, I could have maybe saved you a lot of time. Anyway, I am happy to work on this with you if you would like to continue (my e-mail address in on the WavPack website).Thanks,David

Leave a Reply

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