[pulseaudio-discuss] Moving sources and sinks

Lennart Poettering lennart at poettering.net
Mon May 5 18:28:19 PDT 2008

On Sun, 04.05.08 14:15, Tanu Kaskinen (tanuk at iki.fi) wrote:

> On Sat, May 03, 2008 at 04:48:05PM -0700, Nick Thompson wrote:
> > Given what you say (above) about per device routing not being possible I 
> > think the area I'd like to concentrate on is figuring out how a module 
> > can detect streams as they are being created.  That way it could get the 
> > call in to switch sink input before the stream is started.  So figuring 
> > this out would be a great start.
> This is how I think it might work:
> 1. Register yourself to listen to new sink input events. The
> pa_core structure (core.h) has an array of hooks, each
> corresponding to one type of event. The following will do
> the registration:
> pa_hook_connect(core->hooks[PA_CORE_HOOK_SINK_INPUT_NEW],
>                 my_callback,
>                 my_userdata);
> There the "core" variable is a pointer to pa_core.
> my_callback is a function that gets called when the event
> happens, and my_userdata is pointer to any data you want the
> callback function to have access to.
> 2. Change the destination sink. The callback gets as
> parameters a pointer to pa_core, a pointer to
> pa_sink_input_new_data, and the userdata pointer you gave in
> the registration function. pa_sink_input_new_data has the
> field "sink", which you can set in the callback to be the
> sink you want the sink input to connect to.

This is exactly how it should be done!


Lennart Poettering                        Red Hat, Inc.
lennart [at] poettering [dot] net         ICQ# 11060553
http://0pointer.net/lennart/           GnuPG 0x1A015CC4

More information about the pulseaudio-discuss mailing list