diff --git a/src/modules/module-rtp-sap.c b/src/modules/module-rtp-sap.c index 712a6b643..9c2a69513 100644 --- a/src/modules/module-rtp-sap.c +++ b/src/modules/module-rtp-sap.c @@ -1376,6 +1376,9 @@ static int rule_matched(void *data, const char *location, const char *action, session_new_announce(i->impl, i->node, props); } + else if (i->node && i->node->session && spa_streq(action, "deannounce-stream")) { + session_free(i->node->session); + } return res; } diff --git a/src/modules/module-rtp-sink.c b/src/modules/module-rtp-sink.c index 0edea4e5b..eba3aa3e6 100644 --- a/src/modules/module-rtp-sink.c +++ b/src/modules/module-rtp-sink.c @@ -404,6 +404,13 @@ static void stream_props_changed(struct impl *impl, uint32_t id, const struct sp } pw_properties_setf(impl->stream_props, key, "%d", value_int); items[n_items++] = SPA_DICT_ITEM_INIT(key, pw_properties_get(impl->stream_props, key)); + } else if (spa_streq(key, "sess.sap.announce")) { + if (!value_str) { + pw_log_error("invalid sess.sap.announce"); + break; + } + pw_properties_setf(impl->stream_props, key, "%s", value_str); + items[n_items++] = SPA_DICT_ITEM_INIT(key, pw_properties_get(impl->stream_props, key)); } }