diff --git a/src/modules/module-combine-sink.c b/src/modules/module-combine-sink.c index 74b5fd416..46aa7602d 100644 --- a/src/modules/module-combine-sink.c +++ b/src/modules/module-combine-sink.c @@ -59,7 +59,8 @@ PA_MODULE_USAGE( "format= " "rate= " "channels= " - "channel_map="); + "channel_map=" + "remix="); #define DEFAULT_SINK_NAME "combined" @@ -79,6 +80,7 @@ static const char* const valid_modargs[] = { "rate", "channels", "channel_map", + "remix", NULL }; @@ -160,6 +162,8 @@ struct userdata { pa_idxset* outputs; /* managed in main context */ + bool remix; + struct { PA_LLIST_HEAD(struct output, active_outputs); /* managed in IO thread context */ pa_atomic_t running; /* we cache that value here, so that every thread can query it cheaply */ @@ -1135,6 +1139,9 @@ static int output_create_sink_input(struct output *o) { data.flags = PA_SINK_INPUT_VARIABLE_RATE|PA_SINK_INPUT_DONT_MOVE|PA_SINK_INPUT_NO_CREATE_ON_SUSPEND; data.origin_sink = u->sink; + if (!u->remix) + data.flags |= PA_SINK_INPUT_NO_REMIX; + pa_sink_input_new(&o->sink_input, u->core, &data); pa_sink_input_new_data_done(&data); @@ -1457,6 +1464,12 @@ int pa__init(pa_module*m) { goto fail; } + u->remix = !m->core->disable_remixing; + if (pa_modargs_get_value_boolean(ma, "remix", &u->remix) < 0) { + pa_log("Invalid boolean remix parameter"); + goto fail; + } + u->resample_method = resample_method; u->outputs = pa_idxset_new(NULL, NULL); u->thread_info.smoother = pa_smoother_new(