Monday 8 August 2011

jMinim

For various reasons I haven't taken JStreamer much further in the last few months. I had a few users of the beta release, but shortly afterwards the BBC fixed their problem with Radio 3 online broadcasting, which removed the major use case that had motivated user interest in JStreamer.

The other problem with JStreamer was its lack of integration with UPnP AV, the industry standard for home media networking. Fixing this would be a (not so) small matter of programming. Of course, if I could find an open-source Java implementation of UPnP AV, I would be able to use that instead of rolling my own.

Well, what you wish for does sometimes turn out to be what you get, and the nice people at Linn Products have just released such a thing as part of the OpenHome project under the catchy name of ohNet. (I think that's pronounced O-H-Net.) I've been looking at this over the last few days and it seems to be just what I need. It's not pure Java, but life is never quite perfect. Instead, it's C++ code with Java bindings implemented using JNI, which makes for some entertaining debugging sessions using Visual Studio to track down 0xC0000005 access violations (remember those?)

I've tried running the tests (and found a bug or two), but it's much more satisfying and motivating to build something useful. After much thought, I've decided that this useful something should be a functional UPnP AV / OpenHome stack consisting of a music server, music player, and control point, all written in Java. I'm aiming for "meets minimum" functionality initially, which could possibly be extended later depending on user reaction. After many hours searching for the very few music-related domain names that aren't already taken, I've settled on the name jMinim for the project (minim[al functionality] / minim==musical note) with the three components named MinimServer, MinimPlayer, and MinimControl. The web sites are up and running: see jminim.org, minimserver.com, minimplayer.com, and minimcontrol.com for what little information is currently available.