From d47f9f4cc8422f352aa8754d5a00ec3caeb6f0ae Mon Sep 17 00:00:00 2001 From: lukasIO Date: Fri, 3 Mar 2023 16:25:31 +0100 Subject: [PATCH 1/4] support setting subscription priority --- src/room/track/RemoteTrackPublication.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/room/track/RemoteTrackPublication.ts b/src/room/track/RemoteTrackPublication.ts index dbaa0089d9..1bbe68af24 100644 --- a/src/room/track/RemoteTrackPublication.ts +++ b/src/room/track/RemoteTrackPublication.ts @@ -24,9 +24,12 @@ export default class RemoteTrackPublication extends TrackPublication { protected fps?: number; + protected priority: number; + constructor(kind: Track.Kind, id: string, name: string, autoSubscribe: boolean | undefined) { super(kind, id, name); this.subscribed = autoSubscribe; + this.priority = 0; // TODO factor in priority that might have been set on the server } /** @@ -60,6 +63,14 @@ export default class RemoteTrackPublication extends TrackPublication { this.emitPermissionUpdateIfChanged(prevPermission); } + setSubscriptionPriority(priority: number) { + this.priority = priority; + } + + get subscriptionPriority() { + return this.priority; + } + get subscriptionStatus(): TrackPublication.SubscriptionStatus { if (this.subscribed === false) { return TrackPublication.SubscriptionStatus.Unsubscribed; @@ -276,6 +287,7 @@ export default class RemoteTrackPublication extends TrackPublication { trackSids: [this.trackSid], disabled: this.disabled, fps: this.fps, + priority: this.priority, }); if (this.videoDimensions) { settings.width = this.videoDimensions.width; From 8ff486c250e20dadae40019b10526995c4c02468 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Mon, 6 Mar 2023 11:10:06 +0100 Subject: [PATCH 2/4] emit track update --- src/room/track/RemoteTrackPublication.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/room/track/RemoteTrackPublication.ts b/src/room/track/RemoteTrackPublication.ts index 1bbe68af24..992aa7c209 100644 --- a/src/room/track/RemoteTrackPublication.ts +++ b/src/room/track/RemoteTrackPublication.ts @@ -65,6 +65,7 @@ export default class RemoteTrackPublication extends TrackPublication { setSubscriptionPriority(priority: number) { this.priority = priority; + this.emitTrackUpdate(); } get subscriptionPriority() { From 84b7f2feaf8a9c61352a8b4ea2c129ca9908f436 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Mon, 6 Mar 2023 11:17:09 +0100 Subject: [PATCH 3/4] add docstring --- src/room/track/RemoteTrackPublication.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/room/track/RemoteTrackPublication.ts b/src/room/track/RemoteTrackPublication.ts index 992aa7c209..ba103ac83f 100644 --- a/src/room/track/RemoteTrackPublication.ts +++ b/src/room/track/RemoteTrackPublication.ts @@ -63,6 +63,10 @@ export default class RemoteTrackPublication extends TrackPublication { this.emitPermissionUpdateIfChanged(prevPermission); } + /** + * In cases where downstream bandwidth is constrained, setting a priority on a RemoteTrackPublication allows to (de-)prioritize specific tracks + * @param priority + */ setSubscriptionPriority(priority: number) { this.priority = priority; this.emitTrackUpdate(); From 7c122830938ee5136e2aa5c4552004e54b8ecd3f Mon Sep 17 00:00:00 2001 From: lukasIO Date: Mon, 6 Mar 2023 11:17:55 +0100 Subject: [PATCH 4/4] remove outtdated comment --- src/room/track/RemoteTrackPublication.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/room/track/RemoteTrackPublication.ts b/src/room/track/RemoteTrackPublication.ts index ba103ac83f..8ffd32e154 100644 --- a/src/room/track/RemoteTrackPublication.ts +++ b/src/room/track/RemoteTrackPublication.ts @@ -29,7 +29,7 @@ export default class RemoteTrackPublication extends TrackPublication { constructor(kind: Track.Kind, id: string, name: string, autoSubscribe: boolean | undefined) { super(kind, id, name); this.subscribed = autoSubscribe; - this.priority = 0; // TODO factor in priority that might have been set on the server + this.priority = 0; } /**