Development
LPC: Linux audio: it's a mess
Audio is a fitting topic for the first day of the Linux Plumbers Conference. Users want sound to Just Work, and there's lots of working code in individual projects. But so far, it seems like nobody has everything quite plumbed together in an annoyance-free way.
Lennart
Poettering, a lead
developer of PulseAudio and Red Hat employee,
moderated the miniconference and started with a
summary of the state of Linux audio: "it's a mess
".
The audio miniconference came up with two steps
toward cleaning up the mess, though. First, come up
with a coherent story for application developers on
what sound API to use, and how. Second, clean up the
often-confusing array of user-visible audio level controls.
PulseAudio first appeared to regular users
in
Fedora, starting with version 8, and now,
as Lennart puts it, is for up-to-date users,
"the software that currently breaks your audio
".
PulseAudio is a sound server that mixes audio from
multiple applications and passes it along to the
sound hardware. It offers advanced features such
as network transparency: an application can play a
sound on a remote system, and PulseAudio makes it
come out the speakers on the remote machine where
the user is working. Supporting it shouldn't
be a big change for most application developers
to handle. It will handle applications written
to the kernel's maintained audio API, ALSA, using the
PulseAudio backend for alsa-lib. So the
PulseAudio transition has been relatively painless
for the distributions.
An earlier sound server project, the Enlightened
Sound Daemon (ESD) sound
server, is falling out of favor and Media
Application Server (MAS) has never really caught
on. However, one of the competing sound servers looks likely
to remain. On the pro audio side, the low-latency
sound server JACK
is the recommended option. JACK, the "Jack Audio
Connection Kit," as Dave Phillips writes, "holds
the keys to the kingdom" for connecting
studio applications such as the Ardour
digital audio workstation and the Rosegarden
MIDI sequencer. "If you want all of the features,
no one audio system supports all of them,
" Lennart
said.
Apple and Microsoft each have a single sound server that does both desktop and pro audio, but nobody at the session seemed to have much interest in that direction for Linux. PulseAudio is optimized for general desktop use and power savings, and supports scheduling features that should minimize wakeups but still allow for reasonably low-latency playback of streaming audio. It's also network-transparent and supports features such as placing desktop sound events based on mouse position. Network audio and desktop effects don't tempt pro audio users. JACK's uncompromising approach toward latency means it's likely to hog too much power to be acceptable to battery-life-watching desktop users, but fine for a studio with a rack full of gear. So two sound servers, one for pro and one for the masses, seems to be fine with both sets of users.
Abusing ALSA
PulseAudio, however, can't give applications direct
access to the hardware, and currently only about 70%
of ALSA applications use the API in a PulseAudio-safe
way, Lennart said. Some high-profile applications
are among those doing audio wrong. "Flash and
Skype are really really broken applications,
especially Flash
", he said. Adobe split out the
parts of its code that talk to the audio subsystem,
and certain other plumbing, into an open-source
library, libflashsupport. But Flash remains broken.
The proprietary Flash library talks to libflashsupport
from multiple threads, and one thread calls a
destructor while another continues to send data.
"
It works until you close the browser window and then
you get a race
", Lennart said.
Developers who want to play audio have a sometimes-confusing choice of tools, including PortAudio and GStreamer. (PortAudio is cross-platform, which is likely why the popular cross-platform audio editing application Audacity uses it.) GStreamer is relatively feature-intense and heavyweight, also handling video and transcoding. (Write a player with Gstreamer and you get the ability to play your collection of C64 SID files for free.)
[PULL QUOTE: If someone comes and says, 'I want to write an audio application. Which API should I use?' I don't have a good answer END QUOTE]"If someone comes and says, 'I want to
write an audio application. Which API should
I use?' I don't have a good answer
", Lennart
said. The current best answer seems to be to
write to the PulseAudio-safe subset of ALSA.
Jeff Licquia
of the Linux Standard Base (LSB), in the audience,
mentioned that ALSA is on track for inclusion
in LSB 4.0, and is a trial use module for 3.2.
LSB aims to define a compatibility standard for
Linux applications, and aims to do the kind of
application developer education that Linux audio
developers seem to need. Applications seeking LSB
certification must run all of the LSB tests, but can
fail anything tagged as trial use. "
We're only keeping
the stuff that we hope will be around for the long
term
", he said. If the LSB-safe subset of ALSA fits
into the PulseAudio-safe subset of ALSA, application
developers could write to ALSA and test with LSB.
"I would like to be able to tell people to use libsydney
",
Lennart said. Libsydney, in
progress, is intended to be a networking-friendly
general-purpose audio API.
ALSA and the HD-Audio widget problem
In ALSA, the hardware/software interface is in
good shape, but software to user interface needs some work. Takashi
Iwai, a core ALSA developer and Novell
employee, pointed out in a talk that the line
count for /sound code in the kernel is actually
shrinking, except for ASoC (system on a chip)
and HD-audio. "There will be no more sound cards,
especially PCI
", he said. The one exception is the
SoundBlaster X-FI for gamers, which is currently
not supported well in ALSA. Creative announced proprietary
drivers in 2006, but one ALSA developer recently
did get access to a data sheet under NDA.
The new audio standard, HD-Audio, is commonly found on new systems, and it's well-supported at the kernel level. However, it's based on "widgets" with vendor-configurable I/O pins. A driver can't tell how the HD-Audio part is connected, so some Linux plumbing work is required to identify which of the many exposed level controls is the right one to show the user. An audience member pointed out the need to tweak multiple level settings on his hardware, to get the right level without distortion. Linux will need more information on how each machine has its HD-Audio hardware hooked up in order to reliably give the user a useful volume control.
System Applications
Clusters and Grids
zc.async 1.5.0 released
Version 1.5.0 of zc.async has been announced. "The ``zc.async`` package provides an easy-to-use Python tool that schedules work persistently and reliably across multiple processes and machines."
Database Software
LiquiBase: 1.8.0 Released (SourceForge)
Version 1.8.0 of LiquiBase has been announced, it includes new features and bug fixes. The software is: "A tool to manage database changes and refactorings. All changes to a database are stored in XML files that are stored in version control with other source code. A graphical IDE is also available".
PostgreSQL 8.3.4, 8.2.10, etc. update release announced
Update releases 8.3.4, 8.2.10, 8.1.14, 8.0.18 and 7.4.22 of the PostgreSQL DBMS are available. "Updates for all maintained versions of PostgreSQL are available today: 8.3.4, 8.2.10, 8.1.14, 8.0.18 and 7.4.22. These releases fix more than thirty minor issues reported and patched over the last three months. As some of these issues carry a risk of data loss, administrators of production applications should upgrade in their next possible scheduled downtime."
PostgreSQL Weekly News
The September 21, 2008 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.SQLite release 3.6.3 announced
Version 3.6.3 of SQLite has been announced. "SQLite version 3.6.3 fixes a bug in SELECT DISTINCT that was introduced by the previous version. No new features are added. Upgrading is recommended for all applications that make use of DISTINCT."
ZMySQLDA 3.0 for Zope 2
ZMySQLDA 3.0 for Zope 2 has been announced. "MySQL Database Adapter for Zope 2. Extensively reworked for stability and compatibility with versions 2.8+ and modern MySQL versions. New features from auto-creating database to limited Unicode support."
Web Site Development
Introducing the Django Debug Toolbar
Rob Hudson has published an introductory document for the Django web platform Debug Toolbar. "I liked the fact that Symfony's Debug Toolbar was made up of distinct panels, each of which had their own rendering methods. I created the Django Debug Toolbar similarly with a single toolbar that contained many panels. The toolbar itself is a piece of middleware that instantiates each panel object on request, and performs processing and rendering as the response is being written back to the browser. In this way it is essentially a set of middleware classes (the panels) grouped together to display a single toolbar. Each panel subclasses a base panel class and overrides a few methods to render the toolbar."
WSO2 Web Service Framework for Jython 1.0-alpha released
Version 1.0-alpha of the WSO2 Web Service Framework for Jython has been released. "WSO2 WSF/Jython provides an amazingly simple approach to create (Code First) and consume Web Services in Jython. This framework integrates the Apache Axis2 web services engine into Jython. Thus, providing all the power and versatility of the Axis2 engine to the Jython user. Now, with just a few lines of code, Jython users can enjoy the benefits of Service Oriented Architecture using Web Services in their applications."
Miscellaneous
Rockbox 3.0 released
At long last, Rockbox 3.0 is out. Rockbox, of course, is a free firmware replacement for a number of portable music players; see this LWN article for more information on the 3.0 release.
Desktop Applications
Desktop Environments
GNOME 2.24 available
The GNOME 2.24 release is out. There's a lot of new stuff, of course, including the "Empathy" instant messaging client, Ekiga 3.0, better XRandR support, some GTK+ 3.0 forward compatibility support, and the first release of the GNOME mobile development platform. See the release notes for screenshots and details.GNOME Software Announcements
The following new GNOME software has been announced this week:- Accerciser 1.4.0 (translation work)
- anjuta, gdl and gnome-build 2.24.0 (new features, bug fixes and translation work)
- at-spi 1.24.0 (bug fix and translation work)
- atk 1.24.0 (bug fix and translation work)
- Banshee 1.3.1 (new features and bug fixes)
- bug-buddy 2.24.0 (new features and translation work)
- cairo snapshot 1.7.6 (build changes, API changes and bug fixes)
- Cheese 2.24.0 (bug fixes and translation work)
- Deskbar-Applet 2.24.0 (bug fixes and translation work)
- Devhelp 0.21 (translation work)
- Ekiga 3.00 (new release series)
- Empathy 2.24.0 (bug fixes and translation work)
- Epiphany 2.24.0.1 (new features, bug fixes and translation work)
- Eye of GNOME 2.24.0 (bug fixes and translation work)
- fast-user-switch-applet 2.24.0 (bug fixes and translation work)
- File Roller 2.24.0 (bug fixes and translation work)
- F-Spot 0.5.0 (new features, bug fixes documentation and translation work)
- F-Spot 0.5.0.1 (bug fixes and translation work)
- Gcalctool 5.23.5 (translation work)
- GLib 2.18.1 (bug fixes and translation work)
- glibmm 2.18.0 (bug fix)
- gnome-applets 2.24.0 (new features, bug fixes and translation work)
- Gnome Games 2.24.0 (translation work)
- gnome-keyring 2.24.0 (new features and bug fixes)
- GNOME Media 2.24.0 (bug fixes and translation work)
- GNOME Media 2.24.1 (bug fixes)
- GNOME Power Manager 2.24.0 (bug fixes and translation work)
- gnome-settings-daemon 2.24.0 (bug fixes and translation work)
- GNOME Utilities 2.24.0 (bug fixes and translation work)
- GOK 2.24.0 (translation work)
- gthumb 2.10.10 (new features, bug fixes and translation work)
- GTK+ 2.14.2 (bug fixes and translation work)
- GTK+ 2.14.3 (bug fixes)
- Gtk2-Perl 2.24.0 (new features and bug fixes)
- gtk-engines 2.16.0 (bug fix and translation work)
- gtkmm 2.14.0 (new features and bug fixes)
- libgnomekdb 2.24.0 (bug fixes)
- Metacity 2.24. (bug fix and translation work)
- mousetweaks 2.24.0 (new features, bug fixes and translation work)
- Orca 2.24.0 (bug fixes and translation work)
- pessulus 2.24.0 (bug fixes and translation work)
- PyGoocanvas 0.12.0 (API update and documentation work)
- seahorse 2.24.0 (new features and bug fixes)
- seahorse-plugins 2.24.0 (code rework and bug fixes)
- Tomboy 0.12.0 (new features, bug fixes and translation work)
- Yelp 2.24.0 (bug fixes and translation work)
KDE Commit-Digest for 14th September 2008 (KDE.News)
The , 2008 edition of the KDE Commit-Digest has been announced. The content summary says: ""Shortcut Scheme" support allows creation of shortcut themes (Emacs, etc.) for use in KDE applications. A "Media Player" runner (with support for Amarok 2), more work on panel hiding, and support for text zoom in the "Web Browser" Plasmoid in Plasma. The "Weather Station" applet moves to kdereview. More refinements in PowerDevil, in preparation for a move to kdebase. Lots more functionality in Attica, the Open Collaboration Services desktop client. Start of session support in KDevPlatform (the basis of KDevelop 4). A "McCabe cyclomatic complexity metric engine" in KDevelop 4..."
KDE Software Announcements
The following new KDE software has been announced this week:- Beesoft Commander 4.1.0 (new features)
- cb2Bib 1.0.3 (new features)
- Elltube 0.1alpha (initial release)
- Elltube 0.1beta (new features)
- Elltube 0.1final (new features and bug fix)
- Folding@KDE 2.0 (unspecified)
- K Menu Gnome 0.7.4 (new features)
- Kate Gtags 1.4 (new features and code cleanup)
- KDE Partition Manager 1.0.0-ALPHA1 (initial release)
- kdesvn 1.0.1 (new features and bug fixes)
- kdesvn 1.0.2 (bug fix)
- KGRUBEditor 0.8.5b (bug fixes)
- kipi-plugins 0.2.0-beta1 (new feature and bug fixes)
- kssh-add 0.2 (bug fix)
- NoteFinder 0.1.3 (new feature and bug fixes)
- NoteFinder 0.1.4 (new feature and bug fix)
- PeaZip 2.3a (new features and translation work)
- PyQt3Support r3 (new features and code cleanup)
- Sinerji 0.1 (initial release)
- uspc 0.4 (unspecified)
X.org 7.4 released
X.org 7.4 is out. Changes include the addition of support for ATI Radeon r[567]00 chipsets, lots of performance improvements, better automatic configuration. the XACE security framework, and a lot more. Some details can be found in the release notes.Xorg Software Announcements
The following new Xorg software has been announced this week:- pixman 0.12.0 (new features)
- xcb-util 0.3.0 (new features and bug fixes)
- xf86-input-evdev 2.0.5 (bug fix)
- xorg-server 1.5.1 (new features and bug fixes)
Electronics
gEDA/gaf 1.5.0.20080706 released
development version 1.5.0.20080706 of gEDA/gaf, a collection of electronic CAD utilities, has been announced. "After much delay (oh let's say 6 months), I am please to announce the release of gEDA/gaf 1.5.0. This is a development snapshot, so please report all new issues. This release includes a few new features, a bunch of cleanup, and the usual slew of bug fixes. I will send release notes out in a few days. Many thanks to everybody who contributed."
Gerbv 2.1.0 announced
Version 2.1.0 of Gerbv, a Gerber format CAD file viewer, has been announced. "Gerbv release 2.1.0 introduces several new features."
Icarus Verilog 20080905 released
Version 20080905 of Icarus Verilog has been announced. "Icarus Verilog is a a GPLed Verilog compiler. Icarus Verilog includes a a parser that parses Verilog (plus extensions) and generates an internal netlist. The netlist is passed to various processing steps that transform the design to more optimal/practical forms, then passed to a code generator for final output. The processing steps and the code generator are selected by command line switches." See the release notes for more information.
Games
OpenSkyNet: Pathfinding API v0.51 released (SourceForge)
Version 0.5.1 of OpenSkyNet has been announced. "OpenSkyNet - Moving towards a comprehensive artificial intelligence solution for game developers under the LGPL. The goals are to implement action selection solvers, robust steering behaviors (including pathfinding algorithms), and machine learning."
GUI Packages
wxWidgets 2.8.9 released
Version 2.8.9 of wxWidgets, a cross-platform GUI toolkit, has been announced. "The wxWidgets team is pleased to announce a new wxWidgets release. The latest stable release in 2.8 series contains several bug fixes as well as a few new functions. Upgrading is recommended for all wxWidgets users."
Interoperability
Wine 1.1.5 announced
Version 1.1.5 of Wine has been announced. Changes include: "Substantial JavaScript implementation, Partial support for layered windows, Support for Unicode file export in Regedit, Proper exception handling in widl-generated code, Asynchronous requests and cookies support in WinHTTP and Various bug fixes."
Multimedia
Elisa Media Center 0.5.11 released
Version 0.5.11 of Elisa Media Center has been announced. "This 11th release of the 0.5 series introduces the following new features: - Extended D-Bus API to control the media scanning process - Rotation of pictures is available as a control of the photo player - New D-Bus interface to perform common operations on the audio player: play, pause, stop, currently playing media, etc. - Favorites are now available for videos as well On top of that few but hindering bugs have been resolved during this cycle."
Web Browsers
Firefox 3.0.2 and 2.0.0.17 released
There are a couple of new Firefox releases out there. They add a bunch of new stuff, including fixes for a couple of scary security issues. Expect updates from distributors shortly.
Languages and Tools
C
GCC 4.3.3 Status Report
The September 20, 2008 edition of the GCC 4.3.3 Status Report has been published. "The GCC 4.3 branch is open for regression and documentation fixes. The 4.3 branch has nicely stabilized and the number of new serious regressions is low. There are quite a number of bugs which unclear status as of if they are valid or not. I have put them into WAITING state and CCed relevant maintainers. Likewise missed-optimization regressions are piling up, with low chance of being fixed on a release branch."
Caml
Caml Weekly News
The September 23, 2008 edition of the Caml Weekly News is out with new articles about the Caml language.
Perl
Parrot 0.7.1 announced (use Perl)
Version 0.7.1 of Parrot has been announced. "On behalf of the Parrot team, I'm proud to announce Parrot 0.7.1 "Manu Aloha." Parrot is a virtual machine aimed at running all dynamic languages."
Python
CapPython, an object-capability subset of Python
Mark Seaborn has announced the CapPython project. "During the past couple of months I have been working on an object-capability subset of Python - in other words, a restricted execution scheme for sandboxing Python code. It has been influenced by other object-capability subset languages, such as Joe-E (a subset of Java), Caja/Cajita (subsets of Javascript) and Caperl (based on Perl). I'm calling it CapPython because the name doesn't seem to have been taken yet."
Python 2.6rc2 and 3.0rc1 released
Versions 2.6rc2 and 3.0rc1 of Python have been announced. "These are release candidates, so while they are not suitable for production environments, we strongly encourage you to download and test them on your software. We expect only critical bugs to be fixed between now and the final releases. Currently Python 2.6 is scheduled for October 1st, 2008. Python 3.0 release candidate 2 is planned for October 1st, with the final release planned for October 15, 2008."
PyKerberos 1.1 announced
Version 1.1 of PyKerberos has been announced, it includes a number of new capabilities and bug fixes. "PyKerberos is a high-level Python wrapper for Kerberos/GSSAPI operations. Instead of wrapping the entire Kerberos/GSSAPI framework, PyKerberos instead offers a limited set of functions that do what is needed for client/server Kerberos authentication based on http://www.ietf.org/rfc/rfc4559.txt".
Python-URL! - weekly Python news and links
The September 23, 2008 edition of the Python-URL! is online with a new collection of Python article links.
Libraries
libpng: 1.2.32 released (SourceForge)
Version 1.2.32 of libpng has been announced. "Reference library for supporting the Portable Network Graphics (PNG) format. This release fixes a new bug that causes a crash when attempting to read a PNG file that has multiple zTXt chunks."
Xiph.Org Foundation releases libSpiff 1.0.0
Version 1.0.0 of libSpiff has been announced. "libSpiff is the official reference implementation for XSPF by the Xiph.Org Foundation, which brought Open Media formats like Vorbis, Flac and Speex to life. XSPF is their take on building a playlist format."
Miscellaneous
Harbour: 1.0.1 released (SourceForge)
Version 1.0.1 of Harbour has been announced, it includes a long list of bug fixes and some new features. "The Harbour Project is a Free Open Source Software effort to build a multiplatform Clipper language compiler. Harbour consists of the xBase language compiler and the runtime libraries with different terminal plugins and different databases (not just DBF)".
Page editor: Forrest Cook
Next page:
Linux in the news>>