mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
alsa: Give compressed formats preference over PCM
This makes set_formats() put PCM formats lower down the list than compressed formats since we negotiate by picking the first format in this list that is also in the client-provided list of possible formats during sink input creation. This will be incorrect if we ever decide to do encoding in PA (for things like AC3/DTS encoding for multichannel output over S/PDIF).
This commit is contained in:
parent
d71a291721
commit
4e5943b6ba
1 changed files with 13 additions and 1 deletions
|
|
@ -1534,8 +1534,20 @@ static pa_bool_t sink_set_formats(pa_sink *s, pa_idxset *formats) {
|
|||
pa_idxset_free(u->formats, (pa_free2_cb_t) pa_format_info_free2, NULL);
|
||||
u->formats = pa_idxset_new(NULL, NULL);
|
||||
|
||||
/* Note: the logic below won't apply if we're using software encoding.
|
||||
* This is fine for now since we don't support that via the passthrough
|
||||
* framework, but this must be changed if we do. */
|
||||
|
||||
/* First insert non-PCM formats since we prefer those. */
|
||||
PA_IDXSET_FOREACH(f, formats, idx) {
|
||||
pa_idxset_put(u->formats, pa_format_info_copy(f), NULL);
|
||||
if (!pa_format_info_is_pcm(f))
|
||||
pa_idxset_put(u->formats, pa_format_info_copy(f), NULL);
|
||||
}
|
||||
|
||||
/* Now add any PCM formats */
|
||||
PA_IDXSET_FOREACH(f, formats, idx) {
|
||||
if (pa_format_info_is_pcm(f))
|
||||
pa_idxset_put(u->formats, pa_format_info_copy(f), NULL);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue