Archive for the 'Hacks' Category

forked-daapd v0.19: database, iTunes timeout

With this release come two long-awaited improvements:

  • database speedups;
  • fix for iTunes timing out after 30 minutes.
The database speedups aren’t quite as spectacular as I’d like them. There are a few issues left that I’ll try to address in the future, but I have these changes ready and they do help somewhat, so I’m pushing them out.
Craig Markwardt looked into the iTunes timeout issue and came up with a way to avoid it and then some more ideas for implementing updates. A big thank you to Craig for helping out with this one!
There was a bug in the parsing of DACP properties leading to an infinite loop, which was fixed quickly after the 0.18 release. It is, of course, included in this release.
The GCD codebase did not receive any changes over the master branch.
Note that the GCD codebase will become the master branch in the next few days. I won’t be adding any new feature to the libevent codebase; I plan to have bug fixes flow into that branch, but we’ll see that in due time.
Tarballs available at http://alioth.debian.org/~jblache/forked-daapd/ or in the forked-daapd project on Alioth; GPG signatures made with my (new) Debian key FA1E5292.

forked-daapd: v0.18

Release 0.18 is a small update to forked-daapd, adding a config knob for the ALSA mixer channel to use for volume setting; this is required in some setups.

Starting with this release, the forked-daapd logfile needs to be owned by the user forked-daapd runs as. If you use logrotate, you want to add the create option to the config stanza for forked-daapd.

The GCD codebase received a build fix for FreeBSD and I’m told it works nicely there too.

Tarballs available at http://alioth.debian.org/~jblache/forked-daapd/ or in the forked-daapd project on Alioth; GPG signatures made with my (new) Debian key FA1E5292.

I’m trying to transition the git repository to the forked-daapd project too, but I can’t get it to show up under the SCM tab in the web interface nor does it show up in gitweb. Still waiting for a resolution on that.

forked-daapd: v0.17, libav 0.7, GCD codebase

forked-daapd v0.17 is out; the main purpose of this release is to add support for libav 0.7. There are also a few bugfixes that made it into this release, but nothing earth-shattering.

One More Thing…

You’ll notice an extra tarball and tag in this release, both marked 0.17gcd. With this release, the GCD (Grand Central Dispatch / libdispatch) codebase is making its debut.

libdispatch replaces libevent and allows for greater concurrency inside forked-daapd. This makes forked-daapd snappier, which shows when using Remote or a SoundBridge. The filescanner also benefits from this; it now scans several directories concurrently, reducing the time needed for a rescan by making better use of the machine resources.

Thanks to Mark Heily’s efforts on libdispatch/libkqueue/libpthread_workqueue over the past year, we now have a Linux version of libdispatch that works well enough to support forked-daapd.

This codebase will become the primary codebase for forked-daapd once the database performance issue will be fixed. After this point, the current libevent 1.4 codebase will be legacy and won’t see any further development (we’ll discuss bugfixes in due time).

This new codebase comes with new requirements:

  • the Clang compiler from the LLVM project is required, due to the use of the C Blocks extension that isn’t supported by GCC;
  • libdispatch, of course, is required;
  • libtre is a new dependency for concurrent regexps;
  • glibc 2.13+ is required, or any glibc version containing a fix for glibc BZ#10563.

libdispatch and its dependencies are available in Debian unstable; it’s best and easier to use whatever is in unstable, instead of mixing and matching the libdispatch/libkqueue/libpthread_workqueue versions until they all work together.

Due to platform support in Clang, the GCD codebase can only be built for and will only run on i386 and amd64, as far as Linux is concerned. Other architectures will have to wait until support for them is added to Clang. FreeBSD is untested and will probably require some modifications to work; recent enough versions of FreeBSD have a native pthread_workqueue implementation and do not need libpthread_workqueue.

Packages are available in experimental for Debian users; they’ll end up in unstable in a few weeks, before the libevent2 migration happens there.

Tarballs available at http://alioth.debian.org/~jblache/forked-daapd/ ; GPG signatures made with my Debian key F5D65169.

pommed v1.39: Linux 2.6.39 maintenance release

I’ve just released pommed v1.39 ; this is a maintenance release for Linux 2.6.39, following the renaming of the mbp_backlight driver to apple_backlight.

forked-daapd git repository: don’t panic

The Alioth admins have been hard at work over the past few days to migrate Alioth to a new configuration split over a pair of servers.

As a consequence, personal git repositories aren’t working anymore for the time being.

So, don’t panic, the git repository will be back soon, one way or another.

forked-daapd: v0.16

forked-daapd v0.16 is a bugfix release, mainly addressing a bad regression introduced in v0.15.

Fixes:

  • DAAP songlist off-by-one with sort tags
  • handling of non-UTF-8 tags under some circumstances
  • file size in HTTP streaming

The DAAP bug is what causes an incorrect display and sorting in iTunes, the tags issue could cause a segfault in some cases, and finally fixing the file size in the HTTP streaming code may or may not fix some issues but was a bad bug anyway.

Tarballs available at http://alioth.debian.org/~jblache/forked-daapd/ ; GPG signatures made with my Debian key F5D65169.

forked-daapd: v0.15

forked-daapd v0.15 is here! The database speedups did not make it into this release as they still need some more work.

Now let’s talk about what did make it into this release: AppleTV metadata support. When streaming to an AppleTV, you’ll now get the cover art, artist, album, title and playback position displayed on your TV.

This was made possible by a forked-daapd user who offered me one of the new AppleTVs, so thanks much to him!

Although we haven’t got the database speedups this time around, we’ve got some other speedups:

  • the code generating the song list was slightly reworked;
  • hash tables of static data were replaced with static hash tables generated by gperf;
  • the artwork code can now send out both PNG and JPEG to clients.

The first two items bring in a new build-dependency: gperf. I promise it’s not some Java-based monstrosity ;) It’s small and C++, so no issue getting that running on whatever your platform is. Pre-generated files are not provided for this.

The last item means if your cover art is mostly JPEG, forked-daapd won’t be spending time turning it into PNG before sending it out to the client. That’s some CPU time that can be put to better use.

Next release: when it’s ready!

For Squeeze users, I am providing backports on backports.debian.org; due to the update policy, they are lagging behind the releases.

Tarballs available at http://alioth.debian.org/~jblache/forked-daapd/ ; GPG signatures made with my Debian key F5D65169.

forked-daapd: v0.14

forked-daapd v0.14 is available. This release includes a number of improvements to the sort headers/sort fields handling by Kai that got entangled into a larger database revamp at the end of last year. That will be the subject of the next release.

Also in this release:

  • better handling of tags for TV shows
  • better handling of DRM-afflicted files
  • configurable IPv6 support
  • fixes to the URL file scanner
  • misc fixes

This release performs a heavy database upgrade process that dumps and reloads the files table; this can take some time on big libraries, so please be patient while this process takes place. You should backup your database file before upgrading, just in case.

See you in about two weeks for 0.15 with some database speedups that will finally see the light :-)

Tarballs available at http://alioth.debian.org/~jblache/forked-daapd/ ; GPG signatures made with my Debian key F5D65169.

pommed v1.38: MacBookPro8,*

pommed v1.38 is out and adds support for the Early 2011 MacBook Pro machines:

  • MacBookPro8,1: 13″
  • MacBookPro8,2: 15″
  • MacBookPro8,3: 17″

These machines have a new keyboard/trackpad assembly, the WellSpring 5. You’ll need a patched kernel or a kernel recent enough that it has the USB HID quirks for the new assembly; that’s 2.6.39-rc material.

This release also adds a new config item that allows disabling the audio support in pommed entirely. The audio hotkeys are fairly well supported in desktop environments nowadays so you’ll probably want that if you’re using one.

forked-daapd: v0.13

forked-daapd v0.13 is available! This release has been in the making for a long time, got delayed for a lot of reasons and had its content changed a few times along the way. Nonetheless, it’s here now and if all goes to plan at least a couple releases should appear in the coming months, say before the summer.

In this release:

  • support for Remote 2.0
  • support for per-speaker volume control
  • support for RAOP retransmission
  • improved compatibility with the 802.11g AirPort Express
  • support for sort field metadata
  • support for JPEG artwork and more alternative filenames
  • fix for Murmur hash on 32bit platforms
  • improved mDNS address resolution, making IPv4 usable again
  • support for FFmpeg 0.6 (moving away from deprecated APIs)
  • DAAP session expiration has been disabled
  • misc fixes

Thanks to all the contributors that sent bugs and patches for this release! I know development doesn’t go quite as fast as some would like, but keep in mind that I’m doing this in whatever free time I have and that the public git tree doesn’t tell the whole story. There are several parallel feature branches you don’t get to see, for instance.

Hopefully 0.14 will appear in a few weeks.

Tarballs available at http://alioth.debian.org/~jblache/forked-daapd/ ; GPG signatures made with my Debian key F5D65169.