mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-02-16 22:05:31 -05:00
filter-graph: notify about default numner of in/out
The filter graph has, after parsing, a default number of input and output ports. This is based on the description or the first/last element input and output ports. Pass this information in the properties when we emit the info. Don't use the number of configured input/output ports as the default number of channels in filter-chain because this is only determined after activating the graph. Instead, use the default input/output channels. The result is that when you load filter-chain without any channel layout, it will default to the number of input/outputs of the graph instead of 0. This allows for the node to be visible in the pulseaudio API. Fixes #5084
This commit is contained in:
parent
39dd760c60
commit
ba3e564e34
2 changed files with 49 additions and 23 deletions
|
|
@ -1711,20 +1711,11 @@ static void graph_info(void *object, const struct spa_filter_graph_info *info)
|
|||
{
|
||||
struct impl *impl = object;
|
||||
struct spa_dict *props = info->props;
|
||||
uint32_t i;
|
||||
|
||||
if (impl->capture_info.channels == 0)
|
||||
impl->capture_info.channels = info->n_inputs;
|
||||
if (impl->playback_info.channels == 0)
|
||||
impl->playback_info.channels = info->n_outputs;
|
||||
uint32_t i, val = 0;
|
||||
|
||||
impl->n_inputs = info->n_inputs;
|
||||
impl->n_outputs = info->n_outputs;
|
||||
|
||||
if (impl->capture_info.channels == impl->playback_info.channels) {
|
||||
copy_position(&impl->capture_info, &impl->playback_info);
|
||||
copy_position(&impl->playback_info, &impl->capture_info);
|
||||
}
|
||||
for (i = 0; props && i < props->n_items; i++) {
|
||||
const char *k = props->items[i].key;
|
||||
const char *s = props->items[i].value;
|
||||
|
|
@ -1738,6 +1729,22 @@ static void graph_info(void *object, const struct spa_filter_graph_info *info)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (spa_streq(k, "n_default_inputs") &&
|
||||
impl->capture_info.channels == 0 &&
|
||||
spa_atou32(s, &val, 0)) {
|
||||
pw_log_info("using default inputs %d", val);
|
||||
impl->capture_info.channels = val;
|
||||
}
|
||||
else if (spa_streq(k, "n_default_outputs") &&
|
||||
impl->playback_info.channels == 0 &&
|
||||
spa_atou32(s, &val, 0)) {
|
||||
pw_log_info("using default outputs %d", val);
|
||||
impl->playback_info.channels = val;
|
||||
}
|
||||
}
|
||||
if (impl->capture_info.channels == impl->playback_info.channels) {
|
||||
copy_position(&impl->capture_info, &impl->playback_info);
|
||||
copy_position(&impl->playback_info, &impl->capture_info);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue