filter-chain: update channels from filter-graph

Add a filter-graph info structure with the number of inputs and outputs
in the graph definition.

Use the input/outputs to update the number of channels on the capture and
playback streams when not explicitly given. Also copy over the positions
when they match the other stream and were not explicitly specified.

Fixes #4404
This commit is contained in:
Wim Taymans 2024-11-15 10:53:45 +01:00
parent 8c59fae42d
commit f261b2f96f
3 changed files with 69 additions and 15 deletions

View file

@ -32,10 +32,24 @@ extern "C" {
#define SPA_VERSION_FILTER_GRAPH 0
struct spa_filter_graph { struct spa_interface iface; };
struct spa_filter_graph_info {
uint32_t n_inputs;
uint32_t n_outputs;
#define SPA_FILTER_GRAPH_CHANGE_MASK_FLAGS (1u<<0)
#define SPA_FILTER_GRAPH_CHANGE_MASK_PROPS (1u<<1)
uint64_t change_mask;
uint64_t flags;
struct spa_dict *props;
};
struct spa_filter_graph_events {
#define SPA_VERSION_FILTER_GRAPH_EVENTS 0
uint32_t version;
void (*info) (void *object, const struct spa_filter_graph_info *info);
void (*apply_props) (void *object, enum spa_direction direction, const struct spa_pod *props);
void (*props_changed) (void *object, enum spa_direction direction);