mediasoup-client 3.21.0 → 3.23.0

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 (41) hide show
  1. package/README.md +9 -0
  2. package/lib/Device.d.ts +7 -3
  3. package/lib/Device.d.ts.map +1 -1
  4. package/lib/Device.js +22 -8
  5. package/lib/Producer.d.ts +0 -4
  6. package/lib/Producer.d.ts.map +1 -1
  7. package/lib/RtpParameters.d.ts.map +1 -1
  8. package/lib/Transport.d.ts +1 -1
  9. package/lib/Transport.d.ts.map +1 -1
  10. package/lib/Transport.js +1 -2
  11. package/lib/handlers/Chrome111.d.ts +4 -3
  12. package/lib/handlers/Chrome111.d.ts.map +1 -1
  13. package/lib/handlers/Chrome111.js +23 -32
  14. package/lib/handlers/Chrome74.d.ts +4 -3
  15. package/lib/handlers/Chrome74.d.ts.map +1 -1
  16. package/lib/handlers/Chrome74.js +38 -31
  17. package/lib/handlers/Firefox120.d.ts +3 -2
  18. package/lib/handlers/Firefox120.d.ts.map +1 -1
  19. package/lib/handlers/Firefox120.js +19 -5
  20. package/lib/handlers/HandlerInterface.d.ts +9 -3
  21. package/lib/handlers/HandlerInterface.d.ts.map +1 -1
  22. package/lib/handlers/ReactNative106.d.ts +4 -3
  23. package/lib/handlers/ReactNative106.d.ts.map +1 -1
  24. package/lib/handlers/ReactNative106.js +22 -31
  25. package/lib/handlers/Safari12.d.ts +5 -4
  26. package/lib/handlers/Safari12.d.ts.map +1 -1
  27. package/lib/handlers/Safari12.js +22 -31
  28. package/lib/handlers/fakeEvents/FakeEventListener.d.ts.map +1 -1
  29. package/lib/handlers/ortc/utils.d.ts +8 -9
  30. package/lib/handlers/ortc/utils.d.ts.map +1 -1
  31. package/lib/handlers/ortc/utils.js +30 -39
  32. package/lib/handlers/sdp/commonUtils.d.ts +1 -9
  33. package/lib/handlers/sdp/commonUtils.d.ts.map +1 -1
  34. package/lib/handlers/sdp/commonUtils.js +0 -13
  35. package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -1
  36. package/lib/index.d.ts +1 -1
  37. package/lib/index.js +1 -1
  38. package/lib/ortc.js +15 -5
  39. package/lib/test/test.js +3 -1
  40. package/npm-scripts.mjs +137 -25
  41. package/package.json +11 -9
@@ -57,6 +57,7 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
57
57
  _remoteSdp;
58
58
  // Callback to request sending extended RTP capabilities on demand.
59
59
  _getSendExtendedRtpCapabilities;
60
+ _forcedRtpExtensions;
60
61
  // Initial server side DTLS role. If not 'auto', it will force the opposite
61
62
  // value in client side.
62
63
  _forcedLocalDtlsRole;
@@ -75,10 +76,10 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
75
76
  /**
76
77
  * Creates a factory function.
77
78
  */
78
- static createFactory() {
79
+ static createFactory({ forcedRtpExtensions, }) {
79
80
  return {
80
81
  name: NAME,
81
- factory: (options) => new Chrome74(options),
82
+ factory: (options) => new Chrome74({ ...options, forcedRtpExtensions }),
82
83
  getNativeRtpCapabilities: async ({ direction, }) => {
83
84
  logger.debug('getNativeRtpCapabilities() [direction:%o]', direction);
84
85
  let pc = new RTCPeerConnection({
@@ -88,8 +89,14 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
88
89
  rtcpMuxPolicy: 'require',
89
90
  });
90
91
  try {
91
- pc.addTransceiver('audio', { direction });
92
- pc.addTransceiver('video', { direction });
92
+ const audioTransceiver = pc.addTransceiver('audio', { direction });
93
+ if (forcedRtpExtensions) {
94
+ ortcUtils.applyForcedRtpExtensions(audioTransceiver, forcedRtpExtensions);
95
+ }
96
+ const videoTransceiver = pc.addTransceiver('video', { direction });
97
+ if (forcedRtpExtensions) {
98
+ ortcUtils.applyForcedRtpExtensions(videoTransceiver, forcedRtpExtensions);
99
+ }
93
100
  const offer = await pc.createOffer();
94
101
  try {
95
102
  pc.close();
@@ -112,7 +119,7 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
112
119
  },
113
120
  };
114
121
  }
115
- static getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions = []) {
122
+ static getLocalRtpCapabilities(localSdpObject) {
116
123
  const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
117
124
  sdpObject: localSdpObject,
118
125
  });
@@ -120,12 +127,9 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
120
127
  ortc.validateAndNormalizeRtpCapabilities(nativeRtpCapabilities);
121
128
  // libwebrtc supports NACK for OPUS but doesn't announce it.
122
129
  ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
123
- for (const headerExtension of extraHeaderExtensions) {
124
- ortcUtils.addHeaderExtensionSupport(nativeRtpCapabilities, headerExtension);
125
- }
126
130
  return nativeRtpCapabilities;
127
131
  }
128
- constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, }) {
132
+ constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, forcedRtpExtensions, }) {
129
133
  super();
130
134
  logger.debug('constructor()');
131
135
  this._direction = direction;
@@ -138,6 +142,7 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
138
142
  sctpParameters,
139
143
  });
140
144
  this._getSendExtendedRtpCapabilities = getSendExtendedRtpCapabilities;
145
+ this._forcedRtpExtensions = forcedRtpExtensions;
141
146
  if (dtlsParameters.role && dtlsParameters.role !== 'auto') {
142
147
  this._forcedLocalDtlsRole =
143
148
  dtlsParameters.role === 'server' ? 'client' : 'server';
@@ -223,7 +228,7 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
223
228
  this.assertNotClosed();
224
229
  return this._pc.getStats();
225
230
  }
226
- async send({ track, streamId, encodings, codecOptions, headerExtensionOptions, codec, }) {
231
+ async send({ track, streamId, encodings, codecOptions, codec, onRtpSender, }) {
227
232
  this.assertNotClosed();
228
233
  this.assertSendDirection();
229
234
  logger.debug('send() [kind:%s, track.id:%s, streamId:%s]', track.kind, track.id, streamId);
@@ -238,18 +243,18 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
238
243
  streams: [this._sendStream],
239
244
  sendEncodings: encodings,
240
245
  });
246
+ if (this._forcedRtpExtensions) {
247
+ ortcUtils.applyForcedRtpExtensions(transceiver, this._forcedRtpExtensions);
248
+ }
249
+ if (onRtpSender) {
250
+ onRtpSender(transceiver.sender);
251
+ }
241
252
  let offer = await this._pc.createOffer();
242
253
  let localSdpObject = sdpTransform.parse(offer.sdp);
243
254
  if (localSdpObject.extmapAllowMixed) {
244
255
  this._remoteSdp.setSessionExtmapAllowMixed();
245
256
  }
246
- const extraHeaderExtensions = [];
247
- extraHeaderExtensions.push({
248
- uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
249
- kind: track.kind,
250
- direction: 'sendonly',
251
- });
252
- const nativeRtpCapabilities = Chrome74.getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions);
257
+ const nativeRtpCapabilities = Chrome74.getLocalRtpCapabilities(localSdpObject);
253
258
  const sendExtendedRtpCapabilities = this._getSendExtendedRtpCapabilities(nativeRtpCapabilities);
254
259
  // Generic sending RTP parameters.
255
260
  const sendingRtpParameters = ortc.getSendingRtpParameters(track.kind, sendExtendedRtpCapabilities);
@@ -286,20 +291,6 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
286
291
  };
287
292
  }
288
293
  logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
289
- // Optimize. Only generate new offer if needed.
290
- if (headerExtensionOptions?.absCaptureTime) {
291
- offerMediaObject = localSdpObject.media[mediaSectionIdx.idx];
292
- sdpCommonUtils.addHeaderExtension({
293
- offerMediaObject,
294
- headerExtensionUri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
295
- headerExtensionId: sendingRemoteRtpParameters.headerExtensions.find(headerExtension => headerExtension.uri ===
296
- 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time').id,
297
- });
298
- offer = {
299
- type: 'offer',
300
- sdp: sdpTransform.write(localSdpObject),
301
- };
302
- }
303
294
  await this._pc.setLocalDescription(offer);
304
295
  // We can now get the transceiver.mid.
305
296
  const localId = transceiver.mid;
@@ -594,6 +585,22 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
594
585
  };
595
586
  logger.debug('receive() | calling pc.setRemoteDescription() [offer:%o]', offer);
596
587
  await this._pc.setRemoteDescription(offer);
588
+ for (const options of optionsList) {
589
+ const { trackId, onRtpReceiver } = options;
590
+ if (onRtpReceiver) {
591
+ const localId = mapLocalId.get(trackId);
592
+ const transceiver = this._pc
593
+ .getTransceivers()
594
+ .find((t) => t.mid === localId);
595
+ if (!transceiver) {
596
+ throw new Error('transceiver not found');
597
+ }
598
+ if (this._forcedRtpExtensions) {
599
+ ortcUtils.applyForcedRtpExtensions(transceiver, this._forcedRtpExtensions);
600
+ }
601
+ onRtpReceiver(transceiver.receiver);
602
+ }
603
+ }
597
604
  let answer = await this._pc.createAnswer();
598
605
  const localSdpObject = sdpTransform.parse(answer.sdp);
599
606
  for (const options of optionsList) {
@@ -1,12 +1,13 @@
1
1
  import { EnhancedEventEmitter } from '../enhancedEvents';
2
2
  import type { IceParameters } from '../Transport';
3
- import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
3
+ import type { HandlerFactoryOptions, HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
4
4
  export declare class Firefox120 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
5
5
  private _closed;
6
6
  private _direction;
7
7
  private _sctpMaxReceiveMessageSize?;
8
8
  private _remoteSdp;
9
9
  private _getSendExtendedRtpCapabilities;
10
+ private _forcedRtpExtensions?;
10
11
  private _pc;
11
12
  private readonly _mapMidTransceiver;
12
13
  private readonly _sendStream;
@@ -16,7 +17,7 @@ export declare class Firefox120 extends EnhancedEventEmitter<HandlerEvents> impl
16
17
  /**
17
18
  * Creates a factory function.
18
19
  */
19
- static createFactory(): HandlerFactory;
20
+ static createFactory({ forcedRtpExtensions, }: HandlerFactoryOptions): HandlerFactory;
20
21
  private static getLocalRtpCapabilities;
21
22
  private constructor();
22
23
  get name(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"Firefox120.d.ts","sourceRoot":"","sources":["../../src/handlers/Firefox120.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Firefox120.d.ts","sourceRoot":"","sources":["../../src/handlers/Firefox120.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,7 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
57
57
  _remoteSdp;
58
58
  // Callback to request sending extended RTP capabilities on demand.
59
59
  _getSendExtendedRtpCapabilities;
60
+ _forcedRtpExtensions;
60
61
  // RTCPeerConnection instance.
61
62
  _pc;
62
63
  // Map of RTCTransceivers indexed by MID.
@@ -72,10 +73,10 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
72
73
  /**
73
74
  * Creates a factory function.
74
75
  */
75
- static createFactory() {
76
+ static createFactory({ forcedRtpExtensions, }) {
76
77
  return {
77
78
  name: NAME,
78
- factory: (options) => new Firefox120(options),
79
+ factory: (options) => new Firefox120({ ...options, forcedRtpExtensions }),
79
80
  getNativeRtpCapabilities: async ({ direction, }) => {
80
81
  logger.debug('getNativeRtpCapabilities() [direction:%o]', direction);
81
82
  let pc = new RTCPeerConnection({
@@ -92,14 +93,20 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
92
93
  const fakeStream = canvas.captureStream();
93
94
  const fakeVideoTrack = fakeStream.getVideoTracks()[0];
94
95
  try {
95
- pc.addTransceiver('audio', { direction });
96
- pc.addTransceiver(fakeVideoTrack, {
96
+ const audioTransceiver = pc.addTransceiver('audio', { direction });
97
+ if (forcedRtpExtensions) {
98
+ ortcUtils.applyForcedRtpExtensions(audioTransceiver, forcedRtpExtensions);
99
+ }
100
+ const videoTransceiver = pc.addTransceiver(fakeVideoTrack, {
97
101
  direction,
98
102
  sendEncodings: [
99
103
  { rid: 'r0', maxBitrate: 100000 },
100
104
  { rid: 'r1', maxBitrate: 500000 },
101
105
  ],
102
106
  });
107
+ if (forcedRtpExtensions) {
108
+ ortcUtils.applyForcedRtpExtensions(videoTransceiver, forcedRtpExtensions);
109
+ }
103
110
  const offer = await pc.createOffer();
104
111
  try {
105
112
  canvas.remove();
@@ -146,7 +153,7 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
146
153
  ortc.validateAndNormalizeRtpCapabilities(nativeRtpCapabilities);
147
154
  return nativeRtpCapabilities;
148
155
  }
149
- constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, }) {
156
+ constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, forcedRtpExtensions, }) {
150
157
  super();
151
158
  logger.debug('constructor()');
152
159
  this._direction = direction;
@@ -159,6 +166,7 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
159
166
  sctpParameters,
160
167
  });
161
168
  this._getSendExtendedRtpCapabilities = getSendExtendedRtpCapabilities;
169
+ this._forcedRtpExtensions = forcedRtpExtensions;
162
170
  this._pc = new RTCPeerConnection({
163
171
  iceServers: iceServers ?? [],
164
172
  iceTransportPolicy: iceTransportPolicy ?? 'all',
@@ -258,6 +266,9 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
258
266
  streams: [this._sendStream],
259
267
  sendEncodings: encodings,
260
268
  });
269
+ if (this._forcedRtpExtensions) {
270
+ ortcUtils.applyForcedRtpExtensions(transceiver, this._forcedRtpExtensions);
271
+ }
261
272
  if (onRtpSender) {
262
273
  onRtpSender(transceiver.sender);
263
274
  }
@@ -584,6 +595,9 @@ class Firefox120 extends enhancedEvents_1.EnhancedEventEmitter {
584
595
  if (!transceiver) {
585
596
  throw new Error('transceiver not found');
586
597
  }
598
+ if (this._forcedRtpExtensions) {
599
+ ortcUtils.applyForcedRtpExtensions(transceiver, this._forcedRtpExtensions);
600
+ }
587
601
  onRtpReceiver(transceiver.receiver);
588
602
  }
589
603
  }
@@ -1,9 +1,15 @@
1
1
  import { EnhancedEventEmitter } from '../enhancedEvents';
2
2
  import type { IceParameters, IceCandidate, DtlsParameters, IceGatheringState, ConnectionState } from '../Transport';
3
- import type { ProducerCodecOptions, ProducerHeaderExtensionOptions, OnRtpSenderCallback } from '../Producer';
3
+ import type { ProducerCodecOptions, OnRtpSenderCallback } from '../Producer';
4
4
  import type { OnRtpReceiverCallback } from '../Consumer';
5
- import type { RtpCapabilities, RtpCodecCapability, RtpParameters, RtpEncodingParameters, ExtendedRtpCapabilities } from '../RtpParameters';
5
+ import type { RtpCapabilities, RtpCodecCapability, RtpParameters, RtpEncodingParameters, RtpHeaderExtensionUri, ExtendedRtpCapabilities } from '../RtpParameters';
6
6
  import type { SctpParameters, SctpStreamParameters } from '../SctpParameters';
7
+ export type HandlerFactoryOptions = {
8
+ forcedRtpExtensions?: HandlerForcedRtpExtensions;
9
+ };
10
+ export type HandlerForcedRtpExtensions = {
11
+ [K in RtpHeaderExtensionUri]?: boolean;
12
+ };
7
13
  export type HandlerFactory = {
8
14
  name: string;
9
15
  factory: (options: HandlerOptions) => HandlerInterface;
@@ -19,6 +25,7 @@ export type HandlerOptions = {
19
25
  iceTransportPolicy?: RTCIceTransportPolicy;
20
26
  additionalSettings?: Partial<RTCConfiguration>;
21
27
  getSendExtendedRtpCapabilities: (nativeSendRtpCapabilities: RtpCapabilities) => ExtendedRtpCapabilities;
28
+ forcedRtpExtensions?: HandlerForcedRtpExtensions;
22
29
  };
23
30
  export type HandlerGetNativeRtpCapabilitiesOptions = {
24
31
  direction: Extract<RTCRtpTransceiverDirection, 'sendonly' | 'recvonly'>;
@@ -34,7 +41,6 @@ export type HandlerSendOptions = {
34
41
  streamId?: string;
35
42
  encodings?: RtpEncodingParameters[];
36
43
  codecOptions?: ProducerCodecOptions;
37
- headerExtensionOptions?: ProducerHeaderExtensionOptions;
38
44
  codec?: RtpCodecCapability;
39
45
  onRtpSender?: OnRtpSenderCallback;
40
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"HandlerInterface.d.ts","sourceRoot":"","sources":["../../src/handlers/HandlerInterface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HandlerInterface.d.ts","sourceRoot":"","sources":["../../src/handlers/HandlerInterface.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import { EnhancedEventEmitter } from '../enhancedEvents';
2
2
  import type { IceParameters } from '../Transport';
3
- import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
3
+ import type { HandlerFactoryOptions, HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
4
4
  export declare class ReactNative106 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
5
5
  private _closed;
6
6
  private _direction;
7
7
  private _sctpMaxReceiveMessageSize?;
8
8
  private _remoteSdp;
9
9
  private _getSendExtendedRtpCapabilities;
10
+ private _forcedRtpExtensions?;
10
11
  private _forcedLocalDtlsRole?;
11
12
  private _pc;
12
13
  private readonly _mapMidTransceiver;
@@ -17,7 +18,7 @@ export declare class ReactNative106 extends EnhancedEventEmitter<HandlerEvents>
17
18
  /**
18
19
  * Creates a factory function.
19
20
  */
20
- static createFactory(): HandlerFactory;
21
+ static createFactory({ forcedRtpExtensions, }: HandlerFactoryOptions): HandlerFactory;
21
22
  private static getLocalRtpCapabilities;
22
23
  private constructor();
23
24
  get name(): string;
@@ -25,7 +26,7 @@ export declare class ReactNative106 extends EnhancedEventEmitter<HandlerEvents>
25
26
  updateIceServers(iceServers: RTCIceServer[]): Promise<void>;
26
27
  restartIce(iceParameters: IceParameters): Promise<void>;
27
28
  getTransportStats(): Promise<RTCStatsReport>;
28
- send({ track, streamId, encodings, codecOptions, headerExtensionOptions, codec, onRtpSender, }: HandlerSendOptions): Promise<HandlerSendResult>;
29
+ send({ track, streamId, encodings, codecOptions, codec, onRtpSender, }: HandlerSendOptions): Promise<HandlerSendResult>;
29
30
  stopSending(localId: string): Promise<void>;
30
31
  pauseSending(localId: string): Promise<void>;
31
32
  resumeSending(localId: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ReactNative106.d.ts","sourceRoot":"","sources":["../../src/handlers/ReactNative106.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReactNative106.d.ts","sourceRoot":"","sources":["../../src/handlers/ReactNative106.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAKzD,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AAY5D,OAAO,KAAK,EACX,qBAAqB,EAErB,cAAc,EACd,gBAAgB,EAChB,aAAa,EAGb,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAM5B,qBAAa,cACZ,SAAQ,oBAAoB,CAAC,aAAa,CAC1C,YAAW,gBAAgB;IAG3B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAO,CAAC,0BAA0B,CAAC,CAAS;IAE5C,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,+BAA+B,CAEV;IAC7B,OAAO,CAAC,oBAAoB,CAAC,CAA6B;IAG1D,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,CAAC,EACpB,mBAAmB,GACnB,EAAE,qBAAqB,GAAG,cAAc;IA+DzC,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAgBtC,OAAO;IAqEP,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEQ,KAAK,IAAI,IAAI;IA0ChB,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,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,KAAK,EACL,WAAW,GACX,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqO5C,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,oBAAoB,GACpB,EAAE,6BAA6B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IA0ElE,OAAO,CACZ,WAAW,EAAE,qBAAqB,EAAE,GAClC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAgI5B,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,cAAc,EACd,oBAAoB,EACpB,KAAK,EACL,QAAQ,GACR,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC;IA4E9E,4BAA4B,IAAI,MAAM,GAAG,SAAS;YAMpC,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"}
@@ -57,6 +57,7 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
57
57
  _remoteSdp;
58
58
  // Callback to request sending extended RTP capabilities on demand.
59
59
  _getSendExtendedRtpCapabilities;
60
+ _forcedRtpExtensions;
60
61
  // Initial server side DTLS role. If not 'auto', it will force the opposite
61
62
  // value in client side.
62
63
  _forcedLocalDtlsRole;
@@ -75,10 +76,10 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
75
76
  /**
76
77
  * Creates a factory function.
77
78
  */
78
- static createFactory() {
79
+ static createFactory({ forcedRtpExtensions, }) {
79
80
  return {
80
81
  name: NAME,
81
- factory: (options) => new ReactNative106(options),
82
+ factory: (options) => new ReactNative106({ ...options, forcedRtpExtensions }),
82
83
  getNativeRtpCapabilities: async ({ direction, }) => {
83
84
  logger.debug('getNativeRtpCapabilities() [direction:%o]', direction);
84
85
  let pc = new RTCPeerConnection({
@@ -88,8 +89,14 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
88
89
  rtcpMuxPolicy: 'require',
89
90
  });
90
91
  try {
91
- pc.addTransceiver('audio', { direction });
92
- pc.addTransceiver('video', { direction });
92
+ const audioTransceiver = pc.addTransceiver('audio', { direction });
93
+ if (forcedRtpExtensions) {
94
+ ortcUtils.applyForcedRtpExtensions(audioTransceiver, forcedRtpExtensions);
95
+ }
96
+ const videoTransceiver = pc.addTransceiver('video', { direction });
97
+ if (forcedRtpExtensions) {
98
+ ortcUtils.applyForcedRtpExtensions(videoTransceiver, forcedRtpExtensions);
99
+ }
93
100
  const offer = await pc.createOffer();
94
101
  try {
95
102
  pc.close();
@@ -112,7 +119,7 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
112
119
  },
113
120
  };
114
121
  }
115
- static getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions = []) {
122
+ static getLocalRtpCapabilities(localSdpObject) {
116
123
  const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
117
124
  sdpObject: localSdpObject,
118
125
  });
@@ -120,12 +127,9 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
120
127
  ortc.validateAndNormalizeRtpCapabilities(nativeRtpCapabilities);
121
128
  // libwebrtc supports NACK for OPUS but doesn't announce it.
122
129
  ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
123
- for (const headerExtension of extraHeaderExtensions) {
124
- ortcUtils.addHeaderExtensionSupport(nativeRtpCapabilities, headerExtension);
125
- }
126
130
  return nativeRtpCapabilities;
127
131
  }
128
- constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, }) {
132
+ constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, forcedRtpExtensions, }) {
129
133
  super();
130
134
  logger.debug('constructor()');
131
135
  this._direction = direction;
@@ -138,6 +142,7 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
138
142
  sctpParameters,
139
143
  });
140
144
  this._getSendExtendedRtpCapabilities = getSendExtendedRtpCapabilities;
145
+ this._forcedRtpExtensions = forcedRtpExtensions;
141
146
  if (dtlsParameters.role && dtlsParameters.role !== 'auto') {
142
147
  this._forcedLocalDtlsRole =
143
148
  dtlsParameters.role === 'server' ? 'client' : 'server';
@@ -227,7 +232,7 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
227
232
  this.assertNotClosed();
228
233
  return this._pc.getStats();
229
234
  }
230
- async send({ track, streamId, encodings, codecOptions, headerExtensionOptions, codec, onRtpSender, }) {
235
+ async send({ track, streamId, encodings, codecOptions, codec, onRtpSender, }) {
231
236
  this.assertNotClosed();
232
237
  this.assertSendDirection();
233
238
  logger.debug('send() [kind:%s, track.id:%s, streamId:%s]', track.kind, track.id, streamId);
@@ -242,6 +247,9 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
242
247
  streams: [this._sendStream],
243
248
  sendEncodings: encodings,
244
249
  });
250
+ if (this._forcedRtpExtensions) {
251
+ ortcUtils.applyForcedRtpExtensions(transceiver, this._forcedRtpExtensions);
252
+ }
245
253
  if (onRtpSender) {
246
254
  onRtpSender(transceiver.sender);
247
255
  }
@@ -250,13 +258,7 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
250
258
  if (localSdpObject.extmapAllowMixed) {
251
259
  this._remoteSdp.setSessionExtmapAllowMixed();
252
260
  }
253
- const extraHeaderExtensions = [];
254
- extraHeaderExtensions.push({
255
- uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
256
- kind: track.kind,
257
- direction: 'sendonly',
258
- });
259
- const nativeRtpCapabilities = ReactNative106.getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions);
261
+ const nativeRtpCapabilities = ReactNative106.getLocalRtpCapabilities(localSdpObject);
260
262
  const sendExtendedRtpCapabilities = this._getSendExtendedRtpCapabilities(nativeRtpCapabilities);
261
263
  // Generic sending RTP parameters.
262
264
  const sendingRtpParameters = ortc.getSendingRtpParameters(track.kind, sendExtendedRtpCapabilities);
@@ -292,20 +294,6 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
292
294
  sdp: sdpTransform.write(localSdpObject),
293
295
  };
294
296
  }
295
- // Optimize. Only generate new offer if needed.
296
- if (headerExtensionOptions?.absCaptureTime) {
297
- offerMediaObject = localSdpObject.media[mediaSectionIdx.idx];
298
- sdpCommonUtils.addHeaderExtension({
299
- offerMediaObject,
300
- headerExtensionUri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
301
- headerExtensionId: sendingRemoteRtpParameters.headerExtensions.find(headerExtension => headerExtension.uri ===
302
- 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time').id,
303
- });
304
- offer = {
305
- type: 'offer',
306
- sdp: sdpTransform.write(localSdpObject),
307
- };
308
- }
309
297
  logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
310
298
  await this._pc.setLocalDescription(offer);
311
299
  // We can now get the transceiver.mid.
@@ -629,6 +617,9 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
629
617
  if (!transceiver) {
630
618
  throw new Error('transceiver not found');
631
619
  }
620
+ if (this._forcedRtpExtensions) {
621
+ ortcUtils.applyForcedRtpExtensions(transceiver, this._forcedRtpExtensions);
622
+ }
632
623
  onRtpReceiver(transceiver.receiver);
633
624
  }
634
625
  }
@@ -1,12 +1,13 @@
1
1
  import { EnhancedEventEmitter } from '../enhancedEvents';
2
2
  import type { IceParameters } from '../Transport';
3
- import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerOptions, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
3
+ import type { HandlerFactoryOptions, HandlerFactory, HandlerInterface, HandlerEvents, HandlerOptions, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
4
4
  export declare class Safari12 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
5
5
  private _closed;
6
6
  private _direction;
7
7
  private _sctpMaxReceiveMessageSize?;
8
8
  private _remoteSdp;
9
9
  private _getSendExtendedRtpCapabilities;
10
+ private _forcedRtpExtensions?;
10
11
  private _forcedLocalDtlsRole?;
11
12
  private _pc;
12
13
  private readonly _mapMidTransceiver;
@@ -17,15 +18,15 @@ export declare class Safari12 extends EnhancedEventEmitter<HandlerEvents> implem
17
18
  /**
18
19
  * Creates a factory function.
19
20
  */
20
- static createFactory(): HandlerFactory;
21
+ static createFactory({ forcedRtpExtensions, }: HandlerFactoryOptions): HandlerFactory;
21
22
  private static getLocalRtpCapabilities;
22
- constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, }: HandlerOptions);
23
+ constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, getSendExtendedRtpCapabilities, forcedRtpExtensions, }: HandlerOptions);
23
24
  get name(): string;
24
25
  close(): void;
25
26
  updateIceServers(iceServers: RTCIceServer[]): Promise<void>;
26
27
  restartIce(iceParameters: IceParameters): Promise<void>;
27
28
  getTransportStats(): Promise<RTCStatsReport>;
28
- send({ track, streamId, encodings, codecOptions, headerExtensionOptions, codec, onRtpSender, }: HandlerSendOptions): Promise<HandlerSendResult>;
29
+ send({ track, streamId, encodings, codecOptions, codec, onRtpSender, }: HandlerSendOptions): Promise<HandlerSendResult>;
29
30
  stopSending(localId: string): Promise<void>;
30
31
  pauseSending(localId: string): Promise<void>;
31
32
  resumeSending(localId: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"Safari12.d.ts","sourceRoot":"","sources":["../../src/handlers/Safari12.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAKzD,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AAa5D,OAAO,KAAK,EACX,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,cAAc,EAEd,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAM5B,qBAAa,QACZ,SAAQ,oBAAoB,CAAC,aAAa,CAC1C,YAAW,gBAAgB;IAG3B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAO,CAAC,0BAA0B,CAAC,CAAS;IAE5C,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,+BAA+B,CAEV;IAG7B,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;IA+CtC,OAAO,CAAC,MAAM,CAAC,uBAAuB;gBA4B1B,EACX,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,8BAA8B,GAC9B,EAAE,cAAc;IAmEjB,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,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,sBAAsB,EACtB,KAAK,EACL,WAAW,GACX,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8M5C,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;IAqC7C,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,oBAAoB,GACpB,EAAE,6BAA6B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IA0ElE,OAAO,CACZ,WAAW,EAAE,qBAAqB,EAAE,GAClC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAyH5B,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,cAAc,EACd,oBAAoB,EACpB,KAAK,EACL,QAAQ,GACR,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC;IA4E9E,4BAA4B,IAAI,MAAM,GAAG,SAAS;YAMpC,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"}
1
+ {"version":3,"file":"Safari12.d.ts","sourceRoot":"","sources":["../../src/handlers/Safari12.ts"],"names":[],"mappings":"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"}