MT#57719 Use media subscriptions approach in `stream_packet()`

Start using the media subscriptions model
(based on newly introduced `media_subscription` objects)
in scope of `stream_packet()`.

Change-Id: Ia8d9442810c4afc12b00cad8b1a354d66bb5051c
pull/1722/head
Donat Zenichev 2 years ago
parent 2152a90f08
commit 4f8cd655a8

@ -3061,19 +3061,25 @@ out:
unconfirm_sinks(&phc->mp.stream->rtcp_sinks, "peer address unconfirmed");
}
if (phc->unkernelize_subscriptions) {
// XXX optimise this triple loop?
for (GList *l = phc->mp.media->monologue->subscriptions.head; l; l = l->next) {
struct call_subscription *cs = l->data;
struct call_monologue *sub = cs->monologue;
for (unsigned int k = 0; k < sub->medias->len; k++) {
struct call_media *sub_media = sub->medias->pdata[k];
AUTO_CLEANUP(GQueue mls, g_queue_clear) = G_QUEUE_INIT; /* to avoid duplications */
for (GList * sub = phc->mp.media->media_subscriptions.head; sub; sub = sub->next)
{
struct media_subscription * ms = sub->data;
if (!g_queue_find(&mls, ms->monologue)) {
for (unsigned int k = 0; k < ms->monologue->medias->len; k++)
{
struct call_media *sub_media = ms->monologue->medias->pdata[k];
if (!sub_media)
continue;
for (GList *m = sub_media->streams.head; m; m = m->next) {
struct packet_stream *sub_ps = m->data;
__unkernelize(sub_ps, "subscriptions modified");
}
}
g_queue_push_tail(&mls, ms->monologue);
}
}
}

Loading…
Cancel
Save