mediasoup-client 3.13.0 → 3.14.1
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/Consumer.d.ts.map +1 -1
- package/lib/Consumer.js +3 -0
- package/lib/DataConsumer.d.ts.map +1 -1
- package/lib/DataConsumer.js +8 -8
- package/lib/DataProducer.d.ts.map +1 -1
- package/lib/DataProducer.js +8 -7
- package/lib/Device.d.ts +2 -2
- package/lib/Device.d.ts.map +1 -1
- package/lib/Device.js +53 -70
- package/lib/Producer.d.ts.map +1 -1
- package/lib/Producer.js +3 -0
- package/lib/RtpParameters.d.ts +8 -8
- package/lib/RtpParameters.d.ts.map +1 -1
- package/lib/Transport.d.ts +4 -4
- package/lib/Transport.d.ts.map +1 -1
- package/lib/Transport.js +9 -7
- package/lib/enhancedEvents.d.ts +4 -0
- package/lib/enhancedEvents.d.ts.map +1 -1
- package/lib/enhancedEvents.js +7 -0
- package/lib/handlers/Chrome111.d.ts +13 -13
- package/lib/handlers/Chrome111.d.ts.map +1 -1
- package/lib/handlers/Chrome111.js +175 -124
- package/lib/handlers/Chrome74.d.ts +13 -13
- package/lib/handlers/Chrome74.d.ts.map +1 -1
- package/lib/handlers/Chrome74.js +175 -120
- package/lib/handlers/FakeHandler.d.ts +8 -10
- package/lib/handlers/FakeHandler.d.ts.map +1 -1
- package/lib/handlers/FakeHandler.js +204 -61
- package/lib/handlers/Firefox120.d.ts +13 -13
- package/lib/handlers/Firefox120.d.ts.map +1 -1
- package/lib/handlers/Firefox120.js +200 -147
- package/lib/handlers/HandlerInterface.d.ts +11 -9
- package/lib/handlers/HandlerInterface.d.ts.map +1 -1
- package/lib/handlers/ReactNative106.d.ts +13 -13
- package/lib/handlers/ReactNative106.d.ts.map +1 -1
- package/lib/handlers/ReactNative106.js +181 -127
- package/lib/handlers/Safari12.d.ts +13 -13
- package/lib/handlers/Safari12.d.ts.map +1 -1
- package/lib/handlers/Safari12.js +178 -116
- package/lib/handlers/sdp/MediaSection.d.ts +5 -5
- package/lib/handlers/sdp/MediaSection.d.ts.map +1 -1
- package/lib/handlers/sdp/MediaSection.js +43 -45
- package/lib/handlers/sdp/RemoteSdp.d.ts +5 -6
- package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -1
- package/lib/handlers/sdp/RemoteSdp.js +5 -8
- package/lib/handlers/sdp/commonUtils.d.ts +5 -4
- package/lib/handlers/sdp/commonUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/commonUtils.js +2 -2
- package/lib/handlers/sdp/plainRtpUtils.d.ts +4 -3
- package/lib/handlers/sdp/plainRtpUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/plainRtpUtils.js +2 -2
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts +3 -2
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -1
- package/lib/handlers/sdp/unifiedPlanUtils.js +10 -8
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/ortc.d.ts +7 -6
- package/lib/ortc.d.ts.map +1 -1
- package/lib/ortc.js +13 -14
- package/lib/privateTypes.d.ts +27 -0
- package/lib/privateTypes.d.ts.map +1 -0
- package/lib/privateTypes.js +2 -0
- package/lib/test/test.js +22 -3
- package/lib/utils.d.ts +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +5 -4
- package/package.json +8 -9
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EnhancedEventEmitter } from '../enhancedEvents';
|
|
2
2
|
import type { IceParameters } from '../Transport';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
export declare class Chrome111 extends HandlerInterface {
|
|
3
|
+
import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
|
|
4
|
+
export declare class Chrome111 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
|
|
6
5
|
private _closed;
|
|
7
|
-
private _direction
|
|
8
|
-
private _remoteSdp
|
|
9
|
-
private _sendingRtpParametersByKind
|
|
10
|
-
private _sendingRemoteRtpParametersByKind
|
|
6
|
+
private _direction;
|
|
7
|
+
private _remoteSdp;
|
|
8
|
+
private _sendingRtpParametersByKind;
|
|
9
|
+
private _sendingRemoteRtpParametersByKind;
|
|
11
10
|
private _forcedLocalDtlsRole?;
|
|
12
11
|
private _pc;
|
|
13
12
|
private readonly _mapMidTransceiver;
|
|
@@ -19,12 +18,9 @@ export declare class Chrome111 extends HandlerInterface {
|
|
|
19
18
|
* Creates a factory function.
|
|
20
19
|
*/
|
|
21
20
|
static createFactory(): HandlerFactory;
|
|
22
|
-
constructor();
|
|
21
|
+
private constructor();
|
|
23
22
|
get name(): string;
|
|
24
23
|
close(): void;
|
|
25
|
-
getNativeRtpCapabilities(): Promise<RtpCapabilities>;
|
|
26
|
-
getNativeSctpCapabilities(): Promise<SctpCapabilities>;
|
|
27
|
-
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities, }: HandlerRunOptions): void;
|
|
28
24
|
updateIceServers(iceServers: RTCIceServer[]): Promise<void>;
|
|
29
25
|
restartIce(iceParameters: IceParameters): Promise<void>;
|
|
30
26
|
getTransportStats(): Promise<RTCStatsReport>;
|
|
@@ -34,7 +30,7 @@ export declare class Chrome111 extends HandlerInterface {
|
|
|
34
30
|
resumeSending(localId: string): Promise<void>;
|
|
35
31
|
replaceTrack(localId: string, track: MediaStreamTrack | null): Promise<void>;
|
|
36
32
|
setMaxSpatialLayer(localId: string, spatialLayer: number): Promise<void>;
|
|
37
|
-
setRtpEncodingParameters(localId: string, params:
|
|
33
|
+
setRtpEncodingParameters(localId: string, params: Partial<RTCRtpEncodingParameters>): Promise<void>;
|
|
38
34
|
getSenderStats(localId: string): Promise<RTCStatsReport>;
|
|
39
35
|
sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
|
|
40
36
|
receive(optionsList: HandlerReceiveOptions[]): Promise<HandlerReceiveResult[]>;
|
|
@@ -44,6 +40,10 @@ export declare class Chrome111 extends HandlerInterface {
|
|
|
44
40
|
getReceiverStats(localId: string): Promise<RTCStatsReport>;
|
|
45
41
|
receiveDataChannel({ sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
46
42
|
private setupTransport;
|
|
43
|
+
private onIceGatheringStateChange;
|
|
44
|
+
private onIceCandidateError;
|
|
45
|
+
private onConnectionStateChange;
|
|
46
|
+
private onIceConnectionStateChange;
|
|
47
47
|
private assertNotClosed;
|
|
48
48
|
private assertSendDirection;
|
|
49
49
|
private assertRecvDirection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chrome111.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome111.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Chrome111.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome111.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAMzD,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AAU5D,OAAO,KAAK,EACX,cAAc,EACd,gBAAgB,EAChB,aAAa,EAEb,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAQ5B,qBAAa,SACZ,SAAQ,oBAAoB,CAAC,aAAa,CAC1C,YAAW,gBAAgB;IAG3B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,2BAA2B,CAAsC;IAGzE,OAAO,CAAC,iCAAiC,CAEvC;IAGF,OAAO,CAAC,oBAAoB,CAAC,CAAW;IAExC,OAAO,CAAC,GAAG,CAAoB;IAE/B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CACxB;IAEX,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,OAAO,CAAC,2BAA2B,CAAS;IAE5C,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,eAAe,CAAS;IAEhC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,cAAc;IA2DtC,OAAO;IA6EP,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEQ,KAAK,IAAI,IAAI;IAqChB,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3D,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDvD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAM5C,IAAI,CAAC,EACV,KAAK,EACL,SAAS,EACT,YAAY,EACZ,KAAK,EACL,WAAW,GACX,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmJ5C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqD3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC7C,YAAY,CACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC;IAuBV,kBAAkB,CACvB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAsDV,wBAAwB,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,CAAC,wBAAwB,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAkDV,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAaxD,eAAe,CAAC,EACrB,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,KAAK,EACL,QAAQ,GACR,EAAE,6BAA6B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAuElE,OAAO,CACZ,WAAW,EAAE,qBAAqB,EAAE,GAClC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAmH5B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6ChD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCjD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuClD,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAa1D,kBAAkB,CAAC,EACxB,oBAAoB,EACpB,KAAK,EACL,QAAQ,GACR,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC;YAiEhE,cAAc;IAgC5B,OAAO,CAAC,yBAAyB,CAE/B;IAEF,OAAO,CAAC,mBAAmB,CAIzB;IAEF,OAAO,CAAC,uBAAuB,CAE7B;IAEF,OAAO,CAAC,0BAA0B,CAiChC;IAEF,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;CAO3B"}
|
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Chrome111 = void 0;
|
|
4
4
|
const sdpTransform = require("sdp-transform");
|
|
5
|
+
const enhancedEvents_1 = require("../enhancedEvents");
|
|
5
6
|
const Logger_1 = require("../Logger");
|
|
6
7
|
const utils = require("../utils");
|
|
7
8
|
const ortc = require("../ortc");
|
|
9
|
+
const errors_1 = require("../errors");
|
|
10
|
+
const scalabilityModes_1 = require("../scalabilityModes");
|
|
8
11
|
const sdpCommonUtils = require("./sdp/commonUtils");
|
|
9
12
|
const sdpUnifiedPlanUtils = require("./sdp/unifiedPlanUtils");
|
|
10
13
|
const ortcUtils = require("./ortc/utils");
|
|
11
|
-
const errors_1 = require("../errors");
|
|
12
|
-
const HandlerInterface_1 = require("./HandlerInterface");
|
|
13
14
|
const RemoteSdp_1 = require("./sdp/RemoteSdp");
|
|
14
|
-
const scalabilityModes_1 = require("../scalabilityModes");
|
|
15
15
|
const logger = new Logger_1.Logger('Chrome111');
|
|
16
16
|
const NAME = 'Chrome111';
|
|
17
17
|
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 };
|
|
18
|
-
class Chrome111 extends
|
|
18
|
+
class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
19
19
|
// Closed flag.
|
|
20
20
|
_closed = false;
|
|
21
21
|
// Handler direction.
|
|
@@ -46,75 +46,58 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
46
46
|
* Creates a factory function.
|
|
47
47
|
*/
|
|
48
48
|
static createFactory() {
|
|
49
|
-
return () => new Chrome111();
|
|
50
|
-
}
|
|
51
|
-
constructor() {
|
|
52
|
-
super();
|
|
53
|
-
}
|
|
54
|
-
get name() {
|
|
55
|
-
return NAME;
|
|
56
|
-
}
|
|
57
|
-
close() {
|
|
58
|
-
logger.debug('close()');
|
|
59
|
-
if (this._closed) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
this._closed = true;
|
|
63
|
-
// Close RTCPeerConnection.
|
|
64
|
-
if (this._pc) {
|
|
65
|
-
try {
|
|
66
|
-
this._pc.close();
|
|
67
|
-
}
|
|
68
|
-
catch (error) { }
|
|
69
|
-
}
|
|
70
|
-
this.emit('@close');
|
|
71
|
-
}
|
|
72
|
-
async getNativeRtpCapabilities() {
|
|
73
|
-
logger.debug('getNativeRtpCapabilities()');
|
|
74
|
-
const pc = new RTCPeerConnection({
|
|
75
|
-
iceServers: [],
|
|
76
|
-
iceTransportPolicy: 'all',
|
|
77
|
-
bundlePolicy: 'max-bundle',
|
|
78
|
-
rtcpMuxPolicy: 'require',
|
|
79
|
-
sdpSemantics: 'unified-plan',
|
|
80
|
-
});
|
|
81
|
-
try {
|
|
82
|
-
pc.addTransceiver('audio');
|
|
83
|
-
// Create video transceiver with scalability mode in order to retrieve
|
|
84
|
-
// Dependency Descriptor header extension.
|
|
85
|
-
pc.addTransceiver('video', {
|
|
86
|
-
sendEncodings: [{ scalabilityMode: 'L3T3' }],
|
|
87
|
-
});
|
|
88
|
-
const offer = await pc.createOffer();
|
|
89
|
-
try {
|
|
90
|
-
pc.close();
|
|
91
|
-
}
|
|
92
|
-
catch (error) { }
|
|
93
|
-
const sdpObject = sdpTransform.parse(offer.sdp);
|
|
94
|
-
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
95
|
-
sdpObject,
|
|
96
|
-
});
|
|
97
|
-
// libwebrtc supports NACK for OPUS but doesn't announce it.
|
|
98
|
-
ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
|
|
99
|
-
return nativeRtpCapabilities;
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
try {
|
|
103
|
-
pc.close();
|
|
104
|
-
}
|
|
105
|
-
catch (error2) { }
|
|
106
|
-
throw error;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
async getNativeSctpCapabilities() {
|
|
110
|
-
logger.debug('getNativeSctpCapabilities()');
|
|
111
49
|
return {
|
|
112
|
-
|
|
50
|
+
name: NAME,
|
|
51
|
+
factory: (options) => new Chrome111(options),
|
|
52
|
+
getNativeRtpCapabilities: async () => {
|
|
53
|
+
logger.debug('getNativeRtpCapabilities()');
|
|
54
|
+
let pc = new RTCPeerConnection({
|
|
55
|
+
iceServers: [],
|
|
56
|
+
iceTransportPolicy: 'all',
|
|
57
|
+
bundlePolicy: 'max-bundle',
|
|
58
|
+
rtcpMuxPolicy: 'require',
|
|
59
|
+
});
|
|
60
|
+
try {
|
|
61
|
+
pc.addTransceiver('audio');
|
|
62
|
+
// Create video transceiver with scalability mode in order to retrieve
|
|
63
|
+
// Dependency Descriptor header extension.
|
|
64
|
+
pc.addTransceiver('video', {
|
|
65
|
+
sendEncodings: [{ scalabilityMode: 'L3T3' }],
|
|
66
|
+
});
|
|
67
|
+
const offer = await pc.createOffer();
|
|
68
|
+
try {
|
|
69
|
+
pc.close();
|
|
70
|
+
}
|
|
71
|
+
catch (error) { }
|
|
72
|
+
pc = undefined;
|
|
73
|
+
const sdpObject = sdpTransform.parse(offer.sdp);
|
|
74
|
+
const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
|
|
75
|
+
sdpObject,
|
|
76
|
+
});
|
|
77
|
+
// libwebrtc supports NACK for OPUS but doesn't announce it.
|
|
78
|
+
ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
|
|
79
|
+
return nativeRtpCapabilities;
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
try {
|
|
83
|
+
pc?.close();
|
|
84
|
+
}
|
|
85
|
+
catch (error2) { }
|
|
86
|
+
pc = undefined;
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
getNativeSctpCapabilities: async () => {
|
|
91
|
+
logger.debug('getNativeSctpCapabilities()');
|
|
92
|
+
return {
|
|
93
|
+
numStreams: SCTP_NUM_STREAMS,
|
|
94
|
+
};
|
|
95
|
+
},
|
|
113
96
|
};
|
|
114
97
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
logger.debug('
|
|
98
|
+
constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, extendedRtpCapabilities, }) {
|
|
99
|
+
super();
|
|
100
|
+
logger.debug('constructor()');
|
|
118
101
|
this._direction = direction;
|
|
119
102
|
this._remoteSdp = new RemoteSdp_1.RemoteSdp({
|
|
120
103
|
iceParameters,
|
|
@@ -139,48 +122,39 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
139
122
|
iceTransportPolicy: iceTransportPolicy ?? 'all',
|
|
140
123
|
bundlePolicy: 'max-bundle',
|
|
141
124
|
rtcpMuxPolicy: 'require',
|
|
142
|
-
sdpSemantics: 'unified-plan',
|
|
143
125
|
...additionalSettings,
|
|
144
|
-
}, proprietaryConstraints);
|
|
145
|
-
this._pc.addEventListener('icegatheringstatechange', () => {
|
|
146
|
-
this.emit('@icegatheringstatechange', this._pc.iceGatheringState);
|
|
147
|
-
});
|
|
148
|
-
this._pc.addEventListener('icecandidateerror', (event) => {
|
|
149
|
-
this.emit('@icecandidateerror', event);
|
|
150
126
|
});
|
|
127
|
+
this._pc.addEventListener('icegatheringstatechange', this.onIceGatheringStateChange);
|
|
128
|
+
this._pc.addEventListener('icecandidateerror', this.onIceCandidateError);
|
|
151
129
|
if (this._pc.connectionState) {
|
|
152
|
-
this._pc.addEventListener('connectionstatechange',
|
|
153
|
-
this.emit('@connectionstatechange', this._pc.connectionState);
|
|
154
|
-
});
|
|
130
|
+
this._pc.addEventListener('connectionstatechange', this.onConnectionStateChange);
|
|
155
131
|
}
|
|
156
132
|
else {
|
|
157
133
|
logger.warn('run() | pc.connectionState not supported, using pc.iceConnectionState');
|
|
158
|
-
this._pc.addEventListener('iceconnectionstatechange',
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
case 'disconnected': {
|
|
174
|
-
this.emit('@connectionstatechange', 'disconnected');
|
|
175
|
-
break;
|
|
176
|
-
}
|
|
177
|
-
case 'closed': {
|
|
178
|
-
this.emit('@connectionstatechange', 'closed');
|
|
179
|
-
break;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
});
|
|
134
|
+
this._pc.addEventListener('iceconnectionstatechange', this.onIceConnectionStateChange);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
get name() {
|
|
138
|
+
return NAME;
|
|
139
|
+
}
|
|
140
|
+
close() {
|
|
141
|
+
logger.debug('close()');
|
|
142
|
+
if (this._closed) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
this._closed = true;
|
|
146
|
+
// Close RTCPeerConnection.
|
|
147
|
+
try {
|
|
148
|
+
this._pc.close();
|
|
183
149
|
}
|
|
150
|
+
catch (error) { }
|
|
151
|
+
this._pc.removeEventListener('icegatheringstatechange', this.onIceGatheringStateChange);
|
|
152
|
+
this._pc.removeEventListener('icecandidateerror', this.onIceCandidateError);
|
|
153
|
+
this._pc.removeEventListener('connectionstatechange', this.onConnectionStateChange);
|
|
154
|
+
this._pc.removeEventListener('iceconnectionstatechange', this.onIceConnectionStateChange);
|
|
155
|
+
this.emit('@close');
|
|
156
|
+
// Invoke close() in EnhancedEventEmitter classes.
|
|
157
|
+
super.close();
|
|
184
158
|
}
|
|
185
159
|
async updateIceServers(iceServers) {
|
|
186
160
|
this.assertNotClosed();
|
|
@@ -201,12 +175,18 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
201
175
|
const offer = await this._pc.createOffer({ iceRestart: true });
|
|
202
176
|
logger.debug('restartIce() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
203
177
|
await this._pc.setLocalDescription(offer);
|
|
204
|
-
const answer = {
|
|
178
|
+
const answer = {
|
|
179
|
+
type: 'answer',
|
|
180
|
+
sdp: this._remoteSdp.getSdp(),
|
|
181
|
+
};
|
|
205
182
|
logger.debug('restartIce() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
206
183
|
await this._pc.setRemoteDescription(answer);
|
|
207
184
|
}
|
|
208
185
|
else {
|
|
209
|
-
const offer = {
|
|
186
|
+
const offer = {
|
|
187
|
+
type: 'offer',
|
|
188
|
+
sdp: this._remoteSdp.getSdp(),
|
|
189
|
+
};
|
|
210
190
|
logger.debug('restartIce() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
211
191
|
await this._pc.setRemoteDescription(offer);
|
|
212
192
|
const answer = await this._pc.createAnswer();
|
|
@@ -259,8 +239,6 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
259
239
|
}
|
|
260
240
|
const offer = await this._pc.createOffer();
|
|
261
241
|
let localSdpObject = sdpTransform.parse(offer.sdp);
|
|
262
|
-
// @ts-expect-error --- sdpTransform.SessionDescription type doesn't
|
|
263
|
-
// define extmapAllowMixed field.
|
|
264
242
|
if (localSdpObject.extmapAllowMixed) {
|
|
265
243
|
this._remoteSdp.setSessionExtmapAllowMixed();
|
|
266
244
|
}
|
|
@@ -308,7 +286,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
308
286
|
answerRtpParameters: sendingRemoteRtpParameters,
|
|
309
287
|
codecOptions,
|
|
310
288
|
});
|
|
311
|
-
const answer = {
|
|
289
|
+
const answer = {
|
|
290
|
+
type: 'answer',
|
|
291
|
+
sdp: this._remoteSdp.getSdp(),
|
|
292
|
+
};
|
|
312
293
|
logger.debug('send() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
313
294
|
await this._pc.setRemoteDescription(answer);
|
|
314
295
|
// Store in the map.
|
|
@@ -341,7 +322,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
341
322
|
const offer = await this._pc.createOffer();
|
|
342
323
|
logger.debug('stopSending() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
343
324
|
await this._pc.setLocalDescription(offer);
|
|
344
|
-
const answer = {
|
|
325
|
+
const answer = {
|
|
326
|
+
type: 'answer',
|
|
327
|
+
sdp: this._remoteSdp.getSdp(),
|
|
328
|
+
};
|
|
345
329
|
logger.debug('stopSending() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
346
330
|
await this._pc.setRemoteDescription(answer);
|
|
347
331
|
this._mapMidTransceiver.delete(localId);
|
|
@@ -359,7 +343,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
359
343
|
const offer = await this._pc.createOffer();
|
|
360
344
|
logger.debug('pauseSending() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
361
345
|
await this._pc.setLocalDescription(offer);
|
|
362
|
-
const answer = {
|
|
346
|
+
const answer = {
|
|
347
|
+
type: 'answer',
|
|
348
|
+
sdp: this._remoteSdp.getSdp(),
|
|
349
|
+
};
|
|
363
350
|
logger.debug('pauseSending() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
364
351
|
await this._pc.setRemoteDescription(answer);
|
|
365
352
|
}
|
|
@@ -376,7 +363,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
376
363
|
const offer = await this._pc.createOffer();
|
|
377
364
|
logger.debug('resumeSending() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
378
365
|
await this._pc.setLocalDescription(offer);
|
|
379
|
-
const answer = {
|
|
366
|
+
const answer = {
|
|
367
|
+
type: 'answer',
|
|
368
|
+
sdp: this._remoteSdp.getSdp(),
|
|
369
|
+
};
|
|
380
370
|
logger.debug('resumeSending() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
381
371
|
await this._pc.setRemoteDescription(answer);
|
|
382
372
|
}
|
|
@@ -417,7 +407,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
417
407
|
const offer = await this._pc.createOffer();
|
|
418
408
|
logger.debug('setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
419
409
|
await this._pc.setLocalDescription(offer);
|
|
420
|
-
const answer = {
|
|
410
|
+
const answer = {
|
|
411
|
+
type: 'answer',
|
|
412
|
+
sdp: this._remoteSdp.getSdp(),
|
|
413
|
+
};
|
|
421
414
|
logger.debug('setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
422
415
|
await this._pc.setRemoteDescription(answer);
|
|
423
416
|
}
|
|
@@ -438,7 +431,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
438
431
|
const offer = await this._pc.createOffer();
|
|
439
432
|
logger.debug('setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
440
433
|
await this._pc.setLocalDescription(offer);
|
|
441
|
-
const answer = {
|
|
434
|
+
const answer = {
|
|
435
|
+
type: 'answer',
|
|
436
|
+
sdp: this._remoteSdp.getSdp(),
|
|
437
|
+
};
|
|
442
438
|
logger.debug('setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
443
439
|
await this._pc.setRemoteDescription(answer);
|
|
444
440
|
}
|
|
@@ -472,7 +468,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
472
468
|
if (!this._hasDataChannelMediaSection) {
|
|
473
469
|
const offer = await this._pc.createOffer();
|
|
474
470
|
const localSdpObject = sdpTransform.parse(offer.sdp);
|
|
475
|
-
const offerMediaObject = localSdpObject.media.find(
|
|
471
|
+
const offerMediaObject = localSdpObject.media.find(m => m.type === 'application');
|
|
476
472
|
if (!this._transportReady) {
|
|
477
473
|
await this.setupTransport({
|
|
478
474
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
@@ -482,7 +478,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
482
478
|
logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
483
479
|
await this._pc.setLocalDescription(offer);
|
|
484
480
|
this._remoteSdp.sendSctpAssociation({ offerMediaObject });
|
|
485
|
-
const answer = {
|
|
481
|
+
const answer = {
|
|
482
|
+
type: 'answer',
|
|
483
|
+
sdp: this._remoteSdp.getSdp(),
|
|
484
|
+
};
|
|
486
485
|
logger.debug('sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
487
486
|
await this._pc.setRemoteDescription(answer);
|
|
488
487
|
this._hasDataChannelMediaSection = true;
|
|
@@ -513,7 +512,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
513
512
|
trackId,
|
|
514
513
|
});
|
|
515
514
|
}
|
|
516
|
-
const offer = {
|
|
515
|
+
const offer = {
|
|
516
|
+
type: 'offer',
|
|
517
|
+
sdp: this._remoteSdp.getSdp(),
|
|
518
|
+
};
|
|
517
519
|
logger.debug('receive() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
518
520
|
await this._pc.setRemoteDescription(offer);
|
|
519
521
|
for (const options of optionsList) {
|
|
@@ -534,7 +536,7 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
534
536
|
for (const options of optionsList) {
|
|
535
537
|
const { trackId, rtpParameters } = options;
|
|
536
538
|
const localId = mapLocalId.get(trackId);
|
|
537
|
-
const answerMediaObject = localSdpObject.media.find(
|
|
539
|
+
const answerMediaObject = localSdpObject.media.find(m => String(m.mid) === localId);
|
|
538
540
|
// May need to modify codec parameters in the answer based on codec
|
|
539
541
|
// parameters in the offer.
|
|
540
542
|
sdpCommonUtils.applyCodecParameters({
|
|
@@ -542,7 +544,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
542
544
|
answerMediaObject,
|
|
543
545
|
});
|
|
544
546
|
}
|
|
545
|
-
answer = {
|
|
547
|
+
answer = {
|
|
548
|
+
type: 'answer',
|
|
549
|
+
sdp: sdpTransform.write(localSdpObject),
|
|
550
|
+
};
|
|
546
551
|
if (!this._transportReady) {
|
|
547
552
|
await this.setupTransport({
|
|
548
553
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
@@ -585,7 +590,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
585
590
|
}
|
|
586
591
|
this._remoteSdp.closeMediaSection(transceiver.mid);
|
|
587
592
|
}
|
|
588
|
-
const offer = {
|
|
593
|
+
const offer = {
|
|
594
|
+
type: 'offer',
|
|
595
|
+
sdp: this._remoteSdp.getSdp(),
|
|
596
|
+
};
|
|
589
597
|
logger.debug('stopReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
590
598
|
await this._pc.setRemoteDescription(offer);
|
|
591
599
|
const answer = await this._pc.createAnswer();
|
|
@@ -607,7 +615,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
607
615
|
transceiver.direction = 'inactive';
|
|
608
616
|
this._remoteSdp.pauseMediaSection(localId);
|
|
609
617
|
}
|
|
610
|
-
const offer = {
|
|
618
|
+
const offer = {
|
|
619
|
+
type: 'offer',
|
|
620
|
+
sdp: this._remoteSdp.getSdp(),
|
|
621
|
+
};
|
|
611
622
|
logger.debug('pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
612
623
|
await this._pc.setRemoteDescription(offer);
|
|
613
624
|
const answer = await this._pc.createAnswer();
|
|
@@ -626,7 +637,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
626
637
|
transceiver.direction = 'recvonly';
|
|
627
638
|
this._remoteSdp.resumeReceivingMediaSection(localId);
|
|
628
639
|
}
|
|
629
|
-
const offer = {
|
|
640
|
+
const offer = {
|
|
641
|
+
type: 'offer',
|
|
642
|
+
sdp: this._remoteSdp.getSdp(),
|
|
643
|
+
};
|
|
630
644
|
logger.debug('resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
631
645
|
await this._pc.setRemoteDescription(offer);
|
|
632
646
|
const answer = await this._pc.createAnswer();
|
|
@@ -660,7 +674,10 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
660
674
|
// m=application section.
|
|
661
675
|
if (!this._hasDataChannelMediaSection) {
|
|
662
676
|
this._remoteSdp.receiveSctpAssociation();
|
|
663
|
-
const offer = {
|
|
677
|
+
const offer = {
|
|
678
|
+
type: 'offer',
|
|
679
|
+
sdp: this._remoteSdp.getSdp(),
|
|
680
|
+
};
|
|
664
681
|
logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]', offer);
|
|
665
682
|
await this._pc.setRemoteDescription(offer);
|
|
666
683
|
const answer = await this._pc.createAnswer();
|
|
@@ -695,6 +712,40 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface {
|
|
|
695
712
|
});
|
|
696
713
|
this._transportReady = true;
|
|
697
714
|
}
|
|
715
|
+
onIceGatheringStateChange = () => {
|
|
716
|
+
this.emit('@icegatheringstatechange', this._pc.iceGatheringState);
|
|
717
|
+
};
|
|
718
|
+
onIceCandidateError = (event) => {
|
|
719
|
+
this.emit('@icecandidateerror', event);
|
|
720
|
+
};
|
|
721
|
+
onConnectionStateChange = () => {
|
|
722
|
+
this.emit('@connectionstatechange', this._pc.connectionState);
|
|
723
|
+
};
|
|
724
|
+
onIceConnectionStateChange = () => {
|
|
725
|
+
switch (this._pc.iceConnectionState) {
|
|
726
|
+
case 'checking': {
|
|
727
|
+
this.emit('@connectionstatechange', 'connecting');
|
|
728
|
+
break;
|
|
729
|
+
}
|
|
730
|
+
case 'connected':
|
|
731
|
+
case 'completed': {
|
|
732
|
+
this.emit('@connectionstatechange', 'connected');
|
|
733
|
+
break;
|
|
734
|
+
}
|
|
735
|
+
case 'failed': {
|
|
736
|
+
this.emit('@connectionstatechange', 'failed');
|
|
737
|
+
break;
|
|
738
|
+
}
|
|
739
|
+
case 'disconnected': {
|
|
740
|
+
this.emit('@connectionstatechange', 'disconnected');
|
|
741
|
+
break;
|
|
742
|
+
}
|
|
743
|
+
case 'closed': {
|
|
744
|
+
this.emit('@connectionstatechange', 'closed');
|
|
745
|
+
break;
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
};
|
|
698
749
|
assertNotClosed() {
|
|
699
750
|
if (this._closed) {
|
|
700
751
|
throw new errors_1.InvalidStateError('method called in a closed handler');
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EnhancedEventEmitter } from '../enhancedEvents';
|
|
2
2
|
import type { IceParameters } from '../Transport';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
export declare class Chrome74 extends HandlerInterface {
|
|
3
|
+
import type { HandlerFactory, HandlerEvents, HandlerInterface, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
|
|
4
|
+
export declare class Chrome74 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
|
|
6
5
|
private _closed;
|
|
7
|
-
private _direction
|
|
8
|
-
private _remoteSdp
|
|
9
|
-
private _sendingRtpParametersByKind
|
|
10
|
-
private _sendingRemoteRtpParametersByKind
|
|
6
|
+
private _direction;
|
|
7
|
+
private _remoteSdp;
|
|
8
|
+
private _sendingRtpParametersByKind;
|
|
9
|
+
private _sendingRemoteRtpParametersByKind;
|
|
11
10
|
private _forcedLocalDtlsRole?;
|
|
12
11
|
private _pc;
|
|
13
12
|
private readonly _mapMidTransceiver;
|
|
@@ -19,12 +18,9 @@ export declare class Chrome74 extends HandlerInterface {
|
|
|
19
18
|
* Creates a factory function.
|
|
20
19
|
*/
|
|
21
20
|
static createFactory(): HandlerFactory;
|
|
22
|
-
constructor();
|
|
21
|
+
private constructor();
|
|
23
22
|
get name(): string;
|
|
24
23
|
close(): void;
|
|
25
|
-
getNativeRtpCapabilities(): Promise<RtpCapabilities>;
|
|
26
|
-
getNativeSctpCapabilities(): Promise<SctpCapabilities>;
|
|
27
|
-
run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities, }: HandlerRunOptions): void;
|
|
28
24
|
updateIceServers(iceServers: RTCIceServer[]): Promise<void>;
|
|
29
25
|
restartIce(iceParameters: IceParameters): Promise<void>;
|
|
30
26
|
getTransportStats(): Promise<RTCStatsReport>;
|
|
@@ -34,7 +30,7 @@ export declare class Chrome74 extends HandlerInterface {
|
|
|
34
30
|
resumeSending(localId: string): Promise<void>;
|
|
35
31
|
replaceTrack(localId: string, track: MediaStreamTrack | null): Promise<void>;
|
|
36
32
|
setMaxSpatialLayer(localId: string, spatialLayer: number): Promise<void>;
|
|
37
|
-
setRtpEncodingParameters(localId: string, params:
|
|
33
|
+
setRtpEncodingParameters(localId: string, params: Partial<RTCRtpEncodingParameters>): Promise<void>;
|
|
38
34
|
getSenderStats(localId: string): Promise<RTCStatsReport>;
|
|
39
35
|
sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
|
|
40
36
|
receive(optionsList: HandlerReceiveOptions[]): Promise<HandlerReceiveResult[]>;
|
|
@@ -44,6 +40,10 @@ export declare class Chrome74 extends HandlerInterface {
|
|
|
44
40
|
getReceiverStats(localId: string): Promise<RTCStatsReport>;
|
|
45
41
|
receiveDataChannel({ sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
46
42
|
private setupTransport;
|
|
43
|
+
private onIceGatheringStateChange;
|
|
44
|
+
private onIceCandidateError;
|
|
45
|
+
private onConnectionStateChange;
|
|
46
|
+
private onIceConnectionStateChange;
|
|
47
47
|
private assertNotClosed;
|
|
48
48
|
private assertSendDirection;
|
|
49
49
|
private assertRecvDirection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"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"}
|