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);
|
pa_idxset_free(u->formats, (pa_free2_cb_t) pa_format_info_free2, NULL);
|
||||||
u->formats = pa_idxset_new(NULL, 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_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;
|
return TRUE;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue