mediasoup-client 3.6.89 → 3.6.90

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.
Files changed (125) hide show
  1. package/lib/index.d.ts +1435 -14
  2. package/lib/index.js +11884 -43
  3. package/lib/index.js.map +1 -0
  4. package/lib/index.mjs +11860 -0
  5. package/lib/index.mjs.map +1 -0
  6. package/npm-scripts.mjs +17 -11
  7. package/package.json +12 -8
  8. package/lib/Consumer.d.ts +0 -115
  9. package/lib/Consumer.d.ts.map +0 -1
  10. package/lib/Consumer.js +0 -190
  11. package/lib/DataConsumer.d.ts +0 -93
  12. package/lib/DataConsumer.d.ts.map +0 -1
  13. package/lib/DataConsumer.js +0 -162
  14. package/lib/DataProducer.d.ts +0 -97
  15. package/lib/DataProducer.d.ts.map +0 -1
  16. package/lib/DataProducer.js +0 -180
  17. package/lib/Device.d.ts +0 -92
  18. package/lib/Device.d.ts.map +0 -1
  19. package/lib/Device.js +0 -464
  20. package/lib/EnhancedEventEmitter.d.ts +0 -24
  21. package/lib/EnhancedEventEmitter.d.ts.map +0 -1
  22. package/lib/EnhancedEventEmitter.js +0 -70
  23. package/lib/Logger.d.ts +0 -11
  24. package/lib/Logger.d.ts.map +0 -1
  25. package/lib/Logger.js +0 -37
  26. package/lib/Producer.d.ts +0 -169
  27. package/lib/Producer.d.ts.map +0 -1
  28. package/lib/Producer.js +0 -287
  29. package/lib/RtpParameters.d.ts +0 -306
  30. package/lib/RtpParameters.d.ts.map +0 -1
  31. package/lib/RtpParameters.js +0 -6
  32. package/lib/SctpParameters.d.ts +0 -68
  33. package/lib/SctpParameters.d.ts.map +0 -1
  34. package/lib/SctpParameters.js +0 -2
  35. package/lib/Transport.d.ts +0 -243
  36. package/lib/Transport.d.ts.map +0 -1
  37. package/lib/Transport.js +0 -824
  38. package/lib/errors.d.ts +0 -13
  39. package/lib/errors.d.ts.map +0 -1
  40. package/lib/errors.js +0 -39
  41. package/lib/handlers/Chrome111.d.ts +0 -49
  42. package/lib/handlers/Chrome111.d.ts.map +0 -1
  43. package/lib/handlers/Chrome111.js +0 -658
  44. package/lib/handlers/Chrome55.d.ts +0 -51
  45. package/lib/handlers/Chrome55.d.ts.map +0 -1
  46. package/lib/handlers/Chrome55.js +0 -542
  47. package/lib/handlers/Chrome67.d.ts +0 -51
  48. package/lib/handlers/Chrome67.d.ts.map +0 -1
  49. package/lib/handlers/Chrome67.js +0 -598
  50. package/lib/handlers/Chrome70.d.ts +0 -49
  51. package/lib/handlers/Chrome70.d.ts.map +0 -1
  52. package/lib/handlers/Chrome70.js +0 -627
  53. package/lib/handlers/Chrome74.d.ts +0 -49
  54. package/lib/handlers/Chrome74.d.ts.map +0 -1
  55. package/lib/handlers/Chrome74.js +0 -675
  56. package/lib/handlers/Edge11.d.ts +0 -55
  57. package/lib/handlers/Edge11.d.ts.map +0 -1
  58. package/lib/handlers/Edge11.js +0 -447
  59. package/lib/handlers/FakeHandler.d.ts +0 -49
  60. package/lib/handlers/FakeHandler.d.ts.map +0 -1
  61. package/lib/handlers/FakeHandler.js +0 -276
  62. package/lib/handlers/Firefox60.d.ts +0 -48
  63. package/lib/handlers/Firefox60.d.ts.map +0 -1
  64. package/lib/handlers/Firefox60.js +0 -681
  65. package/lib/handlers/HandlerInterface.d.ts +0 -97
  66. package/lib/handlers/HandlerInterface.d.ts.map +0 -1
  67. package/lib/handlers/HandlerInterface.js +0 -10
  68. package/lib/handlers/ReactNative.d.ts +0 -51
  69. package/lib/handlers/ReactNative.d.ts.map +0 -1
  70. package/lib/handlers/ReactNative.js +0 -558
  71. package/lib/handlers/ReactNativeUnifiedPlan.d.ts +0 -49
  72. package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +0 -1
  73. package/lib/handlers/ReactNativeUnifiedPlan.js +0 -694
  74. package/lib/handlers/Safari11.d.ts +0 -51
  75. package/lib/handlers/Safari11.d.ts.map +0 -1
  76. package/lib/handlers/Safari11.js +0 -592
  77. package/lib/handlers/Safari12.d.ts +0 -49
  78. package/lib/handlers/Safari12.d.ts.map +0 -1
  79. package/lib/handlers/Safari12.js +0 -648
  80. package/lib/handlers/ortc/edgeUtils.d.ts +0 -11
  81. package/lib/handlers/ortc/edgeUtils.d.ts.map +0 -1
  82. package/lib/handlers/ortc/edgeUtils.js +0 -86
  83. package/lib/handlers/ortc/utils.d.ts +0 -6
  84. package/lib/handlers/ortc/utils.d.ts.map +0 -1
  85. package/lib/handlers/ortc/utils.js +0 -20
  86. package/lib/handlers/sdp/MediaSection.d.ts +0 -68
  87. package/lib/handlers/sdp/MediaSection.d.ts.map +0 -1
  88. package/lib/handlers/sdp/MediaSection.js +0 -589
  89. package/lib/handlers/sdp/RemoteSdp.d.ts +0 -75
  90. package/lib/handlers/sdp/RemoteSdp.d.ts.map +0 -1
  91. package/lib/handlers/sdp/RemoteSdp.js +0 -303
  92. package/lib/handlers/sdp/commonUtils.d.ts +0 -24
  93. package/lib/handlers/sdp/commonUtils.d.ts.map +0 -1
  94. package/lib/handlers/sdp/commonUtils.js +0 -224
  95. package/lib/handlers/sdp/plainRtpUtils.d.ts +0 -14
  96. package/lib/handlers/sdp/plainRtpUtils.d.ts.map +0 -1
  97. package/lib/handlers/sdp/plainRtpUtils.js +0 -33
  98. package/lib/handlers/sdp/planBUtils.d.ts +0 -14
  99. package/lib/handlers/sdp/planBUtils.d.ts.map +0 -1
  100. package/lib/handlers/sdp/planBUtils.js +0 -155
  101. package/lib/handlers/sdp/unifiedPlanUtils.d.ts +0 -12
  102. package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +0 -1
  103. package/lib/handlers/sdp/unifiedPlanUtils.js +0 -131
  104. package/lib/index.d.ts.map +0 -1
  105. package/lib/ortc.d.ts +0 -123
  106. package/lib/ortc.d.ts.map +0 -1
  107. package/lib/ortc.js +0 -943
  108. package/lib/scalabilityModes.d.ts +0 -6
  109. package/lib/scalabilityModes.d.ts.map +0 -1
  110. package/lib/scalabilityModes.js +0 -20
  111. package/lib/tests/fakeParameters.d.ts +0 -20
  112. package/lib/tests/fakeParameters.d.ts.map +0 -1
  113. package/lib/tests/fakeParameters.js +0 -659
  114. package/lib/tests/test.d.ts +0 -6
  115. package/lib/tests/test.d.ts.map +0 -1
  116. package/lib/tests/test.js +0 -1297
  117. package/lib/tests/uaTestCases.d.ts +0 -9
  118. package/lib/tests/uaTestCases.d.ts.map +0 -1
  119. package/lib/tests/uaTestCases.js +0 -85
  120. package/lib/types.d.ts +0 -15
  121. package/lib/types.d.ts.map +0 -1
  122. package/lib/types.js +0 -26
  123. package/lib/utils.d.ts +0 -9
  124. package/lib/utils.d.ts.map +0 -1
  125. package/lib/utils.js +0 -20
@@ -1,55 +0,0 @@
1
- import { HandlerFactory, HandlerInterface, HandlerRunOptions, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
2
- import { IceParameters } from '../Transport';
3
- import { RtpCapabilities } from '../RtpParameters';
4
- import { SctpCapabilities } from '../SctpParameters';
5
- export declare class Edge11 extends HandlerInterface {
6
- private _sendingRtpParametersByKind?;
7
- private _remoteIceParameters?;
8
- private _remoteIceCandidates?;
9
- private _remoteDtlsParameters?;
10
- private _iceGatherer?;
11
- private _iceTransport?;
12
- private _dtlsTransport?;
13
- private readonly _rtpSenders;
14
- private readonly _rtpReceivers;
15
- private _nextSendLocalId;
16
- private _cname?;
17
- private _transportReady;
18
- /**
19
- * Creates a factory function.
20
- */
21
- static createFactory(): HandlerFactory;
22
- constructor();
23
- get name(): string;
24
- close(): void;
25
- getNativeRtpCapabilities(): Promise<RtpCapabilities>;
26
- getNativeSctpCapabilities(): Promise<SctpCapabilities>;
27
- run({ direction, // eslint-disable-line @typescript-eslint/no-unused-vars
28
- iceParameters, iceCandidates, dtlsParameters, sctpParameters, // eslint-disable-line @typescript-eslint/no-unused-vars
29
- iceServers, iceTransportPolicy, additionalSettings, // eslint-disable-line @typescript-eslint/no-unused-vars
30
- proprietaryConstraints, // eslint-disable-line @typescript-eslint/no-unused-vars
31
- extendedRtpCapabilities }: HandlerRunOptions): void;
32
- updateIceServers(iceServers: RTCIceServer[]): Promise<void>;
33
- restartIce(iceParameters: IceParameters): Promise<void>;
34
- getTransportStats(): Promise<RTCStatsReport>;
35
- send({ track, encodings, codecOptions, codec }: HandlerSendOptions): Promise<HandlerSendResult>;
36
- stopSending(localId: string): Promise<void>;
37
- pauseSending(localId: string): Promise<void>;
38
- resumeSending(localId: string): Promise<void>;
39
- replaceTrack(localId: string, track: MediaStreamTrack | null): Promise<void>;
40
- setMaxSpatialLayer(localId: string, spatialLayer: number): Promise<void>;
41
- setRtpEncodingParameters(localId: string, params: any): Promise<void>;
42
- getSenderStats(localId: string): Promise<RTCStatsReport>;
43
- sendDataChannel(options: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
44
- receive(optionsList: HandlerReceiveOptions[]): Promise<HandlerReceiveResult[]>;
45
- stopReceiving(localIds: string[]): Promise<void>;
46
- pauseReceiving(localIds: string[]): Promise<void>;
47
- resumeReceiving(localIds: string[]): Promise<void>;
48
- getReceiverStats(localId: string): Promise<RTCStatsReport>;
49
- receiveDataChannel(options: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
50
- private setIceGatherer;
51
- private setIceTransport;
52
- private setDtlsTransport;
53
- private setupTransport;
54
- }
55
- //# sourceMappingURL=Edge11.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Edge11.d.ts","sourceRoot":"","sources":["../../src/handlers/Edge11.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,aAAa,EAIb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAiB,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIrD,qBAAa,MAAO,SAAQ,gBAAgB;IAG3C,OAAO,CAAC,2BAA2B,CAAC,CAAmC;IAEvE,OAAO,CAAC,oBAAoB,CAAC,CAAgB;IAE7C,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAE9C,OAAO,CAAC,qBAAqB,CAAC,CAAiB;IAE/C,OAAO,CAAC,YAAY,CAAC,CAAM;IAE3B,OAAO,CAAC,aAAa,CAAC,CAAM;IAE5B,OAAO,CAAC,cAAc,CAAC,CAAM;IAE7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IAEpE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IAExE,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO,CAAC,MAAM,CAAC,CAAS;IAExB,OAAO,CAAC,eAAe,CAAS;IAEhC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,cAAc;;IAUtC,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,KAAK,IAAI,IAAI;IAkCP,wBAAwB,IAAI,OAAO,CAAC,eAAe,CAAC;IAOpD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAS5D,GAAG,CACF,EACC,SAAS,EAAE,wDAAwD;IACnE,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EAAE,wDAAwD;IACxE,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAAE,wDAAwD;IAC5E,sBAAsB,EAAE,wDAAwD;IAChF,uBAAuB,EACvB,EAAE,iBAAiB,GAClB,IAAI;IAqBD,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBvD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAK5C,IAAI,CAET,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,kBAAkB,GAC3D,OAAO,CAAC,iBAAiB,CAAC;IAiEvB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,YAAY,CACjB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7C,OAAO,CAAC,IAAI,CAAC;IAsBV,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BxE,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBrE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAYxD,eAAe,CAEpB,OAAO,EAAE,6BAA6B,GACpC,OAAO,CAAC,4BAA4B,CAAC;IAKlC,OAAO,CACZ,WAAW,EAAE,qBAAqB,EAAE,GACjC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAuD7B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BhD,cAAc,CAEnB,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7B,eAAe,CAEpB,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7B,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAY1D,kBAAkB,CAEvB,OAAO,EAAE,gCAAgC,GACvC,OAAO,CAAC,+BAA+B,CAAC;IAK3C,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,eAAe;IA6DvB,OAAO,CAAC,gBAAgB;YA+BV,cAAc;CAuD5B"}
@@ -1,447 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Edge11 = void 0;
27
- const Logger_1 = require("../Logger");
28
- const errors_1 = require("../errors");
29
- const utils = __importStar(require("../utils"));
30
- const ortc = __importStar(require("../ortc"));
31
- const edgeUtils = __importStar(require("./ortc/edgeUtils"));
32
- const HandlerInterface_1 = require("./HandlerInterface");
33
- const logger = new Logger_1.Logger('Edge11');
34
- class Edge11 extends HandlerInterface_1.HandlerInterface {
35
- /**
36
- * Creates a factory function.
37
- */
38
- static createFactory() {
39
- return () => new Edge11();
40
- }
41
- constructor() {
42
- super();
43
- // Map of RTCRtpSenders indexed by id.
44
- this._rtpSenders = new Map();
45
- // Map of RTCRtpReceivers indexed by id.
46
- this._rtpReceivers = new Map();
47
- // Next localId for sending tracks.
48
- this._nextSendLocalId = 0;
49
- // Got transport local and remote parameters.
50
- this._transportReady = false;
51
- }
52
- get name() {
53
- return 'Edge11';
54
- }
55
- close() {
56
- logger.debug('close()');
57
- // Close the ICE gatherer.
58
- // NOTE: Not yet implemented by Edge.
59
- try {
60
- this._iceGatherer.close();
61
- }
62
- catch (error) { }
63
- // Close the ICE transport.
64
- try {
65
- this._iceTransport.stop();
66
- }
67
- catch (error) { }
68
- // Close the DTLS transport.
69
- try {
70
- this._dtlsTransport.stop();
71
- }
72
- catch (error) { }
73
- // Close RTCRtpSenders.
74
- for (const rtpSender of this._rtpSenders.values()) {
75
- try {
76
- rtpSender.stop();
77
- }
78
- catch (error) { }
79
- }
80
- // Close RTCRtpReceivers.
81
- for (const rtpReceiver of this._rtpReceivers.values()) {
82
- try {
83
- rtpReceiver.stop();
84
- }
85
- catch (error) { }
86
- }
87
- this.emit('@close');
88
- }
89
- async getNativeRtpCapabilities() {
90
- logger.debug('getNativeRtpCapabilities()');
91
- return edgeUtils.getCapabilities();
92
- }
93
- async getNativeSctpCapabilities() {
94
- logger.debug('getNativeSctpCapabilities()');
95
- return {
96
- numStreams: { OS: 0, MIS: 0 }
97
- };
98
- }
99
- run({ direction, // eslint-disable-line @typescript-eslint/no-unused-vars
100
- iceParameters, iceCandidates, dtlsParameters, sctpParameters, // eslint-disable-line @typescript-eslint/no-unused-vars
101
- iceServers, iceTransportPolicy, additionalSettings, // eslint-disable-line @typescript-eslint/no-unused-vars
102
- proprietaryConstraints, // eslint-disable-line @typescript-eslint/no-unused-vars
103
- extendedRtpCapabilities }) {
104
- logger.debug('run()');
105
- this._sendingRtpParametersByKind =
106
- {
107
- audio: ortc.getSendingRtpParameters('audio', extendedRtpCapabilities),
108
- video: ortc.getSendingRtpParameters('video', extendedRtpCapabilities)
109
- };
110
- this._remoteIceParameters = iceParameters;
111
- this._remoteIceCandidates = iceCandidates;
112
- this._remoteDtlsParameters = dtlsParameters;
113
- this._cname = `CNAME-${utils.generateRandomNumber()}`;
114
- this.setIceGatherer({ iceServers, iceTransportPolicy });
115
- this.setIceTransport();
116
- this.setDtlsTransport();
117
- }
118
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
119
- async updateIceServers(iceServers) {
120
- // NOTE: Edge 11 does not implement iceGatherer.gater().
121
- throw new errors_1.UnsupportedError('not supported');
122
- }
123
- async restartIce(iceParameters) {
124
- logger.debug('restartIce()');
125
- this._remoteIceParameters = iceParameters;
126
- if (!this._transportReady) {
127
- return;
128
- }
129
- logger.debug('restartIce() | calling iceTransport.start()');
130
- this._iceTransport.start(this._iceGatherer, iceParameters, 'controlling');
131
- for (const candidate of this._remoteIceCandidates) {
132
- this._iceTransport.addRemoteCandidate(candidate);
133
- }
134
- this._iceTransport.addRemoteCandidate({});
135
- }
136
- async getTransportStats() {
137
- return this._iceTransport.getStats();
138
- }
139
- async send(
140
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
141
- { track, encodings, codecOptions, codec }) {
142
- logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
143
- if (!this._transportReady) {
144
- await this.setupTransport({ localDtlsRole: 'server' });
145
- }
146
- logger.debug('send() | calling new RTCRtpSender()');
147
- const rtpSender = new RTCRtpSender(track, this._dtlsTransport);
148
- const rtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind], {});
149
- rtpParameters.codecs = ortc.reduceCodecs(rtpParameters.codecs, codec);
150
- const useRtx = rtpParameters.codecs
151
- .some((_codec) => /.+\/rtx$/i.test(_codec.mimeType));
152
- if (!encodings) {
153
- encodings = [{}];
154
- }
155
- for (const encoding of encodings) {
156
- encoding.ssrc = utils.generateRandomNumber();
157
- if (useRtx) {
158
- encoding.rtx = { ssrc: utils.generateRandomNumber() };
159
- }
160
- }
161
- rtpParameters.encodings = encodings;
162
- // Fill RTCRtpParameters.rtcp.
163
- rtpParameters.rtcp =
164
- {
165
- cname: this._cname,
166
- reducedSize: true,
167
- mux: true
168
- };
169
- // NOTE: Convert our standard RTCRtpParameters into those that Edge
170
- // expects.
171
- const edgeRtpParameters = edgeUtils.mangleRtpParameters(rtpParameters);
172
- logger.debug('send() | calling rtpSender.send() [params:%o]', edgeRtpParameters);
173
- await rtpSender.send(edgeRtpParameters);
174
- const localId = String(this._nextSendLocalId);
175
- this._nextSendLocalId++;
176
- // Store it.
177
- this._rtpSenders.set(localId, rtpSender);
178
- return { localId, rtpParameters, rtpSender };
179
- }
180
- async stopSending(localId) {
181
- logger.debug('stopSending() [localId:%s]', localId);
182
- const rtpSender = this._rtpSenders.get(localId);
183
- if (!rtpSender) {
184
- throw new Error('RTCRtpSender not found');
185
- }
186
- this._rtpSenders.delete(localId);
187
- try {
188
- logger.debug('stopSending() | calling rtpSender.stop()');
189
- rtpSender.stop();
190
- }
191
- catch (error) {
192
- logger.warn('stopSending() | rtpSender.stop() failed:%o', error);
193
- throw error;
194
- }
195
- }
196
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
197
- async pauseSending(localId) {
198
- // Unimplemented.
199
- }
200
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
201
- async resumeSending(localId) {
202
- // Unimplemented.
203
- }
204
- async replaceTrack(localId, track) {
205
- if (track) {
206
- logger.debug('replaceTrack() [localId:%s, track.id:%s]', localId, track.id);
207
- }
208
- else {
209
- logger.debug('replaceTrack() [localId:%s, no track]', localId);
210
- }
211
- const rtpSender = this._rtpSenders.get(localId);
212
- if (!rtpSender) {
213
- throw new Error('RTCRtpSender not found');
214
- }
215
- rtpSender.setTrack(track);
216
- }
217
- async setMaxSpatialLayer(localId, spatialLayer) {
218
- logger.debug('setMaxSpatialLayer() [localId:%s, spatialLayer:%s]', localId, spatialLayer);
219
- const rtpSender = this._rtpSenders.get(localId);
220
- if (!rtpSender) {
221
- throw new Error('RTCRtpSender not found');
222
- }
223
- const parameters = rtpSender.getParameters();
224
- parameters.encodings
225
- .forEach((encoding, idx) => {
226
- if (idx <= spatialLayer) {
227
- encoding.active = true;
228
- }
229
- else {
230
- encoding.active = false;
231
- }
232
- });
233
- await rtpSender.setParameters(parameters);
234
- }
235
- async setRtpEncodingParameters(localId, params) {
236
- logger.debug('setRtpEncodingParameters() [localId:%s, params:%o]', localId, params);
237
- const rtpSender = this._rtpSenders.get(localId);
238
- if (!rtpSender) {
239
- throw new Error('RTCRtpSender not found');
240
- }
241
- const parameters = rtpSender.getParameters();
242
- parameters.encodings.forEach((encoding, idx) => {
243
- parameters.encodings[idx] = { ...encoding, ...params };
244
- });
245
- await rtpSender.setParameters(parameters);
246
- }
247
- async getSenderStats(localId) {
248
- const rtpSender = this._rtpSenders.get(localId);
249
- if (!rtpSender) {
250
- throw new Error('RTCRtpSender not found');
251
- }
252
- return rtpSender.getStats();
253
- }
254
- async sendDataChannel(
255
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
256
- options) {
257
- throw new errors_1.UnsupportedError('not implemented');
258
- }
259
- async receive(optionsList) {
260
- const results = [];
261
- for (const options of optionsList) {
262
- const { trackId, kind } = options;
263
- logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind);
264
- }
265
- if (!this._transportReady) {
266
- await this.setupTransport({ localDtlsRole: 'server' });
267
- }
268
- for (const options of optionsList) {
269
- const { trackId, kind, rtpParameters } = options;
270
- logger.debug('receive() | calling new RTCRtpReceiver()');
271
- const rtpReceiver = new RTCRtpReceiver(this._dtlsTransport, kind);
272
- rtpReceiver.addEventListener('error', (event) => {
273
- logger.error('rtpReceiver "error" event [event:%o]', event);
274
- });
275
- // NOTE: Convert our standard RTCRtpParameters into those that Edge
276
- // expects.
277
- const edgeRtpParameters = edgeUtils.mangleRtpParameters(rtpParameters);
278
- logger.debug('receive() | calling rtpReceiver.receive() [params:%o]', edgeRtpParameters);
279
- await rtpReceiver.receive(edgeRtpParameters);
280
- const localId = trackId;
281
- // Store it.
282
- this._rtpReceivers.set(localId, rtpReceiver);
283
- results.push({
284
- localId,
285
- track: rtpReceiver.track,
286
- rtpReceiver
287
- });
288
- }
289
- return results;
290
- }
291
- async stopReceiving(localIds) {
292
- for (const localId of localIds) {
293
- logger.debug('stopReceiving() [localId:%s]', localId);
294
- const rtpReceiver = this._rtpReceivers.get(localId);
295
- if (!rtpReceiver) {
296
- throw new Error('RTCRtpReceiver not found');
297
- }
298
- this._rtpReceivers.delete(localId);
299
- try {
300
- logger.debug('stopReceiving() | calling rtpReceiver.stop()');
301
- rtpReceiver.stop();
302
- }
303
- catch (error) {
304
- logger.warn('stopReceiving() | rtpReceiver.stop() failed:%o', error);
305
- }
306
- }
307
- }
308
- async pauseReceiving(
309
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
310
- localIds) {
311
- // Unimplemented.
312
- }
313
- async resumeReceiving(
314
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
315
- localIds) {
316
- // Unimplemented.
317
- }
318
- async getReceiverStats(localId) {
319
- const rtpReceiver = this._rtpReceivers.get(localId);
320
- if (!rtpReceiver) {
321
- throw new Error('RTCRtpReceiver not found');
322
- }
323
- return rtpReceiver.getStats();
324
- }
325
- async receiveDataChannel(
326
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
327
- options) {
328
- throw new errors_1.UnsupportedError('not implemented');
329
- }
330
- setIceGatherer({ iceServers, iceTransportPolicy }) {
331
- // @ts-ignore
332
- const iceGatherer = new RTCIceGatherer({
333
- iceServers: iceServers || [],
334
- gatherPolicy: iceTransportPolicy || 'all'
335
- });
336
- iceGatherer.addEventListener('error', (event) => {
337
- logger.error('iceGatherer "error" event [event:%o]', event);
338
- });
339
- // NOTE: Not yet implemented by Edge, which starts gathering automatically.
340
- try {
341
- iceGatherer.gather();
342
- }
343
- catch (error) {
344
- logger.debug('setIceGatherer() | iceGatherer.gather() failed: %s', error.toString());
345
- }
346
- this._iceGatherer = iceGatherer;
347
- }
348
- setIceTransport() {
349
- const iceTransport = new RTCIceTransport(this._iceGatherer);
350
- // NOTE: Not yet implemented by Edge.
351
- iceTransport.addEventListener('statechange', () => {
352
- switch (iceTransport.state) {
353
- case 'checking':
354
- this.emit('@connectionstatechange', 'connecting');
355
- break;
356
- case 'connected':
357
- case 'completed':
358
- this.emit('@connectionstatechange', 'connected');
359
- break;
360
- case 'failed':
361
- this.emit('@connectionstatechange', 'failed');
362
- break;
363
- case 'disconnected':
364
- this.emit('@connectionstatechange', 'disconnected');
365
- break;
366
- case 'closed':
367
- this.emit('@connectionstatechange', 'closed');
368
- break;
369
- }
370
- });
371
- // NOTE: Not standard, but implemented by Edge.
372
- iceTransport.addEventListener('icestatechange', () => {
373
- switch (iceTransport.state) {
374
- case 'checking':
375
- this.emit('@connectionstatechange', 'connecting');
376
- break;
377
- case 'connected':
378
- case 'completed':
379
- this.emit('@connectionstatechange', 'connected');
380
- break;
381
- case 'failed':
382
- this.emit('@connectionstatechange', 'failed');
383
- break;
384
- case 'disconnected':
385
- this.emit('@connectionstatechange', 'disconnected');
386
- break;
387
- case 'closed':
388
- this.emit('@connectionstatechange', 'closed');
389
- break;
390
- }
391
- });
392
- iceTransport.addEventListener('candidatepairchange', (event) => {
393
- logger.debug('iceTransport "candidatepairchange" event [pair:%o]', event.pair);
394
- });
395
- this._iceTransport = iceTransport;
396
- }
397
- setDtlsTransport() {
398
- const dtlsTransport = new RTCDtlsTransport(this._iceTransport);
399
- // NOTE: Not yet implemented by Edge.
400
- dtlsTransport.addEventListener('statechange', () => {
401
- logger.debug('dtlsTransport "statechange" event [state:%s]', dtlsTransport.state);
402
- });
403
- // NOTE: Not standard, but implemented by Edge.
404
- dtlsTransport.addEventListener('dtlsstatechange', () => {
405
- logger.debug('dtlsTransport "dtlsstatechange" event [state:%s]', dtlsTransport.state);
406
- if (dtlsTransport.state === 'closed') {
407
- this.emit('@connectionstatechange', 'closed');
408
- }
409
- });
410
- dtlsTransport.addEventListener('error', (event) => {
411
- logger.error('dtlsTransport "error" event [event:%o]', event);
412
- });
413
- this._dtlsTransport = dtlsTransport;
414
- }
415
- async setupTransport({ localDtlsRole }) {
416
- logger.debug('setupTransport()');
417
- // Get our local DTLS parameters.
418
- const dtlsParameters = this._dtlsTransport.getLocalParameters();
419
- dtlsParameters.role = localDtlsRole;
420
- // Need to tell the remote transport about our parameters.
421
- await new Promise((resolve, reject) => {
422
- this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
423
- });
424
- // Start the RTCIceTransport.
425
- this._iceTransport.start(this._iceGatherer, this._remoteIceParameters, 'controlling');
426
- // Add remote ICE candidates.
427
- for (const candidate of this._remoteIceCandidates) {
428
- this._iceTransport.addRemoteCandidate(candidate);
429
- }
430
- // Also signal a 'complete' candidate as per spec.
431
- // NOTE: It should be {complete: true} but Edge prefers {}.
432
- // NOTE: If we don't signal end of candidates, the Edge RTCIceTransport
433
- // won't enter the 'completed' state.
434
- this._iceTransport.addRemoteCandidate({});
435
- // NOTE: Edge does not like SHA less than 256.
436
- this._remoteDtlsParameters.fingerprints = this._remoteDtlsParameters.fingerprints
437
- .filter((fingerprint) => {
438
- return (fingerprint.algorithm === 'sha-256' ||
439
- fingerprint.algorithm === 'sha-384' ||
440
- fingerprint.algorithm === 'sha-512');
441
- });
442
- // Start the RTCDtlsTransport.
443
- this._dtlsTransport.start(this._remoteDtlsParameters);
444
- this._transportReady = true;
445
- }
446
- }
447
- exports.Edge11 = Edge11;
@@ -1,49 +0,0 @@
1
- import { HandlerInterface, HandlerRunOptions, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
2
- import { IceParameters, DtlsParameters, ConnectionState } from '../Transport';
3
- import { RtpCapabilities } from '../RtpParameters';
4
- import { SctpCapabilities } from '../SctpParameters';
5
- export type FakeParameters = {
6
- generateNativeRtpCapabilities: () => RtpCapabilities;
7
- generateNativeSctpCapabilities: () => SctpCapabilities;
8
- generateLocalDtlsParameters: () => DtlsParameters;
9
- };
10
- export declare class FakeHandler extends HandlerInterface {
11
- private fakeParameters;
12
- private _rtpParametersByKind?;
13
- private _cname;
14
- private _transportReady;
15
- private _nextLocalId;
16
- private _tracks;
17
- private _nextSctpStreamId;
18
- /**
19
- * Creates a factory function.
20
- */
21
- static createFactory(fakeParameters: FakeParameters): () => FakeHandler;
22
- constructor(fakeParameters: any);
23
- get name(): string;
24
- close(): void;
25
- setConnectionState(connectionState: ConnectionState): void;
26
- getNativeRtpCapabilities(): Promise<RtpCapabilities>;
27
- getNativeSctpCapabilities(): Promise<SctpCapabilities>;
28
- run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, proprietaryConstraints, extendedRtpCapabilities }: HandlerRunOptions): void;
29
- updateIceServers(iceServers: RTCIceServer[]): Promise<void>;
30
- restartIce(iceParameters: IceParameters): Promise<void>;
31
- getTransportStats(): Promise<RTCStatsReport>;
32
- send({ track, encodings, codecOptions, codec }: HandlerSendOptions): Promise<HandlerSendResult>;
33
- stopSending(localId: string): Promise<void>;
34
- pauseSending(localId: string): Promise<void>;
35
- resumeSending(localId: string): Promise<void>;
36
- replaceTrack(localId: string, track: MediaStreamTrack | null): Promise<void>;
37
- setMaxSpatialLayer(localId: string, spatialLayer: number): Promise<void>;
38
- setRtpEncodingParameters(localId: string, params: any): Promise<void>;
39
- getSenderStats(localId: string): Promise<RTCStatsReport>;
40
- sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
41
- receive(optionsList: HandlerReceiveOptions[]): Promise<HandlerReceiveResult[]>;
42
- stopReceiving(localIds: string[]): Promise<void>;
43
- pauseReceiving(localIds: string[]): Promise<void>;
44
- resumeReceiving(localIds: string[]): Promise<void>;
45
- getReceiverStats(localId: string): Promise<RTCStatsReport>;
46
- receiveDataChannel({ sctpStreamParameters, label, protocol }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
47
- private setupTransport;
48
- }
49
- //# sourceMappingURL=FakeHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FakeHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/FakeHandler.ts"],"names":[],"mappings":"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"}