hls.js 1.5.7-0.canary.10042 → 1.5.8-0.canary.10044

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.
@@ -101,7 +101,10 @@ export default class BufferController extends Logger implements ComponentAPI {
101
101
  super('buffer-controller', hls.logger);
102
102
  this.hls = hls;
103
103
  this.fragmentTracker = fragmentTracker;
104
- this.appendSource = hls.config.preferManagedMediaSource;
104
+ this.appendSource =
105
+ hls.config.preferManagedMediaSource &&
106
+ typeof self !== 'undefined' &&
107
+ (self as any).ManagedMediaSource;
105
108
  this._initSourceBuffer();
106
109
  this.registerListeners();
107
110
  }
@@ -211,8 +214,10 @@ export default class BufferController extends Logger implements ComponentAPI {
211
214
  ms.addEventListener('sourceopen', this._onMediaSourceOpen);
212
215
  ms.addEventListener('sourceended', this._onMediaSourceEnded);
213
216
  ms.addEventListener('sourceclose', this._onMediaSourceClose);
214
- ms.addEventListener('startstreaming', this._onStartStreaming);
215
- ms.addEventListener('endstreaming', this._onEndStreaming);
217
+ if (this.appendSource) {
218
+ ms.addEventListener('startstreaming', this._onStartStreaming);
219
+ ms.addEventListener('endstreaming', this._onEndStreaming);
220
+ }
216
221
 
217
222
  // cache the locally generated object url
218
223
  const objectUrl = (this._objectUrl = self.URL.createObjectURL(ms));
@@ -271,8 +276,13 @@ export default class BufferController extends Logger implements ComponentAPI {
271
276
  mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);
272
277
  mediaSource.removeEventListener('sourceended', this._onMediaSourceEnded);
273
278
  mediaSource.removeEventListener('sourceclose', this._onMediaSourceClose);
274
- mediaSource.removeEventListener('startstreaming', this._onStartStreaming);
275
- mediaSource.removeEventListener('endstreaming', this._onEndStreaming);
279
+ if (this.appendSource) {
280
+ mediaSource.removeEventListener(
281
+ 'startstreaming',
282
+ this._onStartStreaming,
283
+ );
284
+ mediaSource.removeEventListener('endstreaming', this._onEndStreaming);
285
+ }
276
286
 
277
287
  // Detach properly the MediaSource from the HTMLMediaElement as
278
288
  // suggested in https://github.com/w3c/media-source/issues/53.
@@ -363,7 +373,7 @@ export default class BufferController extends Logger implements ComponentAPI {
363
373
  if (trackName.slice(0, 5) === 'audio') {
364
374
  trackCodec = getCodecCompatibleName(
365
375
  trackCodec,
366
- this.hls.config.preferManagedMediaSource,
376
+ this.appendSource,
367
377
  );
368
378
  }
369
379
  const mimeType = `${container};codecs=${trackCodec}`;
@@ -1049,10 +1059,7 @@ export default class BufferController extends Logger implements ComponentAPI {
1049
1059
  let codec = track.levelCodec || track.codec;
1050
1060
  if (codec) {
1051
1061
  if (trackName.slice(0, 5) === 'audio') {
1052
- codec = getCodecCompatibleName(
1053
- codec,
1054
- this.hls.config.preferManagedMediaSource,
1055
- );
1062
+ codec = getCodecCompatibleName(codec, this.appendSource);
1056
1063
  }
1057
1064
  }
1058
1065
  const mimeType = `${track.container};codecs=${codec}`;
@@ -1065,19 +1072,21 @@ export default class BufferController extends Logger implements ComponentAPI {
1065
1072
  this.addBufferListener(sbName, 'updateend', this._onSBUpdateEnd);
1066
1073
  this.addBufferListener(sbName, 'error', this._onSBUpdateError);
1067
1074
  // ManagedSourceBuffer bufferedchange event
1068
- this.addBufferListener(
1069
- sbName,
1070
- 'bufferedchange',
1071
- (type: SourceBufferName, event: BufferedChangeEvent) => {
1072
- // If media was ejected check for a change. Added ranges are redundant with changes on 'updateend' event.
1073
- const removedRanges = event.removedRanges;
1074
- if (removedRanges?.length) {
1075
- this.hls.trigger(Events.BUFFER_FLUSHED, {
1076
- type: trackName as SourceBufferName,
1077
- });
1078
- }
1079
- },
1080
- );
1075
+ if (this.appendSource) {
1076
+ this.addBufferListener(
1077
+ sbName,
1078
+ 'bufferedchange',
1079
+ (type: SourceBufferName, event: BufferedChangeEvent) => {
1080
+ // If media was ejected check for a change. Added ranges are redundant with changes on 'updateend' event.
1081
+ const removedRanges = event.removedRanges;
1082
+ if (removedRanges?.length) {
1083
+ this.hls.trigger(Events.BUFFER_FLUSHED, {
1084
+ type: trackName as SourceBufferName,
1085
+ });
1086
+ }
1087
+ },
1088
+ );
1089
+ }
1081
1090
 
1082
1091
  this.tracks[trackName] = {
1083
1092
  buffer: sb,