mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-05 13:29:57 -05:00
alsa: Set SET_FORMATS flag when appropriate
This commit is contained in:
parent
fb67016844
commit
e25e31fc80
1 changed files with 7 additions and 3 deletions
|
|
@ -1906,7 +1906,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
|
||||||
uint32_t nfrags, frag_size, buffer_size, tsched_size, tsched_watermark, rewind_safeguard;
|
uint32_t nfrags, frag_size, buffer_size, tsched_size, tsched_watermark, rewind_safeguard;
|
||||||
snd_pcm_uframes_t period_frames, buffer_frames, tsched_frames;
|
snd_pcm_uframes_t period_frames, buffer_frames, tsched_frames;
|
||||||
size_t frame_size;
|
size_t frame_size;
|
||||||
pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE, namereg_fail = FALSE, sync_volume = FALSE;
|
pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE, namereg_fail = FALSE, sync_volume = FALSE, set_formats = FALSE;
|
||||||
pa_sink_new_data data;
|
pa_sink_new_data data;
|
||||||
pa_alsa_profile_set *profile_set = NULL;
|
pa_alsa_profile_set *profile_set = NULL;
|
||||||
|
|
||||||
|
|
@ -2076,6 +2076,9 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
|
||||||
if (u->use_tsched)
|
if (u->use_tsched)
|
||||||
pa_log_info("Successfully enabled timer-based scheduling mode.");
|
pa_log_info("Successfully enabled timer-based scheduling mode.");
|
||||||
|
|
||||||
|
if (is_iec958(u) || is_hdmi(u))
|
||||||
|
set_formats = TRUE;
|
||||||
|
|
||||||
/* ALSA might tweak the sample spec, so recalculate the frame size */
|
/* ALSA might tweak the sample spec, so recalculate the frame size */
|
||||||
frame_size = pa_frame_size(&ss);
|
frame_size = pa_frame_size(&ss);
|
||||||
|
|
||||||
|
|
@ -2127,7 +2130,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
|
||||||
if (u->mixer_path_set)
|
if (u->mixer_path_set)
|
||||||
pa_alsa_add_ports(&data.ports, u->mixer_path_set);
|
pa_alsa_add_ports(&data.ports, u->mixer_path_set);
|
||||||
|
|
||||||
u->sink = pa_sink_new(m->core, &data, PA_SINK_HARDWARE|PA_SINK_LATENCY|(u->use_tsched ? PA_SINK_DYNAMIC_LATENCY : 0));
|
u->sink = pa_sink_new(m->core, &data, PA_SINK_HARDWARE | PA_SINK_LATENCY | (u->use_tsched ? PA_SINK_DYNAMIC_LATENCY : 0) |
|
||||||
|
(set_formats ? PA_SINK_SET_FORMATS : 0));
|
||||||
pa_sink_new_data_done(&data);
|
pa_sink_new_data_done(&data);
|
||||||
|
|
||||||
if (!u->sink) {
|
if (!u->sink) {
|
||||||
|
|
@ -2233,7 +2237,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
|
||||||
if ((data.volume_is_set || data.muted_is_set) && u->sink->write_volume)
|
if ((data.volume_is_set || data.muted_is_set) && u->sink->write_volume)
|
||||||
u->sink->write_volume(u->sink);
|
u->sink->write_volume(u->sink);
|
||||||
|
|
||||||
if (is_iec958(u) || is_hdmi(u)) {
|
if (set_formats) {
|
||||||
/* For S/PDIF and HDMI, allow getting/setting custom formats */
|
/* For S/PDIF and HDMI, allow getting/setting custom formats */
|
||||||
pa_format_info *format;
|
pa_format_info *format;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue