[pulseaudio-discuss] RCF: Public API for managing nodes

David Henningsson david.henningsson at canonical.com
Tue Jul 16 05:01:31 PDT 2013


On 07/13/2013 05:48 PM, Tanu Kaskinen wrote:
> Hi all,
>
> I've written up a proposal for a public API for controlling routing with
> nodes:
> http://www.freedesktop.org/wiki/Software/PulseAudio/RFC/RoutingAPI/
>
> Comments would be very welcome.
>
> Also, if anyone wants to write a proof-of-concept GUI for exercising the
> API, or extend pavucontrol, that would be awesome. I probably won't do
> it.

I've tried to read it through and initially I'm trying to grasp the 
concepts here.

A few points:

  * The docs say "since 5.0", are you really planning that, or given our 
new schedule, should it rather be since 6.0?

  * I also wonder about the basic rules for edges/connections here. Can 
we line them up:
    - Edges are directed (stream flows from node A to node B)
    - A node can have more than one incoming edge (mixes input to single 
output)
    - Can a node have more than one outgoing edge, and how is this then 
handled for playback (clock deviation etc)? Automatic insert of combine 
modules?
    - And recording has the same thing but different, i e, spreading 
data is not a problem but mixing requires clock synchronisation
    - Can there be more than one edge between the same nodes? E g, one 
default connection and one explicit connection? Or how does this work?
    - Can edges have properties, e g, a volume?

  * As for possible node operations, a move operation would be the same 
as a "batched remove + add" operation. Maybe therefore the batch 
solution would be better, i e, the client API inputs an array of node 
operations?

  * The operations on changing the default connections does not make 
sense to me. If the definition for default connections are those made 
automatically by the routing system, if you change them then you broke 
the definition...?

  * Now, streams can be moved using either the new node API or the 
existing stream/sink API. Will either cause consequences for the other, 
e g changing node connections will cause an update event for the sink, 
and changing stream/sink connection will cause update events for the 
relevant nodes?

  * And an bird's eye thought - I was thinking that these nodes were 
something for policy/routing modules primarily. Is a client API the next 
step here?

-- 
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic


More information about the pulseaudio-discuss mailing list