From: Arun Raghavan Date: Mon, 17 Oct 2011 14:33:52 +0000 (+0530) Subject: sink,source: Handle equal default and alternate sample rates X-Git-Tag: v1.99.1~233 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=59d058dea4600f0987202e0ef4b50ab925f756d7;p=platform%2Fupstream%2Fpulseaudio.git sink,source: Handle equal default and alternate sample rates --- diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c index f3b78a5..5ca2453 100644 --- a/src/pulsecore/sink.c +++ b/src/pulsecore/sink.c @@ -285,11 +285,17 @@ pa_sink* pa_sink_new( s->sample_spec = data->sample_spec; s->channel_map = data->channel_map; + s->default_sample_rate = s->sample_spec.rate; + if (data->alternate_sample_rate_is_set) s->alternate_sample_rate = data->alternate_sample_rate; else 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->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; 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)) { pa_log_info("Cannot update rate, SINK_IS_RUNNING, will keep using %u kHz", s->sample_spec.rate); diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c index 444d587..e70e446 100644 --- a/src/pulsecore/source.c +++ b/src/pulsecore/source.c @@ -251,11 +251,17 @@ pa_source* pa_source_new( s->sample_spec = data->sample_spec; s->channel_map = data->channel_map; + s->default_sample_rate = s->sample_spec.rate; + if (data->alternate_sample_rate_is_set) s->alternate_sample_rate = data->alternate_sample_rate; else 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->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; 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)) { pa_log_info("Cannot update rate, SOURCE_IS_RUNNING, will keep using %u kHz", s->sample_spec.rate);