|
|
Subscribe / Log in / New account

Development

LPC: Linux audio: it's a mess

September 18, 2008

This article was contributed by Don Marti

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.)

If someone comes and says, 'I want to write an audio application. Which API should I use?' I don't have a good answer

"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.

Comments (145 posted)

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."

Full Story (comments: none)

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".

Comments (none posted)

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."

Full Story (comments: none)

PostgreSQL Weekly News

The September 21, 2008 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.

Full Story (comments: none)

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."

Comments (none posted)

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."

Full Story (comments: none)

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."

Comments (none posted)

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."

Full Story (comments: none)

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.

Full Story (comments: 1)

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.

Full Story (comments: 11)

GNOME Software Announcements

The following new GNOME software has been announced this week: You can find more new GNOME software releases at gnomefiles.org.

Comments (none posted)

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..."

Comments (none posted)

KDE Software Announcements

The following new KDE software has been announced this week: You can find more new KDE software releases at kde-apps.org.

Comments (none posted)

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.

Comments (28 posted)

Xorg Software Announcements

The following new Xorg software has been announced this week: More information can be found on the X.Org Foundation wiki.

Comments (none posted)

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."

Comments (none posted)

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."

Comments (none posted)

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.

Comments (none posted)

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."

Comments (none posted)

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."

Comments (none posted)

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."

Comments (none posted)

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."

Full Story (comments: none)

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.

Full Story (comments: 2)

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."

Full Story (comments: none)

Caml

Caml Weekly News

The September 23, 2008 edition of the Caml Weekly News is out with new articles about the Caml language.

Full Story (comments: none)

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."

Comments (none posted)

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."

Full Story (comments: none)

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."

Full Story (comments: none)

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".

Full Story (comments: none)

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.

Full Story (comments: none)

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."

Comments (4 posted)

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."

Full Story (comments: none)

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)".

Comments (none posted)

Page editor: Forrest Cook
Next page: Linux in the news>>


Copyright © 2008, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds