diff options
author | Lennart Poettering <lennart@poettering.net> | 2008-10-07 22:46:18 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2008-10-07 22:46:18 +0200 |
commit | e053fa03f7c7ec161be14af28cab307d4271993b (patch) | |
tree | f7db86e9482f94cf9ee6af991532ae485f9a08cb | |
parent | e1dbc75eb80aefed7e111d857d2f822702d3a730 (diff) |
if the channel map was modified due to PA_SINK_INPUT_FIX_CHANNELS, remap the specified volume properly
-rw-r--r-- | src/pulsecore/sink-input.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c index 6ef1e93d..c65f18a5 100644 --- a/src/pulsecore/sink-input.c +++ b/src/pulsecore/sink-input.c @@ -171,6 +171,8 @@ pa_sink_input* pa_sink_input_new( if (flags & PA_SINK_INPUT_FIX_RATE) data->sample_spec.rate = data->sink->sample_spec.rate; + original_cm = data->channel_map; + if (flags & PA_SINK_INPUT_FIX_CHANNELS) { data->sample_spec.channels = data->sink->sample_spec.channels; data->channel_map = data->sink->channel_map; @@ -180,8 +182,7 @@ pa_sink_input* pa_sink_input_new( pa_assert(pa_channel_map_valid(&data->channel_map)); /* Due to the fixing of the sample spec the volume might not match anymore */ - if (data->volume.channels != data->sample_spec.channels) - pa_cvolume_set(&data->volume, data->sample_spec.channels, pa_cvolume_avg(&data->volume)); + pa_cvolume_remap(&data->volume, &original_cm, &data->channel_map); if (data->resample_method == PA_RESAMPLER_INVALID) data->resample_method = core->resample_method; |