--- src/pulsecore/resampler.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c index 0a3a678..0a235c7 100644 --- a/src/pulsecore/resampler.c +++ b/src/pulsecore/resampler.c @@ -203,6 +203,8 @@ pa_resampler* pa_resampler_new( pa_resample_flags_t flags) { pa_resampler *r = NULL; + unsigned ic; + bool input_is_mono_only; pa_assert(pool); pa_assert(a); @@ -269,6 +271,19 @@ pa_resampler* pa_resampler_new( else if (!pa_channel_map_init_auto(&r->o_cm, r->o_ss.channels, PA_CHANNEL_MAP_DEFAULT)) goto fail; + /* If the input is mono-only, we ignore the NO_REMIX flag, because even if + * remixing is otherwise disabled, it's probably still desirable to be able + * to play mono inputs to non-mono outputs. */ + for (ic = 0; ic < r->i_ss.channels; ic++) { + if (r->i_cm.map[ic] != PA_CHANNEL_POSITION_MONO) { + input_is_mono_only = false; + break; + } + } + + if (input_is_mono_only) + r->flags &= ~PA_RESAMPLER_NO_REMIX; + r->i_fz = pa_frame_size(a); r->o_fz = pa_frame_size(b); -- 1.7.10.4