diff --git a/modules/module-si-audio-softdsp-endpoint.c b/modules/module-si-audio-softdsp-endpoint.c index aab84086ffaff18b6cae4cdb0605cce5dbe4dd83..5adf5322ecc192518746c2595006e82573c96e24 100644 --- a/modules/module-si-audio-softdsp-endpoint.c +++ b/modules/module-si-audio-softdsp-endpoint.c @@ -52,8 +52,9 @@ si_audio_softdsp_endpoint_get_properties (WpSiEndpoint * item) static guint si_audio_softdsp_endpoint_get_n_streams (WpSiEndpoint * item) { - WpSiAudioSoftdspEndpoint *self = WP_SI_AUDIO_SOFTDSP_ENDPOINT (item); - return self->num_streams; + guint n_streams = wp_session_bin_get_n_children (WP_SESSION_BIN (item)); + /* n_streams includes the adapter; remove it, unless it's the only one */ + return (n_streams > 1) ? (n_streams - 1) : 1; } static WpSiStream * @@ -63,6 +64,9 @@ si_audio_softdsp_endpoint_get_stream (WpSiEndpoint * item, guint index) g_autoptr (WpIterator) it = wp_session_bin_iterate (WP_SESSION_BIN (self)); g_auto (GValue) val = G_VALUE_INIT; + if (wp_session_bin_get_n_children (WP_SESSION_BIN (item)) == 1) + return WP_SI_STREAM (self->adapter); + /* TODO: do not asume the items are always sorted */ guint i = 0; for (; wp_iterator_next (it, &val); g_value_unset (&val)) {