From 9ba408415c28c1113291062b4dbb38cf90a3c232 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 27 Jan 2009 00:52:28 +0100 Subject: store requested resampling method in a seperate field and use it when create a new resampler after a move --- src/pulsecore/sink-input.c | 9 ++++----- src/pulsecore/sink-input.h | 2 +- src/pulsecore/source-output.c | 10 +++++----- src/pulsecore/source-output.h | 4 ++-- 4 files changed, 12 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c index e25e0c22..a33d62ff 100644 --- a/src/pulsecore/sink-input.c +++ b/src/pulsecore/sink-input.c @@ -218,8 +218,6 @@ pa_sink_input* pa_sink_input_new( pa_log_warn("Unsupported resampling operation."); return NULL; } - - data->resample_method = pa_resampler_get_method(resampler); } i = pa_msgobject_new(pa_sink_input); @@ -235,7 +233,8 @@ pa_sink_input* pa_sink_input_new( i->sink = data->sink; i->client = data->client; - i->resample_method = data->resample_method; + i->requested_resample_method = data->resample_method; + i->actual_resample_method = resampler ? pa_resampler_get_method(resampler) : PA_RESAMPLER_INVALID; i->sample_spec = data->sample_spec; i->channel_map = data->channel_map; @@ -946,7 +945,7 @@ void pa_sink_input_set_name(pa_sink_input *i, const char *name) { pa_resample_method_t pa_sink_input_get_resample_method(pa_sink_input *i) { pa_sink_input_assert_ref(i); - return i->resample_method; + return i->actual_resample_method; } /* Called from main context */ @@ -1062,7 +1061,7 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest) { i->core->mempool, &i->sample_spec, &i->channel_map, &dest->sample_spec, &dest->channel_map, - i->resample_method, + i->requested_resample_method, ((i->flags & PA_SINK_INPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) | ((i->flags & PA_SINK_INPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) | (i->core->disable_remixing || (i->flags & PA_SINK_INPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0)))) { diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h index a533046b..66ec6136 100644 --- a/src/pulsecore/sink-input.h +++ b/src/pulsecore/sink-input.h @@ -95,7 +95,7 @@ struct pa_sink_input { pa_cvolume volume; pa_bool_t muted; - pa_resample_method_t resample_method; + pa_resample_method_t requested_resample_method, actual_resample_method; /* Returns the chunk of audio data and drops it from the * queue. Returns -1 on failure. Called from IO thread context. If diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c index d4f0367e..1d21ffb6 100644 --- a/src/pulsecore/source-output.c +++ b/src/pulsecore/source-output.c @@ -181,8 +181,6 @@ pa_source_output* pa_source_output_new( pa_log_warn("Unsupported resampling operation."); return NULL; } - - data->resample_method = pa_resampler_get_method(resampler); } o = pa_msgobject_new(pa_source_output); @@ -198,7 +196,9 @@ pa_source_output* pa_source_output_new( o->source = data->source; o->client = data->client; - o->resample_method = data->resample_method; + + o->actual_resample_method = resampler ? pa_resampler_get_method(resampler) : PA_RESAMPLER_INVALID; + o->requested_resample_method = data->resample_method; o->sample_spec = data->sample_spec; o->channel_map = data->channel_map; @@ -628,7 +628,7 @@ pa_bool_t pa_source_output_update_proplist(pa_source_output *o, pa_update_mode_t pa_resample_method_t pa_source_output_get_resample_method(pa_source_output *o) { pa_source_output_assert_ref(o); - return o->resample_method; + return o->actual_resample_method; } /* Called from main context */ @@ -730,7 +730,7 @@ int pa_source_output_finish_move(pa_source_output *o, pa_source *dest) { o->core->mempool, &dest->sample_spec, &dest->channel_map, &o->sample_spec, &o->channel_map, - o->resample_method, + o->requested_resample_method, ((o->flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) | ((o->flags & PA_SOURCE_OUTPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) | (o->core->disable_remixing || (o->flags & PA_SOURCE_OUTPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0)))) { diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h index a27602ec..d60e425d 100644 --- a/src/pulsecore/source-output.h +++ b/src/pulsecore/source-output.h @@ -79,7 +79,7 @@ struct pa_source_output { pa_sample_spec sample_spec; pa_channel_map channel_map; - pa_resample_method_t resample_method; + pa_resample_method_t requested_resample_method, actual_resample_method; /* Pushes a new memchunk into the output. Called from IO thread * context. */ @@ -139,7 +139,7 @@ struct pa_source_output { struct { pa_source_output_state_t state; - pa_bool_t attached; /* True only between ->attach() and ->detach() calls */ + pa_bool_t attached:1; /* True only between ->attach() and ->detach() calls */ pa_sample_spec sample_spec; -- cgit