Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
XMMS2 Team releases a new Developer Release to the wild, named DrAlban. This page documents the changes between DR2.2 and DR-Alban.
Noteworthy feature additions
Bug 273: Added AAC/MP4 plugin
Juho Vähä-Herttua contributed an AAC/MP4 plugin based on libfaad.
Bug 428: Added MusePack Plugin
Daniel Svensson contributed a MusePack plugin.
Bug 65: Add new magic code.
Tilman Sauerbeck added magic recognition of media files. This removes the old and stupid recognition scheme (i.e. looking at the filename extension) and now we try to identify which plugin should handle a file via content recognition.
Bug 276: Add xmms2-launcher program.
Anders Gustafsson removed the deamonisation from xmms2d. You now use xmms2-launcher to put xmms2d in the background.
Bug 190: Remove gigantic SQLite3 lock.
Tobias Rundström removed the gigantic SQLite lock. We can now have concurrent SQLite connection at the same time. Will improve preformance for most operations. Please note that old SQLite3 versions can be buggy with this change. Make sure you are using SQLite version 3.2.6 or higher.
Bug 282: Added support for writing data to medialib from clients.
Tobias Rundström also added support to write data to the medialib from clients. You can now associate own values with entries in the medialib. Opens a lot of new functionallity for clients.
Noteworthy bug fixes
- Both ringbuffer and transport code got a lot of eyes during this release cycle. This should eliminate a lot of problems with deadlocking and timing problems during playback and seeking.
- Bug 334:Fixed noise in Jack plugin. Our Jack output plugin maintainer - Chris Morgan - fixed a lot of problems with the Jack plugin.
- Bug 205: FLAC seeking problems has been worked around.
- Another 50 bugs have been squished and stability should really improve with this release.
Notes to client authors
This release will break all existing APIs. You need to rework your clients to handle sources and some other minor changes.
- Clients can now write to the medialib. (See xmmsc_medialib_entry_property_set() and xmmsc_medialib_entry_property_set_with_source())
- The medialib dicts have changed! There is now a propdict which holds a dict with client names as keys and another dict under each key. As a result, there are new foreach functions.
- Server info is stored under the "server" key (This is where all the mediainfo you're used to resides.); client info is stored under "client/"
- A new convenience function, xmmsc_result_source_preference_set(), can be used to set the default source of your mediainfo dicts.
- Client names must now be alphanumeric with no spaces. This is so that they can be stored in the medialib safely for use as dict keys. Example: "xmms2-cli" is acceptable whereas "xmms2 cli" will give an error.
- Mediainfo contains new information.
- "samplerate", "bitrate", and "channels" keys have been divided into *:in and *:out keys. The "samplerate:in" key, for example, is the samplerate given by the decoder plugin (i.e. that of the file itself; the FAAD plugin is an exception since libfaad uses internal upsampling).
- "samplefmt:in", "samplefmt:out", "transport", and "decoder" are new keys that give more information from the plugins used to play the file.
- xmmsc_plugin_list() function provides a list of all the loaded plugins to the client.
- Encoding of URLs has been a long-standing issue that was resolved. Since URLs have no known encoding when they are passed to the server, they are encoded using the principles of URL-encoding to validate as UTF-8 which is safe for the medialib.
- There was a new function added to decode URLs to their original, unknown, encoding: xmmsc_result_decode_url(). This function must be used with Extreme Care(TM). Developers writing clients using this function must always be aware that there is no known encoding and the string is thus, unfit for display until it has been validated and/or converted to a known encoding.
Notes to users
- This release will remove your medialib. Make a backup if you want to keep information in there.
- The option to run xmms2d in background (-d) has been removed. Try xmms2-launcher instead.
- Using older versions of SQLite (< 3.2.6) could cause strange problems. Please upgrade.
Phone home feature
This release also includes a phone-home agent, which provides the developers (and other interested parties) basic test coverage data. It sends an udp packet for each song played with information about which output-, decoder- and transport plugin is used and what operating system xmms2 is running on. The information is sent anonymously and doesn't even contain the name of the song. This helps the developers to approximate how much testing different components in xmms2 get, which will help in making it a better music player. If you never have had xmms2 installed before this feature will be enabled automatically. If you already have xmms2 installed you can manually put the xmms2-et-launcher.sh script in .xmms2/startup.d (or simply remove that directory to get it fresh from the skel).
If you for some reason don't want the phone home feature you can disable it by removing the link within ~/.xmms2/startup.d.
Lot of new developers has joined up with XMMS2 team during this period. Thanks for all support and help.