[pulseaudio-discuss] [RFC] Passthrough support
arun.raghavan at collabora.co.uk
Sun Feb 27 22:00:08 PST 2011
On Tue, 2011-02-22 at 22:52 +0200, Tanu Kaskinen wrote:
> The set of parameters can potentially grow forever - we don't know what
> parameters may become relevant in the future. So, I think we should
> start by documenting the parameters that we know are important today,
> and define the approach for adding new parameters in the future.
> When thinking about handling unknown parameters, there are four cases
> that need to be considered:
> 1) A sink has a parameter that a client doesn't understand.
> 2) A source has a parameter that a client doesn't understand.
> 3) A playback stream has a parameter that a server doesn't understand.
> 4) A record stream has a parameter that a server doesn't understand.
> The cases 2 and 3 should be easy - if the receiver of the data doesn't
> understand a parameter, it means that it doesn't care. The unknown
> parameter can be just ignored by the negotiation logic, and the final
> format should have that parameter removed from the proplist.
> Cases 1 and 4 are more difficult. One possibility would be to fail the
> negotiation in such case. That would require that the sender always
> specifies explicitly all parameters that it knows about, even if it can
> support anything (IIRC I suggested earlier that a missing parameter
> would mean that everything is supported).
> Another possibility would be to try anyway, and the receiver would then
> kill the stream if the actual payload wasn't satisfactory. What should
> the negotiation logic do in this case? If the unknown parameter is a
> fixed value, the parameter should probably be left in the final format
> proplist. What if the unknown parameter is a range or a list? Maybe the
> negotiation logic should in this case leave the parameter untouched in
> the final format proplist.
> I don't know which approach I like more. The first approach (failing)
> would be "cleaner", but the second approach (trying anyway) would work
> in more cases.
I prefer failing if the pa_stream's properties are not a subset of the
properties specified by the sink/source. As Pierre mentions, in the
foreseeable we're going to be dealing with a limited number of
properties (rate, channels, 2-3 codec parameters), so this approach will
work until the requirements change in some fundamental way.
More information about the pulseaudio-discuss