mediasoup-client 3.22.0 → 3.23.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.
@@ -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":"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,UACZ,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;IAE1D,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+FzC,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAatC,OAAO;IAgEP,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEQ,KAAK,IAAI,IAAI;IAsChB,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3D,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;IAmL5C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwD3C,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;IAuElE,OAAO,CACZ,WAAW,EAAE,qBAAqB,EAAE,GAClC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA6H5B,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;IAY1D,kBAAkB,CAAC,EACxB,cAAc,EACd,oBAAoB,EACpB,KAAK,EACL,QAAQ,GACR,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAyE9E,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 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":"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"}
@@ -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,15 +258,7 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
250
258
  if (localSdpObject.extmapAllowMixed) {
251
259
  this._remoteSdp.setSessionExtmapAllowMixed();
252
260
  }
253
- const extraHeaderExtensions = [];
254
- if (headerExtensionOptions?.absCaptureTime) {
255
- extraHeaderExtensions.push({
256
- uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
257
- kind: track.kind,
258
- direction: 'sendonly',
259
- });
260
- }
261
- const nativeRtpCapabilities = ReactNative106.getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions);
261
+ const nativeRtpCapabilities = ReactNative106.getLocalRtpCapabilities(localSdpObject);
262
262
  const sendExtendedRtpCapabilities = this._getSendExtendedRtpCapabilities(nativeRtpCapabilities);
263
263
  // Generic sending RTP parameters.
264
264
  const sendingRtpParameters = ortc.getSendingRtpParameters(track.kind, sendExtendedRtpCapabilities);
@@ -294,20 +294,6 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
294
294
  sdp: sdpTransform.write(localSdpObject),
295
295
  };
296
296
  }
297
- // Optimize. Only generate new offer if needed.
298
- if (headerExtensionOptions?.absCaptureTime) {
299
- offerMediaObject = localSdpObject.media[mediaSectionIdx.idx];
300
- sdpCommonUtils.addHeaderExtension({
301
- offerMediaObject,
302
- headerExtensionUri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
303
- headerExtensionId: sendingRemoteRtpParameters.headerExtensions.find(headerExtension => headerExtension.uri ===
304
- 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time').id,
305
- });
306
- offer = {
307
- type: 'offer',
308
- sdp: sdpTransform.write(localSdpObject),
309
- };
310
- }
311
297
  logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
312
298
  await this._pc.setLocalDescription(offer);
313
299
  // We can now get the transceiver.mid.
@@ -631,6 +617,9 @@ class ReactNative106 extends enhancedEvents_1.EnhancedEventEmitter {
631
617
  if (!transceiver) {
632
618
  throw new Error('transceiver not found');
633
619
  }
620
+ if (this._forcedRtpExtensions) {
621
+ ortcUtils.applyForcedRtpExtensions(transceiver, this._forcedRtpExtensions);
622
+ }
634
623
  onRtpReceiver(transceiver.receiver);
635
624
  }
636
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":"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"}
1
+ {"version":3,"file":"Safari12.d.ts","sourceRoot":"","sources":["../../src/handlers/Safari12.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,7 @@ class Safari12 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 Safari12 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 Safari12(options),
82
+ factory: (options) => new Safari12({ ...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 Safari12 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 Safari12 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 Safari12 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 Safari12 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';
@@ -229,7 +234,7 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
229
234
  this.assertNotClosed();
230
235
  return this._pc.getStats();
231
236
  }
232
- async send({ track, streamId, encodings, codecOptions, headerExtensionOptions, codec, onRtpSender, }) {
237
+ async send({ track, streamId, encodings, codecOptions, codec, onRtpSender, }) {
233
238
  this.assertNotClosed();
234
239
  this.assertSendDirection();
235
240
  logger.debug('send() [kind:%s, track.id:%s, streamId:%s]', track.kind, track.id, streamId);
@@ -238,6 +243,9 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
238
243
  direction: 'sendonly',
239
244
  streams: [this._sendStream],
240
245
  });
246
+ if (this._forcedRtpExtensions) {
247
+ ortcUtils.applyForcedRtpExtensions(transceiver, this._forcedRtpExtensions);
248
+ }
241
249
  if (onRtpSender) {
242
250
  onRtpSender(transceiver.sender);
243
251
  }
@@ -246,15 +254,7 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
246
254
  if (localSdpObject.extmapAllowMixed) {
247
255
  this._remoteSdp.setSessionExtmapAllowMixed();
248
256
  }
249
- const extraHeaderExtensions = [];
250
- if (headerExtensionOptions?.absCaptureTime) {
251
- extraHeaderExtensions.push({
252
- uri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
253
- kind: track.kind,
254
- direction: 'sendonly',
255
- });
256
- }
257
- const nativeRtpCapabilities = Safari12.getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions);
257
+ const nativeRtpCapabilities = Safari12.getLocalRtpCapabilities(localSdpObject);
258
258
  const sendExtendedRtpCapabilities = this._getSendExtendedRtpCapabilities(nativeRtpCapabilities);
259
259
  // Generic sending RTP parameters.
260
260
  const sendingRtpParameters = ortc.getSendingRtpParameters(track.kind, sendExtendedRtpCapabilities);
@@ -285,20 +285,6 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
285
285
  sdp: sdpTransform.write(localSdpObject),
286
286
  };
287
287
  }
288
- // Optimize. Only generate new offer if needed.
289
- if (headerExtensionOptions?.absCaptureTime) {
290
- offerMediaObject = localSdpObject.media[mediaSectionIdx.idx];
291
- sdpCommonUtils.addHeaderExtension({
292
- offerMediaObject,
293
- headerExtensionUri: 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time',
294
- headerExtensionId: sendingRemoteRtpParameters.headerExtensions.find(headerExtension => headerExtension.uri ===
295
- 'http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time').id,
296
- });
297
- offer = {
298
- type: 'offer',
299
- sdp: sdpTransform.write(localSdpObject),
300
- };
301
- }
302
288
  logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
303
289
  await this._pc.setLocalDescription(offer);
304
290
  // We can now get the transceiver.mid.
@@ -592,6 +578,9 @@ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
592
578
  if (!transceiver) {
593
579
  throw new Error('transceiver not found');
594
580
  }
581
+ if (this._forcedRtpExtensions) {
582
+ ortcUtils.applyForcedRtpExtensions(transceiver, this._forcedRtpExtensions);
583
+ }
595
584
  onRtpReceiver(transceiver.receiver);
596
585
  }
597
586
  }
@@ -1,18 +1,17 @@
1
- import type { RtpCapabilities, MediaKind, RtpHeaderExtensionUri, RtpHeaderExtensionDirection } from '../../RtpParameters';
1
+ import type { HandlerForcedRtpExtensions } from '../../handlers/HandlerInterface';
2
+ import type { RtpCapabilities } from '../../RtpParameters';
2
3
  /**
3
4
  * This function adds RTCP NACK support for OPUS codec in given capabilities.
4
5
  */
5
6
  export declare function addNackSupportForOpus(rtpCapabilities: RtpCapabilities): void;
6
- /**
7
- * This function adds the given RTP header extension to given capabilities.
8
- */
9
- export declare function addHeaderExtensionSupport(rtpCapabilities: RtpCapabilities, headerExtension: {
10
- uri: RtpHeaderExtensionUri;
11
- kind: MediaKind;
12
- direction: RtpHeaderExtensionDirection;
13
- }): void;
14
7
  export declare function getMsidStreamIdAndTrackId(msid?: string): {
15
8
  msidStreamId?: string;
16
9
  msidTrackId?: string;
17
10
  };
11
+ /**
12
+ * Apply given desired RTP extension to the given RTCRtpTransceiver.
13
+ *
14
+ * @see https://w3c.github.io/webrtc-extensions/#rtp-header-extension-control
15
+ */
16
+ export declare function applyForcedRtpExtensions(transceiver: RTCRtpTransceiver, forcedRtpExtensions: HandlerForcedRtpExtensions): boolean;
18
17
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/handlers/ortc/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,eAAe,EACf,SAAS,EACT,qBAAqB,EACrB,2BAA2B,EAC3B,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI,CAc5E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE;IAChB,GAAG,EAAE,qBAAqB,CAAC;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,2BAA2B,CAAC;CACvC,GACC,IAAI,CA6CN;AAED,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAgBA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/handlers/ortc/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,KAAK,EACX,eAAe,EAEf,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI,CAc5E;AAED,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAgBA;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,WAAW,EAAE,iBAAiB,EAC9B,mBAAmB,EAAE,0BAA0B,GAC7C,OAAO,CAiCT"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addNackSupportForOpus = addNackSupportForOpus;
4
- exports.addHeaderExtensionSupport = addHeaderExtensionSupport;
5
4
  exports.getMsidStreamIdAndTrackId = getMsidStreamIdAndTrackId;
5
+ exports.applyForcedRtpExtensions = applyForcedRtpExtensions;
6
6
  /**
7
7
  * This function adds RTCP NACK support for OPUS codec in given capabilities.
8
8
  */
@@ -18,44 +18,6 @@ function addNackSupportForOpus(rtpCapabilities) {
18
18
  }
19
19
  }
20
20
  }
21
- /**
22
- * This function adds the given RTP header extension to given capabilities.
23
- */
24
- function addHeaderExtensionSupport(rtpCapabilities, headerExtension) {
25
- let preferredId;
26
- // Look for an already existing header extension with same `uri`. Don't
27
- // try to match `kind` since all media sections in a Bundle SDP must share
28
- // same `id` in extensions with same `uri` (as per spec). So if we are
29
- // adding an audio extension and there is already a video extension with
30
- // same `uri`, then reuse its preferred `id`.
31
- const existingHeaderExtension = rtpCapabilities.headerExtensions?.find(exten => exten.uri === headerExtension.uri);
32
- if (existingHeaderExtension) {
33
- if (existingHeaderExtension.kind === headerExtension.kind) {
34
- return;
35
- }
36
- else {
37
- preferredId = existingHeaderExtension.preferredId;
38
- }
39
- }
40
- if (!rtpCapabilities.headerExtensions) {
41
- rtpCapabilities.headerExtensions = [];
42
- }
43
- if (preferredId === undefined) {
44
- preferredId = 1;
45
- const setPreferredIds = new Set(rtpCapabilities.headerExtensions.map(exten => exten.preferredId));
46
- while (setPreferredIds.has(preferredId)) {
47
- ++preferredId;
48
- }
49
- }
50
- const newHeaderExtension = {
51
- kind: headerExtension.kind,
52
- uri: headerExtension.uri,
53
- preferredId,
54
- preferredEncrypt: false,
55
- direction: headerExtension.direction,
56
- };
57
- rtpCapabilities.headerExtensions.push(newHeaderExtension);
58
- }
59
21
  function getMsidStreamIdAndTrackId(msid) {
60
22
  if (!msid || typeof msid !== 'string') {
61
23
  return { msidStreamId: undefined, msidTrackId: undefined };
@@ -70,3 +32,32 @@ function getMsidStreamIdAndTrackId(msid) {
70
32
  }
71
33
  return { msidStreamId, msidTrackId };
72
34
  }
35
+ /**
36
+ * Apply given desired RTP extension to the given RTCRtpTransceiver.
37
+ *
38
+ * @see https://w3c.github.io/webrtc-extensions/#rtp-header-extension-control
39
+ */
40
+ function applyForcedRtpExtensions(transceiver, forcedRtpExtensions) {
41
+ // If the RTP header extension control API is not available then abort.
42
+ if (!transceiver.getHeaderExtensionsToNegotiate ||
43
+ !transceiver.setHeaderExtensionsToNegotiate) {
44
+ return false;
45
+ }
46
+ if (Object.keys(forcedRtpExtensions).length === 0) {
47
+ return false;
48
+ }
49
+ let extensionsToNegotiate = transceiver.getHeaderExtensionsToNegotiate();
50
+ extensionsToNegotiate = extensionsToNegotiate.map((extenCap) => {
51
+ const uri = extenCap.uri;
52
+ const enabled = forcedRtpExtensions[uri];
53
+ if (enabled === true) {
54
+ extenCap.direction = 'sendrecv';
55
+ }
56
+ else if (enabled === false) {
57
+ extenCap.direction = 'stopped';
58
+ }
59
+ return extenCap;
60
+ });
61
+ transceiver.setHeaderExtensionsToNegotiate(extensionsToNegotiate);
62
+ return true;
63
+ }