mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-04 13:29:59 -05:00
sink,source: Handle equal default and alternate sample rates
This commit is contained in:
parent
ac469a25c0
commit
59d058dea4
2 changed files with 24 additions and 2 deletions
|
|
@ -285,11 +285,17 @@ pa_sink* pa_sink_new(
|
||||||
|
|
||||||
s->sample_spec = data->sample_spec;
|
s->sample_spec = data->sample_spec;
|
||||||
s->channel_map = data->channel_map;
|
s->channel_map = data->channel_map;
|
||||||
|
s->default_sample_rate = s->sample_spec.rate;
|
||||||
|
|
||||||
if (data->alternate_sample_rate_is_set)
|
if (data->alternate_sample_rate_is_set)
|
||||||
s->alternate_sample_rate = data->alternate_sample_rate;
|
s->alternate_sample_rate = data->alternate_sample_rate;
|
||||||
else
|
else
|
||||||
s->alternate_sample_rate = s->core->alternate_sample_rate;
|
s->alternate_sample_rate = s->core->alternate_sample_rate;
|
||||||
s->default_sample_rate = s->sample_spec.rate;
|
|
||||||
|
if (s->sample_spec.rate == s->alternate_sample_rate) {
|
||||||
|
pa_log_warn("Default and alternate sample rates are the same.");
|
||||||
|
s->alternate_sample_rate = 0;
|
||||||
|
}
|
||||||
|
|
||||||
s->inputs = pa_idxset_new(NULL, NULL);
|
s->inputs = pa_idxset_new(NULL, NULL);
|
||||||
s->n_corked = 0;
|
s->n_corked = 0;
|
||||||
|
|
@ -1335,6 +1341,11 @@ pa_bool_t pa_sink_update_rate(pa_sink *s, uint32_t rate, pa_bool_t passthrough)
|
||||||
uint32_t alternate_rate = s->alternate_sample_rate;
|
uint32_t alternate_rate = s->alternate_sample_rate;
|
||||||
pa_bool_t use_alternate = FALSE;
|
pa_bool_t use_alternate = FALSE;
|
||||||
|
|
||||||
|
if (PA_UNLIKELY(default_rate == alternate_rate)) {
|
||||||
|
pa_log_warn("Default and alternate sample rates are the same.");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (PA_SINK_IS_RUNNING(s->state)) {
|
if (PA_SINK_IS_RUNNING(s->state)) {
|
||||||
pa_log_info("Cannot update rate, SINK_IS_RUNNING, will keep using %u kHz",
|
pa_log_info("Cannot update rate, SINK_IS_RUNNING, will keep using %u kHz",
|
||||||
s->sample_spec.rate);
|
s->sample_spec.rate);
|
||||||
|
|
|
||||||
|
|
@ -251,11 +251,17 @@ pa_source* pa_source_new(
|
||||||
|
|
||||||
s->sample_spec = data->sample_spec;
|
s->sample_spec = data->sample_spec;
|
||||||
s->channel_map = data->channel_map;
|
s->channel_map = data->channel_map;
|
||||||
|
s->default_sample_rate = s->sample_spec.rate;
|
||||||
|
|
||||||
if (data->alternate_sample_rate_is_set)
|
if (data->alternate_sample_rate_is_set)
|
||||||
s->alternate_sample_rate = data->alternate_sample_rate;
|
s->alternate_sample_rate = data->alternate_sample_rate;
|
||||||
else
|
else
|
||||||
s->alternate_sample_rate = s->core->alternate_sample_rate;
|
s->alternate_sample_rate = s->core->alternate_sample_rate;
|
||||||
s->default_sample_rate = s->sample_spec.rate;
|
|
||||||
|
if (s->sample_spec.rate == s->alternate_sample_rate) {
|
||||||
|
pa_log_warn("Default and alternate sample rates are the same.");
|
||||||
|
s->alternate_sample_rate = 0;
|
||||||
|
}
|
||||||
|
|
||||||
s->outputs = pa_idxset_new(NULL, NULL);
|
s->outputs = pa_idxset_new(NULL, NULL);
|
||||||
s->n_corked = 0;
|
s->n_corked = 0;
|
||||||
|
|
@ -929,6 +935,11 @@ pa_bool_t pa_source_update_rate(pa_source *s, uint32_t rate, pa_bool_t passthrou
|
||||||
uint32_t alternate_rate = s->alternate_sample_rate;
|
uint32_t alternate_rate = s->alternate_sample_rate;
|
||||||
pa_bool_t use_alternate = FALSE;
|
pa_bool_t use_alternate = FALSE;
|
||||||
|
|
||||||
|
if (PA_UNLIKELY(default_rate == alternate_rate)) {
|
||||||
|
pa_log_warn("Default and alternate sample rates are the same.");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (PA_SOURCE_IS_RUNNING(s->state)) {
|
if (PA_SOURCE_IS_RUNNING(s->state)) {
|
||||||
pa_log_info("Cannot update rate, SOURCE_IS_RUNNING, will keep using %u kHz",
|
pa_log_info("Cannot update rate, SOURCE_IS_RUNNING, will keep using %u kHz",
|
||||||
s->sample_spec.rate);
|
s->sample_spec.rate);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue