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

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Tue Aug 6 13:21:58 PDT 2013


> Nodes represent the logical routing endpoints. Sinks etc. can expose a
> node, but not all of them do. For example, we want to allow routing one
> input node to multiple output nodes, and this might require a combine
> sink to be created, but this automatic combine sink shouldn't appear as
> a node.
>
>> seems to me that
>> 'nodes' could also mean a change in audio profiles, eg the headset is
>> really an audio codec attribute and routing to the headset isn't
>> necessarily a change of routing within PulseAudio.
>
> The headset would have a port in PulseAudio, and that port would be
> exposed as a node. Routing to that node causes the port to be activated.

So if I have a virtual sink with some sort of processing and I want to 
hear the result on the headset, how does it work? It's not clear to me 
that you can always think in terms of endpoints for routing. Likewise 
for something like acoustic echo cancellation how would you trap the 
echo reference?

>> There are also cases where an output cannot be used because of the setup
>> of another output, eg when it's physically muxed with something else or
>> it depends on a clock defined elsewhere. How are physical constraints
>> reported to the user?
>
> That's a good question. Currently the constraints aren't visible to
> clients. If a UI developer shows up and tells that he/she needs the
> conflict information, then we have to come up with something. It would
> be simple to just attach a list of conflicting nodes to the node
> structure, but I'm afraid the conflicts aren't always that simple.

You have one right there for local outputs, most solutions provide 
access to the headset or to the speaker, not to both. If this simple 
conflict between 'nodes' can't be represented then I wonder how 
practical this solution is.



More information about the pulseaudio-discuss mailing list