[pulseaudio-discuss] Re: [polypaudio-discuss] Audio ideas and an introduction

Lennart Poettering lennart at poettering.net
Sun Jul 9 14:21:03 PDT 2006

On Wed, 05.07.06 09:13, Shahms King (shahms at shahms.com) wrote:

> Hello all,


> As part of a course I'm taking on open source development this summer,
> I'd like to (finally) implement some of these ideas and get feedback on
> the feasibility and acceptability of some of them.  As I see it, there
> are a number of parts that need to be implemented to get hotplug of
> audio devices (think USB audio) working seamlessly.
> First is hal integration.  Although not strictly necessary, it's "low
> hanging fruit" and would obviate the /proc parsing within module-detect
> while allowing for cleanly loading and unloading modules upon device
> addition and removal.

HAL integration is a top item on my todo list. (see the "todo" file
included in the source tree) It's actually not *that* low hanging
fruit, because you need to come up with a decent DBUS event loop
wrapping, which might not be trivial. 

> Second, a module similar to module-combine that handles (slave) device
> addition and removal sanely, rather than unloading itself when any of
> the slave modules in unloaded.  There are a number of different
> possibilities for this, but my current thinking is a module that listens
> for new sinks to be added and adds sinks matching a configurable pattern
> as slaves.

This is a nice idea. I didn't think of integrating hotplug stuff with
module-combine, but I guess this would make a lot of sense.

Right now PA doesn't support "hot" moving of streams between
sinks. The code implementing this can get quite complicated, if you
want to do it properly (because of the handling of the latency), but I
actually already started to work on this. You can expect that this
will be available in PA in a few weeks.

I guess it makes a lot of sense to beef up the current module-combine
to have a mode where it automatically adds all hardware sinks to the
slave set, whenever they become available. For this to work cleanly we
should add a new flag to the pa_sink structure for declaring whether a
sink is an actual HW sink, or is more something like a virtual SW sink
(such as module-null-sink, rtp or even combine itself)

> Those two are the low-hanging fruit that I can likely at least get
> started in the amount of time I have.  The others basically consist of:
> moving clients between sinks, reconfiguring existing sinks, and more
> fully exploiting the capabilities of the hardware where appropriate.
> Ideally, I'll have patches implementing modules for hal integration and
> hopefully 'autocombine' by the end of the summer and would mainly like
> to get your thoughts on the acceptability of said modules for upstream
> inclusion...

We are definitely interested in this stuff. As I said above, HAL
integration was on my TODO list anyway, and the module-combine stuff
is a very nice idea. The "hot" moving of streams between sinks is
something I will do myself and commit in a few weeks.

I am looking forward to your work on PA. If you need any help or have
any questions, ask them on this ML or even better on the IRC channel
#pulseaudio on irc.freenode.org.

If you start working on one of the items (e.g. HAL), please tell me
so, i will mark this in the todo list then.


Lennart Poettering; lennart [at] poettering [dot] net
ICQ# 11060553; GPG 0x1A015CC4; http://0pointer.net/lennart/

More information about the pulseaudio-discuss mailing list