source: Introduce vsource structure

This patch introduces a vsource structure analog to the vsink structure.
The structure will be used for virtual source consolidation.
This commit is contained in:
Georg Chini 2021-01-25 21:57:07 +01:00
parent 95be21c736
commit b6ccb7e76d
5 changed files with 134 additions and 15 deletions

View file

@ -272,7 +272,10 @@ static bool find_paired_master(struct userdata *u, struct filter *filter, pa_obj
}
/* Make sure we're not routing to another instance of
* the same filter. */
filter->source_master = so->source->output_from_master->source;
if (so->source->vsource)
filter->source_master = so->source->vsource->output_from_master->source;
else
filter->source_master = so->source->output_from_master->source;
} else {
filter->source_master = so->source;
}
@ -474,12 +477,18 @@ static void find_filters_for_module(struct userdata *u, pa_module *m, const char
pa_assert(pa_source_is_filter(source));
if (!fltr) {
fltr = filter_new(name, parameters, NULL, source->output_from_master->source);
if (source->vsource)
fltr = filter_new(name, parameters, NULL, source->vsource->output_from_master->source);
else
fltr = filter_new(name, parameters, NULL, source->output_from_master->source);
fltr->module_index = m->index;
fltr->source = source;
} else {
fltr->source = source;
fltr->source_master = source->output_from_master->source;
if (source->vsource)
fltr->source_master = source->vsource->output_from_master->source;
else
fltr->source_master = source->output_from_master->source;
}
break;