livekit-client 0.18.4 → 0.18.5

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":"LocalParticipant.d.ts","sourceRoot":"","sources":["../../../src/room/participant/LocalParticipant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalParticipant.d.ts","sourceRoot":"","sources":["../../../src/room/participant/LocalParticipant.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"publishUtils.d.ts","sourceRoot":"","sources":["../../../src/room/participant/publishUtils.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,MAAM,0BAA0B,CAAC;AACvD,OAAO,eAAe,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAEL,mBAAmB,EACnB,aAAa,EACb,WAAW,EAGZ,MAAM,kBAAkB,CAAC;AAE1B,gBAAgB;AAChB,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,CAAC,EAAE,qBAAqB,GAClC,eAAe,GAAG,eAAe,CASnC;AAGD,eAAO,MAAM,UAAU,eAA8B,CAAC;AAGtD,eAAO,MAAM,SAAS,eAAgC,CAAC;AAGvD,eAAO,MAAM,kBAAkB,eAAoC,CAAC;AAGpE,eAAO,MAAM,0BAA0B,eAAyC,CAAC;AAGjF,eAAO,MAAM,yBAAyB,eAA6C,CAAC;AAGpF,eAAO,MAAM,yCAAyC,eAAgB,WAAW,kBAiBhF,CAAC;AAKF,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,OAAO,EACtB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,mBAAmB,GAC5B,wBAAwB,EAAE,CA4D5B;AAGD,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,aAAa,CAgBf;AAGD,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,WAAW,EAAE,CASf;AAGD,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,WAAW,GACpB,WAAW,EAAE,CAUf;AA0BD,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,6BAelE"}
1
+ {"version":3,"file":"publishUtils.d.ts","sourceRoot":"","sources":["../../../src/room/participant/publishUtils.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,MAAM,0BAA0B,CAAC;AACvD,OAAO,eAAe,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAEL,mBAAmB,EACnB,aAAa,EACb,WAAW,EAGZ,MAAM,kBAAkB,CAAC;AAE1B,gBAAgB;AAChB,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,CAAC,EAAE,qBAAqB,GAClC,eAAe,GAAG,eAAe,CASnC;AAGD,eAAO,MAAM,UAAU,eAA8B,CAAC;AAGtD,eAAO,MAAM,SAAS,eAAgC,CAAC;AAGvD,eAAO,MAAM,kBAAkB,eAAoC,CAAC;AAGpE,eAAO,MAAM,0BAA0B,eAAyC,CAAC;AAGjF,eAAO,MAAM,yBAAyB,eAA6C,CAAC;AAGpF,eAAO,MAAM,yCAAyC,eAAgB,WAAW,kBAiBhF,CAAC;AAKF,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,OAAO,EACtB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,mBAAmB,GAC5B,wBAAwB,EAAE,CAyF5B;AAGD,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,aAAa,CAgBf;AAGD,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,WAAW,EAAE,CASf;AAGD,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,WAAW,GACpB,WAAW,EAAE,CAUf;AA0BD,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,6BAelE"}
@@ -10,6 +10,7 @@ export default class RemoteVideoTrack extends RemoteTrack {
10
10
  private lastDimensions?;
11
11
  constructor(mediaTrack: MediaStreamTrack, sid: string, receiver?: RTCRtpReceiver, adaptiveStreamSettings?: AdaptiveStreamSettings);
12
12
  get isAdaptiveStream(): boolean;
13
+ get mediaStreamTrack(): MediaStreamTrack;
13
14
  /** @internal */
14
15
  setMuted(muted: boolean): void;
15
16
  attach(): HTMLMediaElement;
@@ -1 +1 @@
1
- {"version":3,"file":"RemoteVideoTrack.d.ts","sourceRoot":"","sources":["../../../src/room/track/RemoteVideoTrack.ts"],"names":[],"mappings":"AASA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IACvD,gBAAgB;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,OAAO,CAAC,SAAS,CAAC,CAAqB;IAEvC,OAAO,CAAC,YAAY,CAAqB;IAEzC,OAAO,CAAC,sBAAsB,CAAC,CAAyB;IAExD,OAAO,CAAC,WAAW,CAAC,CAAU;IAE9B,OAAO,CAAC,cAAc,CAAC,CAAmB;gBAGxC,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,cAAc,EACzB,sBAAsB,CAAC,EAAE,sBAAsB;IASjD,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,gBAAgB;IAChB,QAAQ,CAAC,KAAK,EAAE,OAAO;IAavB,MAAM,IAAI,gBAAgB;IAC1B,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB;IAiCnD,MAAM,IAAI,gBAAgB,EAAE;IAC5B,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB;IAgBnD,SAAS,CAAC,eAAe,sBAevB;YAEY,gBAAgB;IA8B9B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,uBAAuB,CAQ7B;cAEc,0BAA0B;IAQ1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAEnB;IAEnB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,gBAAgB;CAwBzB"}
1
+ {"version":3,"file":"RemoteVideoTrack.d.ts","sourceRoot":"","sources":["../../../src/room/track/RemoteVideoTrack.ts"],"names":[],"mappings":"AASA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IACvD,gBAAgB;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,OAAO,CAAC,SAAS,CAAC,CAAqB;IAEvC,OAAO,CAAC,YAAY,CAAqB;IAEzC,OAAO,CAAC,sBAAsB,CAAC,CAAyB;IAExD,OAAO,CAAC,WAAW,CAAC,CAAU;IAE9B,OAAO,CAAC,cAAc,CAAC,CAAmB;gBAGxC,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,cAAc,EACzB,sBAAsB,CAAC,EAAE,sBAAsB;IASjD,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,gBAAgB,qBAOnB;IAED,gBAAgB;IAChB,QAAQ,CAAC,KAAK,EAAE,OAAO;IAavB,MAAM,IAAI,gBAAgB;IAC1B,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB;IAiCnD,MAAM,IAAI,gBAAgB,EAAE;IAC5B,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB;IAgBnD,SAAS,CAAC,eAAe,sBAevB;YAEY,gBAAgB;IA8B9B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,uBAAuB,CAQ7B;cAEc,0BAA0B;IAQ1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAEnB;IAEnB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,gBAAgB;CAwBzB"}
@@ -4,20 +4,24 @@ import { StreamState as ProtoStreamState } from '../../proto/livekit_rtc';
4
4
  declare const Track_base: new () => TypedEventEmitter<TrackEventCallbacks>;
5
5
  export declare class Track extends Track_base {
6
6
  kind: Track.Kind;
7
- mediaStream?: MediaStream;
8
- mediaStreamTrack: MediaStreamTrack;
9
7
  attachedElements: HTMLMediaElement[];
10
8
  isMuted: boolean;
11
9
  source: Track.Source;
12
- protected isInBackground: boolean;
13
10
  /**
14
11
  * sid is set after track is published to server, or if it's a remote track
15
12
  */
16
13
  sid?: Track.SID;
14
+ /**
15
+ * @internal
16
+ */
17
+ mediaStream?: MediaStream;
18
+ protected _mediaStreamTrack: MediaStreamTrack;
19
+ protected isInBackground: boolean;
17
20
  protected _currentBitrate: number;
18
21
  protected constructor(mediaTrack: MediaStreamTrack, kind: Track.Kind);
19
22
  /** current receive bits per second */
20
23
  get currentBitrate(): number;
24
+ get mediaStreamTrack(): MediaStreamTrack;
21
25
  /**
22
26
  * creates a new HTMLAudioElement or HTMLVideoElement, attaches to it, and returns it
23
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Track.d.ts","sourceRoot":"","sources":["../../../src/room/track/Track.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Track.d.ts","sourceRoot":"","sources":["../../../src/room/track/Track.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/room/track/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAGnB,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,WAAW,CAAC;AAEnB,eAAO,MAAM,eAAe,EAAE,oBAM7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,mBAK3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,mBAE3B,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/room/track/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAGnB,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,WAAW,CAAC;AAEnB,eAAO,MAAM,eAAe,EAAE,oBAM7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,mBAI3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,mBAE3B,CAAC"}
@@ -26,6 +26,11 @@ export interface TrackPublishDefaults {
26
26
  * at various resolutions.
27
27
  */
28
28
  simulcast?: boolean;
29
+ /**
30
+ * scalability mode for svc codecs, defaults to 'L3T3'.
31
+ * for svc codecs, simulcast is disabled.
32
+ */
33
+ scalabilityMode?: ScalabilityMode;
29
34
  /**
30
35
  * custom video simulcast layers for camera tracks, defaults to h180, h360, h540
31
36
  * You can specify up to two custom layers that will be used instead of
@@ -150,6 +155,10 @@ export interface AudioPreset {
150
155
  maxBitrate: number;
151
156
  }
152
157
  export declare type VideoCodec = 'vp8' | 'h264' | 'av1' | 'vp9';
158
+ /**
159
+ * scalability modes for svc, only supprot l3t3 now.
160
+ */
161
+ export declare type ScalabilityMode = 'L3T3';
153
162
  export declare namespace AudioPresets {
154
163
  const telephone: AudioPreset;
155
164
  const speech: AudioPreset;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/room/track/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/room/track/options.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export declare const version = "0.18.4";
1
+ export declare const version = "0.18.5";
2
2
  export declare const protocolVersion = 7;
3
3
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livekit-client",
3
- "version": "0.18.4",
3
+ "version": "0.18.5",
4
4
  "description": "JavaScript/TypeScript client SDK for LiveKit",
5
5
  "main": "./dist/livekit-client.umd.js",
6
6
  "unpkg": "./dist/livekit-client.umd.js",
@@ -409,6 +409,18 @@ export default class LocalParticipant extends Participant {
409
409
  // width and height should be defined for video
410
410
  req.width = width ?? 0;
411
411
  req.height = height ?? 0;
412
+ // for svc codecs, disable simulcast and enable scalability L3T3
413
+ // by default
414
+ if (track instanceof LocalVideoTrack) {
415
+ if (opts?.videoCodec === 'vp9' || opts?.videoCodec === 'av1') {
416
+ opts.simulcast = false;
417
+ opts.scalabilityMode = opts.scalabilityMode ?? 'L3T3';
418
+ } else {
419
+ // other codecs, unset scalability
420
+ opts.scalabilityMode = undefined;
421
+ }
422
+ }
423
+
412
424
  encodings = computeVideoEncodings(
413
425
  track.source === Track.Source.ScreenShare,
414
426
  width,
@@ -440,6 +452,9 @@ export default class LocalParticipant extends Participant {
440
452
  track.mediaStreamTrack,
441
453
  transceiverInit,
442
454
  );
455
+ if (opts.videoCodec) {
456
+ this.setPreferredCodec(transceiver, track.kind, opts.videoCodec);
457
+ }
443
458
  this.engine.negotiate();
444
459
 
445
460
  // store RTPSender
@@ -449,10 +464,6 @@ export default class LocalParticipant extends Participant {
449
464
  } else if (track instanceof LocalAudioTrack) {
450
465
  track.startMonitor();
451
466
  }
452
-
453
- if (opts.videoCodec) {
454
- this.setPreferredCodec(transceiver, track.kind, opts.videoCodec);
455
- }
456
467
  this.addTrackPublication(publication);
457
468
 
458
469
  // send event for publication
@@ -699,21 +710,34 @@ export default class LocalParticipant extends Participant {
699
710
  }
700
711
  const cap = RTCRtpSender.getCapabilities(kind);
701
712
  if (!cap) return;
702
- const selected = cap.codecs.find((c) => {
713
+ let selected: RTCRtpCodecCapability | undefined;
714
+ const codecs: RTCRtpCodecCapability[] = [];
715
+ cap.codecs.forEach((c) => {
703
716
  const codec = c.mimeType.toLowerCase();
704
717
  const matchesVideoCodec = codec === `video/${videoCodec}`;
705
718
 
719
+ if (selected !== undefined) {
720
+ codecs.push(c);
721
+ return;
722
+ }
706
723
  // for h264 codecs that have sdpFmtpLine available, use only if the
707
724
  // profile-level-id is 42e01f for cross-browser compatibility
708
725
  if (videoCodec === 'h264' && c.sdpFmtpLine) {
709
- return matchesVideoCodec && c.sdpFmtpLine.includes('profile-level-id=42e01f');
726
+ if (matchesVideoCodec && c.sdpFmtpLine.includes('profile-level-id=42e01f')) {
727
+ selected = c;
728
+ return;
729
+ }
710
730
  }
711
-
712
- return matchesVideoCodec || codec === 'audio/opus';
731
+ if (matchesVideoCodec || codec === 'audio/opus') {
732
+ selected = c;
733
+ return;
734
+ }
735
+ codecs.push(c);
713
736
  });
714
737
  if (selected && 'setCodecPreferences' in transceiver) {
715
738
  // @ts-ignore
716
- transceiver.setCodecPreferences([selected]);
739
+ codecs.unshift(selected);
740
+ transceiver.setCodecPreferences(codecs);
717
741
  }
718
742
  }
719
743
 
@@ -75,9 +75,10 @@ export function computeVideoEncodings(
75
75
  videoEncoding = options?.screenShareEncoding;
76
76
  }
77
77
  const useSimulcast = options?.simulcast;
78
+ const scalabilityMode = options?.scalabilityMode;
78
79
 
79
- if ((!videoEncoding && !useSimulcast) || !width || !height) {
80
- // when we aren't simulcasting, will need to return a single encoding without
80
+ if ((!videoEncoding && !useSimulcast && !scalabilityMode) || !width || !height) {
81
+ // when we aren't simulcasting or svc, will need to return a single encoding without
81
82
  // capping bandwidth. we always require a encoding for dynacast
82
83
  return [{}];
83
84
  }
@@ -88,15 +89,43 @@ export function computeVideoEncodings(
88
89
  log.debug('using video encoding', videoEncoding);
89
90
  }
90
91
 
91
- if (!useSimulcast) {
92
- return [videoEncoding];
93
- }
94
92
  const original = new VideoPreset(
95
93
  width,
96
94
  height,
97
95
  videoEncoding.maxBitrate,
98
96
  videoEncoding.maxFramerate,
99
97
  );
98
+
99
+ log.debug(`scalabilityMode ${scalabilityMode}`);
100
+ if (scalabilityMode) {
101
+ const encodings: RTCRtpEncodingParameters[] = [];
102
+ // svc use first encoding as the original, so we sort encoding from high to low
103
+ switch (scalabilityMode) {
104
+ case 'L3T3':
105
+ for (let i = 0; i < 3; i += 1) {
106
+ encodings.push({
107
+ rid: videoRids[2 - i],
108
+ scaleResolutionDownBy: 2 ** i,
109
+ maxBitrate: videoEncoding ? videoEncoding.maxBitrate / 2 ** i : 0,
110
+ /* @ts-ignore */
111
+ maxFramerate: original.encoding.maxFramerate,
112
+ /* @ts-ignore */
113
+ scalabilityMode: 'L3T3',
114
+ });
115
+ }
116
+ log.debug('encodings', encodings);
117
+ return encodings;
118
+
119
+ default:
120
+ // TODO : support other scalability modes
121
+ throw new Error(`unsupported scalabilityMode: ${scalabilityMode}`);
122
+ }
123
+ }
124
+
125
+ if (!useSimulcast) {
126
+ return [videoEncoding];
127
+ }
128
+
100
129
  let presets: Array<VideoPreset> = [];
101
130
  if (isScreenShare) {
102
131
  presets =
@@ -34,7 +34,7 @@ export default class LocalAudioTrack extends LocalTrack {
34
34
  if (this.source === Track.Source.Microphone && this.stopOnMute) {
35
35
  log.debug('stopping mic track');
36
36
  // also stop the track, so that microphone indicator is turned off
37
- this.mediaStreamTrack.stop();
37
+ this._mediaStreamTrack.stop();
38
38
  }
39
39
  await super.mute();
40
40
  return this;
@@ -83,7 +83,7 @@ export default class LocalAudioTrack extends LocalTrack {
83
83
  try {
84
84
  stats = await this.getSenderStats();
85
85
  } catch (e) {
86
- log.error('could not get audio sender stats', e);
86
+ log.error('could not get audio sender stats', { error: e });
87
87
  return;
88
88
  }
89
89
 
@@ -21,14 +21,14 @@ export default class LocalTrack extends Track {
21
21
  constraints?: MediaTrackConstraints,
22
22
  ) {
23
23
  super(mediaTrack, kind);
24
- this.mediaStreamTrack.addEventListener('ended', this.handleEnded);
24
+ this._mediaStreamTrack.addEventListener('ended', this.handleEnded);
25
25
  this.constraints = constraints ?? mediaTrack.getConstraints();
26
26
  this.reacquireTrack = false;
27
27
  this.wasMuted = false;
28
28
  }
29
29
 
30
30
  get id(): string {
31
- return this.mediaStreamTrack.id;
31
+ return this._mediaStreamTrack.id;
32
32
  }
33
33
 
34
34
  get dimensions(): Track.Dimensions | undefined {
@@ -36,7 +36,7 @@ export default class LocalTrack extends Track {
36
36
  return undefined;
37
37
  }
38
38
 
39
- const { width, height } = this.mediaStreamTrack.getSettings();
39
+ const { width, height } = this._mediaStreamTrack.getSettings();
40
40
  if (width && height) {
41
41
  return {
42
42
  width,
@@ -60,7 +60,7 @@ export default class LocalTrack extends Track {
60
60
  if (this.source === Track.Source.ScreenShare) {
61
61
  return;
62
62
  }
63
- const { deviceId, groupId } = this.mediaStreamTrack.getSettings();
63
+ const { deviceId, groupId } = this._mediaStreamTrack.getSettings();
64
64
  const kind = this.kind === Track.Kind.Audio ? 'audioinput' : 'videoinput';
65
65
 
66
66
  return DeviceManager.getInstance().normalizeDeviceId(kind, deviceId, groupId);
@@ -83,19 +83,19 @@ export default class LocalTrack extends Track {
83
83
 
84
84
  // detach
85
85
  this.attachedElements.forEach((el) => {
86
- detachTrack(this.mediaStreamTrack, el);
86
+ detachTrack(this._mediaStreamTrack, el);
87
87
  });
88
- this.mediaStreamTrack.removeEventListener('ended', this.handleEnded);
88
+ this._mediaStreamTrack.removeEventListener('ended', this.handleEnded);
89
89
  // on Safari, the old audio track must be stopped before attempting to acquire
90
90
  // the new track, otherwise the new track will stop with
91
91
  // 'A MediaStreamTrack ended due to a capture failure`
92
- this.mediaStreamTrack.stop();
92
+ this._mediaStreamTrack.stop();
93
93
 
94
94
  track.addEventListener('ended', this.handleEnded);
95
95
  log.debug('replace MediaStreamTrack');
96
96
 
97
97
  await this.sender.replaceTrack(track);
98
- this.mediaStreamTrack = track;
98
+ this._mediaStreamTrack = track;
99
99
 
100
100
  this.attachedElements.forEach((el) => {
101
101
  attachToElement(track, el);
@@ -127,13 +127,13 @@ export default class LocalTrack extends Track {
127
127
 
128
128
  // detach
129
129
  this.attachedElements.forEach((el) => {
130
- detachTrack(this.mediaStreamTrack, el);
130
+ detachTrack(this._mediaStreamTrack, el);
131
131
  });
132
- this.mediaStreamTrack.removeEventListener('ended', this.handleEnded);
132
+ this._mediaStreamTrack.removeEventListener('ended', this.handleEnded);
133
133
  // on Safari, the old audio track must be stopped before attempting to acquire
134
134
  // the new track, otherwise the new track will stop with
135
135
  // 'A MediaStreamTrack ended due to a capture failure`
136
- this.mediaStreamTrack.stop();
136
+ this._mediaStreamTrack.stop();
137
137
 
138
138
  // create new track and attach
139
139
  const mediaStream = await navigator.mediaDevices.getUserMedia(streamConstraints);
@@ -142,7 +142,7 @@ export default class LocalTrack extends Track {
142
142
  log.debug('re-acquired MediaStreamTrack');
143
143
 
144
144
  await this.sender.replaceTrack(newTrack);
145
- this.mediaStreamTrack = newTrack;
145
+ this._mediaStreamTrack = newTrack;
146
146
 
147
147
  this.attachedElements.forEach((el) => {
148
148
  attachToElement(newTrack, el);
@@ -159,15 +159,15 @@ export default class LocalTrack extends Track {
159
159
  }
160
160
 
161
161
  this.isMuted = muted;
162
- this.mediaStreamTrack.enabled = !muted;
162
+ this._mediaStreamTrack.enabled = !muted;
163
163
  this.emit(muted ? TrackEvent.Muted : TrackEvent.Unmuted, this);
164
164
  }
165
165
 
166
166
  protected get needsReAcquisition(): boolean {
167
167
  return (
168
- this.mediaStreamTrack.readyState !== 'live' ||
169
- this.mediaStreamTrack.muted ||
170
- !this.mediaStreamTrack.enabled ||
168
+ this._mediaStreamTrack.readyState !== 'live' ||
169
+ this._mediaStreamTrack.muted ||
170
+ !this._mediaStreamTrack.enabled ||
171
171
  this.reacquireTrack
172
172
  );
173
173
  }
@@ -224,6 +224,6 @@ export default class LocalTrack extends Track {
224
224
  this._isUpstreamPaused = false;
225
225
  this.emit(TrackEvent.UpstreamResumed, this);
226
226
 
227
- await this.sender.replaceTrack(this.mediaStreamTrack);
227
+ await this.sender.replaceTrack(this._mediaStreamTrack);
228
228
  }
229
229
  }
@@ -44,7 +44,7 @@ export default class LocalVideoTrack extends LocalTrack {
44
44
 
45
45
  stop() {
46
46
  this.sender = undefined;
47
- this.mediaStreamTrack.getConstraints();
47
+ this._mediaStreamTrack.getConstraints();
48
48
  super.stop();
49
49
  }
50
50
 
@@ -52,7 +52,7 @@ export default class LocalVideoTrack extends LocalTrack {
52
52
  if (this.source === Track.Source.Camera) {
53
53
  log.debug('stopping camera track');
54
54
  // also stop the track, so that camera indicator is turned off
55
- this.mediaStreamTrack.stop();
55
+ this._mediaStreamTrack.stop();
56
56
  }
57
57
  await super.mute();
58
58
  return this;
@@ -243,7 +243,7 @@ export default class LocalVideoTrack extends LocalTrack {
243
243
  await super.handleAppVisibilityChanged();
244
244
  if (!isMobile()) return;
245
245
  if (this.isInBackground && this.source === Track.Source.Camera) {
246
- this.mediaStreamTrack.enabled = false;
246
+ this._mediaStreamTrack.enabled = false;
247
247
  }
248
248
  }
249
249
  }
@@ -44,6 +44,15 @@ export default class RemoteVideoTrack extends RemoteTrack {
44
44
  return this.adaptiveStreamSettings !== undefined;
45
45
  }
46
46
 
47
+ get mediaStreamTrack() {
48
+ if (this.isAdaptiveStream && this.attachedElements.length === 0) {
49
+ throw Error(
50
+ 'When using adaptiveStream, you need to use remoteVideoTrack.attach() to add the track to a HTMLVideoElement, direct usage of mediaStreamTrack is unsupported in this case',
51
+ );
52
+ }
53
+ return this._mediaStreamTrack;
54
+ }
55
+
47
56
  /** @internal */
48
57
  setMuted(muted: boolean) {
49
58
  super.setMuted(muted);
@@ -51,9 +60,9 @@ export default class RemoteVideoTrack extends RemoteTrack {
51
60
  this.attachedElements.forEach((element) => {
52
61
  // detach or attach
53
62
  if (muted) {
54
- detachTrack(this.mediaStreamTrack, element);
63
+ detachTrack(this._mediaStreamTrack, element);
55
64
  } else {
56
- attachToElement(this.mediaStreamTrack, element);
65
+ attachToElement(this._mediaStreamTrack, element);
57
66
  }
58
67
  });
59
68
  }
@@ -12,29 +12,32 @@ const recycledElements: Array<HTMLAudioElement> = [];
12
12
  export class Track extends (EventEmitter as new () => TypedEventEmitter<TrackEventCallbacks>) {
13
13
  kind: Track.Kind;
14
14
 
15
- mediaStream?: MediaStream;
16
-
17
- mediaStreamTrack: MediaStreamTrack;
18
-
19
15
  attachedElements: HTMLMediaElement[] = [];
20
16
 
21
17
  isMuted: boolean = false;
22
18
 
23
19
  source: Track.Source;
24
20
 
25
- protected isInBackground: boolean;
26
-
27
21
  /**
28
22
  * sid is set after track is published to server, or if it's a remote track
29
23
  */
30
24
  sid?: Track.SID;
31
25
 
26
+ /**
27
+ * @internal
28
+ */
29
+ mediaStream?: MediaStream;
30
+
31
+ protected _mediaStreamTrack: MediaStreamTrack;
32
+
33
+ protected isInBackground: boolean;
34
+
32
35
  protected _currentBitrate: number = 0;
33
36
 
34
37
  protected constructor(mediaTrack: MediaStreamTrack, kind: Track.Kind) {
35
38
  super();
36
39
  this.kind = kind;
37
- this.mediaStreamTrack = mediaTrack;
40
+ this._mediaStreamTrack = mediaTrack;
38
41
  this.source = Track.Source.Unknown;
39
42
  if (isWeb()) {
40
43
  this.isInBackground = document.visibilityState === 'hidden';
@@ -49,6 +52,10 @@ export class Track extends (EventEmitter as new () => TypedEventEmitter<TrackEve
49
52
  return this._currentBitrate;
50
53
  }
51
54
 
55
+ get mediaStreamTrack() {
56
+ return this._mediaStreamTrack;
57
+ }
58
+
52
59
  /**
53
60
  * creates a new HTMLAudioElement or HTMLVideoElement, attaches to it, and returns it
54
61
  */
@@ -87,7 +94,7 @@ export class Track extends (EventEmitter as new () => TypedEventEmitter<TrackEve
87
94
  // even if we believe it's already attached to the element, it's possible
88
95
  // the element's srcObject was set to something else out of band.
89
96
  // we'll want to re-attach it in that case
90
- attachToElement(this.mediaStreamTrack, element);
97
+ attachToElement(this._mediaStreamTrack, element);
91
98
 
92
99
  if (element instanceof HTMLAudioElement) {
93
100
  // manually play audio to detect audio playback status
@@ -118,7 +125,7 @@ export class Track extends (EventEmitter as new () => TypedEventEmitter<TrackEve
118
125
  detach(element?: HTMLMediaElement): HTMLMediaElement | HTMLMediaElement[] {
119
126
  // detach from a single element
120
127
  if (element) {
121
- detachTrack(this.mediaStreamTrack, element);
128
+ detachTrack(this._mediaStreamTrack, element);
122
129
  const idx = this.attachedElements.indexOf(element);
123
130
  if (idx >= 0) {
124
131
  this.attachedElements.splice(idx, 1);
@@ -130,7 +137,7 @@ export class Track extends (EventEmitter as new () => TypedEventEmitter<TrackEve
130
137
 
131
138
  const detached: HTMLMediaElement[] = [];
132
139
  this.attachedElements.forEach((elm) => {
133
- detachTrack(this.mediaStreamTrack, elm);
140
+ detachTrack(this._mediaStreamTrack, elm);
134
141
  detached.push(elm);
135
142
  this.recycleElement(elm);
136
143
  this.emit(TrackEvent.ElementDetached, elm);
@@ -142,18 +149,18 @@ export class Track extends (EventEmitter as new () => TypedEventEmitter<TrackEve
142
149
  }
143
150
 
144
151
  stop() {
145
- this.mediaStreamTrack.stop();
152
+ this._mediaStreamTrack.stop();
146
153
  if (isWeb()) {
147
154
  document.removeEventListener('visibilitychange', this.appVisibilityChangedListener);
148
155
  }
149
156
  }
150
157
 
151
158
  protected enable() {
152
- this.mediaStreamTrack.enabled = true;
159
+ this._mediaStreamTrack.enabled = true;
153
160
  }
154
161
 
155
162
  protected disable() {
156
- this.mediaStreamTrack.enabled = false;
163
+ this._mediaStreamTrack.enabled = false;
157
164
  }
158
165
 
159
166
  private recycleElement(element: HTMLMediaElement) {
@@ -17,11 +17,10 @@ export const publishDefaults: TrackPublishDefaults = {
17
17
 
18
18
  export const audioDefaults: AudioCaptureOptions = {
19
19
  autoGainControl: true,
20
- channelCount: 1,
21
20
  echoCancellation: true,
22
21
  noiseSuppression: true,
23
22
  };
24
23
 
25
24
  export const videoDefaults: VideoCaptureOptions = {
26
- resolution: VideoPresets.h540.resolution,
25
+ resolution: VideoPresets.h720.resolution,
27
26
  };
@@ -33,6 +33,12 @@ export interface TrackPublishDefaults {
33
33
  */
34
34
  simulcast?: boolean;
35
35
 
36
+ /**
37
+ * scalability mode for svc codecs, defaults to 'L3T3'.
38
+ * for svc codecs, simulcast is disabled.
39
+ */
40
+ scalabilityMode?: ScalabilityMode;
41
+
36
42
  /**
37
43
  * custom video simulcast layers for camera tracks, defaults to h180, h360, h540
38
44
  * You can specify up to two custom layers that will be used instead of
@@ -200,6 +206,11 @@ export interface AudioPreset {
200
206
 
201
207
  export type VideoCodec = 'vp8' | 'h264' | 'av1' | 'vp9';
202
208
 
209
+ /**
210
+ * scalability modes for svc, only supprot l3t3 now.
211
+ */
212
+ export type ScalabilityMode = 'L3T3';
213
+
203
214
  export namespace AudioPresets {
204
215
  export const telephone: AudioPreset = {
205
216
  maxBitrate: 12_000,
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
- export const version = '0.18.4';
1
+ export const version = '0.18.5';
2
2
  export const protocolVersion = 7;