|
|
@@ -108,6 +108,25 @@ export class TPCUtils {
|
|
108
|
108
|
];
|
|
109
|
109
|
}
|
|
110
|
110
|
|
|
|
111
|
+ /**
|
|
|
112
|
+ * Updates the sender parameters in the stream encodings.
|
|
|
113
|
+ *
|
|
|
114
|
+ * @param {RTCRtpSender} sender - the sender associated with a MediaStreamTrack.
|
|
|
115
|
+ * @param {boolean} enable - whether the streams needs to be enabled or disabled.
|
|
|
116
|
+ * @returns {Promise} - A promise that resolves when the operation is successful, rejected otherwise.
|
|
|
117
|
+ */
|
|
|
118
|
+ _updateSenderEncodings(sender, enable) {
|
|
|
119
|
+ const parameters = sender.getParameters();
|
|
|
120
|
+
|
|
|
121
|
+ if (parameters?.encodings?.length) {
|
|
|
122
|
+ for (const encoding of parameters.encodings) {
|
|
|
123
|
+ encoding.active = enable;
|
|
|
124
|
+ }
|
|
|
125
|
+ }
|
|
|
126
|
+
|
|
|
127
|
+ return sender.setParameters(parameters);
|
|
|
128
|
+ }
|
|
|
129
|
+
|
|
111
|
130
|
/**
|
|
112
|
131
|
* Ensures that the ssrcs associated with a FID ssrc-group appear in the correct order, i.e.,
|
|
113
|
132
|
* the primary ssrc first and the secondary rtx ssrc later. This is important for unified
|
|
|
@@ -485,13 +504,12 @@ export class TPCUtils {
|
|
485
|
504
|
return Promise.resolve();
|
|
486
|
505
|
}
|
|
487
|
506
|
parameters.encodings = this._getStreamEncodings(track);
|
|
488
|
|
- const promise = transceiver.sender.setParameters(parameters);
|
|
489
|
507
|
|
|
490
|
508
|
if (mediaType === MediaType.VIDEO) {
|
|
491
|
|
- return this.pc._updateVideoSenderParameters(promise);
|
|
|
509
|
+ return this.pc._updateVideoSenderParameters(() => transceiver.sender.setParameters(parameters));
|
|
492
|
510
|
}
|
|
493
|
511
|
|
|
494
|
|
- return promise;
|
|
|
512
|
+ return transceiver.sender.setParameters(parameters);
|
|
495
|
513
|
}
|
|
496
|
514
|
|
|
497
|
515
|
/**
|
|
|
@@ -512,19 +530,10 @@ export class TPCUtils {
|
|
512
|
530
|
const promises = [];
|
|
513
|
531
|
|
|
514
|
532
|
for (const sender of senders) {
|
|
515
|
|
- const parameters = sender.getParameters();
|
|
516
|
|
-
|
|
517
|
|
- if (parameters?.encodings?.length) {
|
|
518
|
|
- for (const encoding of parameters.encodings) {
|
|
519
|
|
- encoding.active = enable;
|
|
520
|
|
- }
|
|
521
|
|
- }
|
|
522
|
|
- const setActivePromise = sender.setParameters(parameters);
|
|
523
|
|
-
|
|
524
|
533
|
if (sender.track.kind === MediaType.VIDEO) {
|
|
525
|
|
- promises.push(this.pc._updateVideoSenderParameters(setActivePromise));
|
|
|
534
|
+ promises.push(this.pc._updateVideoSenderParameters(() => this._updateSenderEncodings(sender, enable)));
|
|
526
|
535
|
} else {
|
|
527
|
|
- promises.push(setActivePromise);
|
|
|
536
|
+ promises.push(this._updateSenderEncodings(sender, enable));
|
|
528
|
537
|
}
|
|
529
|
538
|
}
|
|
530
|
539
|
|