mediasoup-client 3.6.47 → 3.6.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Transport.d.ts +3 -0
- package/lib/Transport.d.ts.map +1 -1
- package/lib/Transport.js +110 -39
- package/lib/handlers/Chrome55.d.ts +1 -1
- package/lib/handlers/Chrome55.d.ts.map +1 -1
- package/lib/handlers/Chrome55.js +42 -28
- package/lib/handlers/Chrome67.d.ts +1 -1
- package/lib/handlers/Chrome67.d.ts.map +1 -1
- package/lib/handlers/Chrome67.js +45 -30
- package/lib/handlers/Chrome70.d.ts +1 -1
- package/lib/handlers/Chrome70.d.ts.map +1 -1
- package/lib/handlers/Chrome70.js +42 -29
- package/lib/handlers/Chrome74.d.ts +1 -1
- package/lib/handlers/Chrome74.d.ts.map +1 -1
- package/lib/handlers/Chrome74.js +45 -29
- package/lib/handlers/Edge11.d.ts +1 -1
- package/lib/handlers/Edge11.d.ts.map +1 -1
- package/lib/handlers/Edge11.js +28 -20
- package/lib/handlers/FakeHandler.d.ts +1 -1
- package/lib/handlers/FakeHandler.d.ts.map +1 -1
- package/lib/handlers/FakeHandler.js +13 -10
- package/lib/handlers/Firefox60.d.ts +1 -1
- package/lib/handlers/Firefox60.d.ts.map +1 -1
- package/lib/handlers/Firefox60.js +45 -30
- package/lib/handlers/HandlerInterface.d.ts +1 -1
- package/lib/handlers/HandlerInterface.d.ts.map +1 -1
- package/lib/handlers/ReactNative.d.ts +1 -1
- package/lib/handlers/ReactNative.d.ts.map +1 -1
- package/lib/handlers/ReactNative.js +48 -34
- package/lib/handlers/Safari11.d.ts +1 -1
- package/lib/handlers/Safari11.d.ts.map +1 -1
- package/lib/handlers/Safari11.js +43 -30
- package/lib/handlers/Safari12.d.ts +1 -1
- package/lib/handlers/Safari12.d.ts.map +1 -1
- package/lib/handlers/Safari12.js +42 -29
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/ortc.js +0 -2
- package/package.json +10 -10
- package/src/Transport.ts +162 -58
- package/src/handlers/Chrome55.ts +52 -31
- package/src/handlers/Chrome67.ts +54 -33
- package/src/handlers/Chrome70.ts +52 -32
- package/src/handlers/Chrome74.ts +56 -32
- package/src/handlers/Edge11.ts +39 -25
- package/src/handlers/FakeHandler.ts +18 -10
- package/src/handlers/Firefox60.ts +54 -33
- package/src/handlers/HandlerInterface.ts +2 -2
- package/src/handlers/ReactNative.ts +59 -38
- package/src/handlers/Safari11.ts +54 -33
- package/src/handlers/Safari12.ts +52 -32
- package/src/ortc.ts +0 -2
|
@@ -588,34 +588,40 @@ export class ReactNative extends HandlerInterface
|
|
|
588
588
|
}
|
|
589
589
|
|
|
590
590
|
async receive(
|
|
591
|
-
|
|
592
|
-
): Promise<HandlerReceiveResult>
|
|
591
|
+
optionsList: HandlerReceiveOptions[]
|
|
592
|
+
) : Promise<HandlerReceiveResult[]>
|
|
593
593
|
{
|
|
594
594
|
this._assertRecvDirection();
|
|
595
595
|
|
|
596
|
-
|
|
596
|
+
const results: HandlerReceiveResult[] = [];
|
|
597
597
|
|
|
598
|
-
const
|
|
599
|
-
|
|
600
|
-
|
|
598
|
+
for (const options of optionsList)
|
|
599
|
+
{
|
|
600
|
+
const { trackId, kind, rtpParameters } = options;
|
|
601
601
|
|
|
602
|
-
|
|
603
|
-
// remote tracks. This is because react-native-webrtc does not react on new
|
|
604
|
-
// tracks generated within already existing streams, so force the streamId
|
|
605
|
-
// to be different.
|
|
606
|
-
logger.debug(
|
|
607
|
-
'receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc');
|
|
602
|
+
logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind);
|
|
608
603
|
|
|
609
|
-
|
|
604
|
+
const mid = kind;
|
|
605
|
+
let streamId = rtpParameters.rtcp!.cname!;
|
|
610
606
|
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
streamId
|
|
617
|
-
|
|
618
|
-
}
|
|
607
|
+
// NOTE: In React-Native we cannot reuse the same remote MediaStream for new
|
|
608
|
+
// remote tracks. This is because react-native-webrtc does not react on new
|
|
609
|
+
// tracks generated within already existing streams, so force the streamId
|
|
610
|
+
// to be different.
|
|
611
|
+
logger.debug(
|
|
612
|
+
'receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc');
|
|
613
|
+
|
|
614
|
+
streamId += `-hack-${utils.generateRandomNumber()}`;
|
|
615
|
+
|
|
616
|
+
this._remoteSdp!.receive(
|
|
617
|
+
{
|
|
618
|
+
mid,
|
|
619
|
+
kind,
|
|
620
|
+
offerRtpParameters : rtpParameters,
|
|
621
|
+
streamId,
|
|
622
|
+
trackId
|
|
623
|
+
});
|
|
624
|
+
}
|
|
619
625
|
|
|
620
626
|
const offer = { type: 'offer', sdp: this._remoteSdp!.getSdp() };
|
|
621
627
|
|
|
@@ -627,16 +633,22 @@ export class ReactNative extends HandlerInterface
|
|
|
627
633
|
|
|
628
634
|
let answer = await this._pc.createAnswer();
|
|
629
635
|
const localSdpObject = sdpTransform.parse(answer.sdp);
|
|
630
|
-
const answerMediaObject = localSdpObject.media
|
|
631
|
-
.find((m: any) => String(m.mid) === mid);
|
|
632
636
|
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
637
|
+
for (const options of optionsList)
|
|
638
|
+
{
|
|
639
|
+
const { kind, rtpParameters } = options;
|
|
640
|
+
const mid = kind;
|
|
641
|
+
const answerMediaObject = localSdpObject.media
|
|
642
|
+
.find((m: any) => String(m.mid) === mid);
|
|
643
|
+
|
|
644
|
+
// May need to modify codec parameters in the answer based on codec
|
|
645
|
+
// parameters in the offer.
|
|
646
|
+
sdpCommonUtils.applyCodecParameters(
|
|
647
|
+
{
|
|
648
|
+
offerRtpParameters : rtpParameters,
|
|
649
|
+
answerMediaObject
|
|
650
|
+
});
|
|
651
|
+
}
|
|
640
652
|
|
|
641
653
|
answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
|
|
642
654
|
|
|
@@ -655,17 +667,26 @@ export class ReactNative extends HandlerInterface
|
|
|
655
667
|
|
|
656
668
|
await this._pc.setLocalDescription(answer);
|
|
657
669
|
|
|
658
|
-
const
|
|
659
|
-
|
|
660
|
-
|
|
670
|
+
for (const options of optionsList)
|
|
671
|
+
{
|
|
672
|
+
const { kind, trackId, rtpParameters } = options;
|
|
673
|
+
const localId = trackId;
|
|
674
|
+
const mid = kind;
|
|
675
|
+
const streamId = rtpParameters.rtcp!.cname!;
|
|
676
|
+
const stream = this._pc.getRemoteStreams()
|
|
677
|
+
.find((s: MediaStream) => s.id === streamId);
|
|
678
|
+
const track = stream.getTrackById(localId);
|
|
661
679
|
|
|
662
|
-
|
|
663
|
-
|
|
680
|
+
if (!track)
|
|
681
|
+
throw new Error('remote track not found');
|
|
664
682
|
|
|
665
|
-
|
|
666
|
-
|
|
683
|
+
// Insert into the map.
|
|
684
|
+
this._mapRecvLocalIdInfo.set(localId, { mid, rtpParameters });
|
|
685
|
+
|
|
686
|
+
results.push({ localId, track });
|
|
687
|
+
}
|
|
667
688
|
|
|
668
|
-
return
|
|
689
|
+
return results;
|
|
669
690
|
}
|
|
670
691
|
|
|
671
692
|
async stopReceiving(localId: string): Promise<void>
|
package/src/handlers/Safari11.ts
CHANGED
|
@@ -651,24 +651,30 @@ export class Safari11 extends HandlerInterface
|
|
|
651
651
|
}
|
|
652
652
|
|
|
653
653
|
async receive(
|
|
654
|
-
|
|
655
|
-
): Promise<HandlerReceiveResult>
|
|
654
|
+
optionsList: HandlerReceiveOptions[]
|
|
655
|
+
) : Promise<HandlerReceiveResult[]>
|
|
656
656
|
{
|
|
657
657
|
this._assertRecvDirection();
|
|
658
658
|
|
|
659
|
-
|
|
659
|
+
const results: HandlerReceiveResult[] = [];
|
|
660
660
|
|
|
661
|
-
const
|
|
662
|
-
|
|
661
|
+
for (const options of optionsList)
|
|
662
|
+
{
|
|
663
|
+
const { trackId, kind, rtpParameters } = options;
|
|
663
664
|
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
665
|
+
logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind);
|
|
666
|
+
|
|
667
|
+
const mid = kind;
|
|
668
|
+
|
|
669
|
+
this._remoteSdp!.receive(
|
|
670
|
+
{
|
|
671
|
+
mid,
|
|
672
|
+
kind,
|
|
673
|
+
offerRtpParameters : rtpParameters,
|
|
674
|
+
streamId : rtpParameters.rtcp!.cname!,
|
|
675
|
+
trackId
|
|
676
|
+
});
|
|
677
|
+
}
|
|
672
678
|
|
|
673
679
|
const offer = { type: 'offer', sdp: this._remoteSdp!.getSdp() };
|
|
674
680
|
|
|
@@ -680,16 +686,22 @@ export class Safari11 extends HandlerInterface
|
|
|
680
686
|
|
|
681
687
|
let answer = await this._pc.createAnswer();
|
|
682
688
|
const localSdpObject = sdpTransform.parse(answer.sdp);
|
|
683
|
-
const answerMediaObject = localSdpObject.media
|
|
684
|
-
.find((m: any) => String(m.mid) === mid);
|
|
685
689
|
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
690
|
+
for (const options of optionsList)
|
|
691
|
+
{
|
|
692
|
+
const { kind, rtpParameters } = options;
|
|
693
|
+
const mid = kind;
|
|
694
|
+
const answerMediaObject = localSdpObject.media
|
|
695
|
+
.find((m: any) => String(m.mid) === mid);
|
|
696
|
+
|
|
697
|
+
// May need to modify codec parameters in the answer based on codec
|
|
698
|
+
// parameters in the offer.
|
|
699
|
+
sdpCommonUtils.applyCodecParameters(
|
|
700
|
+
{
|
|
701
|
+
offerRtpParameters : rtpParameters,
|
|
702
|
+
answerMediaObject
|
|
703
|
+
});
|
|
704
|
+
}
|
|
693
705
|
|
|
694
706
|
answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
|
|
695
707
|
|
|
@@ -708,20 +720,29 @@ export class Safari11 extends HandlerInterface
|
|
|
708
720
|
|
|
709
721
|
await this._pc.setLocalDescription(answer);
|
|
710
722
|
|
|
711
|
-
const
|
|
712
|
-
|
|
723
|
+
for (const options of optionsList)
|
|
724
|
+
{
|
|
725
|
+
const { kind, trackId, rtpParameters } = options;
|
|
726
|
+
const mid = kind;
|
|
727
|
+
const localId = trackId;
|
|
713
728
|
|
|
714
|
-
|
|
715
|
-
|
|
729
|
+
const rtpReceiver = this._pc.getReceivers()
|
|
730
|
+
.find((r: RTCRtpReceiver) => r.track && r.track.id === localId);
|
|
716
731
|
|
|
717
|
-
|
|
718
|
-
|
|
732
|
+
if (!rtpReceiver)
|
|
733
|
+
throw new Error('new RTCRtpReceiver not');
|
|
719
734
|
|
|
720
|
-
|
|
721
|
-
localId,
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
735
|
+
// Insert into the map.
|
|
736
|
+
this._mapRecvLocalIdInfo.set(localId, { mid, rtpParameters, rtpReceiver });
|
|
737
|
+
|
|
738
|
+
results.push({
|
|
739
|
+
localId,
|
|
740
|
+
track : rtpReceiver.track,
|
|
741
|
+
rtpReceiver
|
|
742
|
+
});
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
return results;
|
|
725
746
|
}
|
|
726
747
|
|
|
727
748
|
async stopReceiving(localId: string): Promise<void>
|
package/src/handlers/Safari12.ts
CHANGED
|
@@ -603,23 +603,30 @@ export class Safari12 extends HandlerInterface
|
|
|
603
603
|
}
|
|
604
604
|
|
|
605
605
|
async receive(
|
|
606
|
-
|
|
607
|
-
): Promise<HandlerReceiveResult>
|
|
606
|
+
optionsList: HandlerReceiveOptions[]
|
|
607
|
+
) : Promise<HandlerReceiveResult[]>
|
|
608
608
|
{
|
|
609
609
|
this._assertRecvDirection();
|
|
610
610
|
|
|
611
|
-
|
|
611
|
+
const results: HandlerReceiveResult[] = [];
|
|
612
612
|
|
|
613
|
-
const
|
|
613
|
+
for (const options of optionsList)
|
|
614
|
+
{
|
|
615
|
+
const { trackId, kind, rtpParameters } = options;
|
|
614
616
|
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
617
|
+
logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind);
|
|
618
|
+
|
|
619
|
+
const localId = rtpParameters.mid || String(this._mapMidTransceiver.size);
|
|
620
|
+
|
|
621
|
+
this._remoteSdp!.receive(
|
|
622
|
+
{
|
|
623
|
+
mid : localId,
|
|
624
|
+
kind,
|
|
625
|
+
offerRtpParameters : rtpParameters,
|
|
626
|
+
streamId : rtpParameters.rtcp!.cname!,
|
|
627
|
+
trackId
|
|
628
|
+
});
|
|
629
|
+
}
|
|
623
630
|
|
|
624
631
|
const offer = { type: 'offer', sdp: this._remoteSdp!.getSdp() };
|
|
625
632
|
|
|
@@ -631,16 +638,22 @@ export class Safari12 extends HandlerInterface
|
|
|
631
638
|
|
|
632
639
|
let answer = await this._pc.createAnswer();
|
|
633
640
|
const localSdpObject = sdpTransform.parse(answer.sdp);
|
|
634
|
-
const answerMediaObject = localSdpObject.media
|
|
635
|
-
.find((m: any) => String(m.mid) === localId);
|
|
636
641
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
642
|
+
for (const options of optionsList)
|
|
643
|
+
{
|
|
644
|
+
const { rtpParameters } = options;
|
|
645
|
+
const localId = rtpParameters.mid || String(this._mapMidTransceiver.size);
|
|
646
|
+
const answerMediaObject = localSdpObject.media
|
|
647
|
+
.find((m: any) => String(m.mid) === localId);
|
|
648
|
+
|
|
649
|
+
// May need to modify codec parameters in the answer based on codec
|
|
650
|
+
// parameters in the offer.
|
|
651
|
+
sdpCommonUtils.applyCodecParameters(
|
|
652
|
+
{
|
|
653
|
+
offerRtpParameters : rtpParameters,
|
|
654
|
+
answerMediaObject
|
|
655
|
+
});
|
|
656
|
+
}
|
|
644
657
|
|
|
645
658
|
answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
|
|
646
659
|
|
|
@@ -659,20 +672,27 @@ export class Safari12 extends HandlerInterface
|
|
|
659
672
|
|
|
660
673
|
await this._pc.setLocalDescription(answer);
|
|
661
674
|
|
|
662
|
-
const
|
|
663
|
-
|
|
675
|
+
for (const options of optionsList)
|
|
676
|
+
{
|
|
677
|
+
const { rtpParameters } = options;
|
|
678
|
+
const localId = rtpParameters.mid || String(this._mapMidTransceiver.size);
|
|
679
|
+
const transceiver = this._pc.getTransceivers()
|
|
680
|
+
.find((t: RTCRtpTransceiver) => t.mid === localId);
|
|
664
681
|
|
|
665
|
-
|
|
666
|
-
|
|
682
|
+
if (!transceiver)
|
|
683
|
+
throw new Error('new RTCRtpTransceiver not found');
|
|
667
684
|
|
|
668
|
-
|
|
669
|
-
|
|
685
|
+
// Store in the map.
|
|
686
|
+
this._mapMidTransceiver.set(localId, transceiver);
|
|
670
687
|
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
688
|
+
results.push({
|
|
689
|
+
localId,
|
|
690
|
+
track : transceiver.receiver.track,
|
|
691
|
+
rtpReceiver : transceiver.receiver
|
|
692
|
+
});
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
return results;
|
|
676
696
|
}
|
|
677
697
|
|
|
678
698
|
async stopReceiving(localId: string): Promise<void>
|
package/src/ortc.ts
CHANGED
|
@@ -1073,7 +1073,6 @@ function matchCodecs(
|
|
|
1073
1073
|
{
|
|
1074
1074
|
case 'video/h264':
|
|
1075
1075
|
{
|
|
1076
|
-
// If strict matching check profile-level-id.
|
|
1077
1076
|
if (strict)
|
|
1078
1077
|
{
|
|
1079
1078
|
const aPacketizationMode = aCodec.parameters['packetization-mode'] || 0;
|
|
@@ -1117,7 +1116,6 @@ function matchCodecs(
|
|
|
1117
1116
|
|
|
1118
1117
|
case 'video/vp9':
|
|
1119
1118
|
{
|
|
1120
|
-
// If strict matching check profile-id.
|
|
1121
1119
|
if (strict)
|
|
1122
1120
|
{
|
|
1123
1121
|
const aProfileId = aCodec.parameters['profile-id'] || 0;
|