bigscreen-player 8.6.0 → 8.7.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,5 +1,5 @@
1
1
  import { fromXML, generateISD, renderHTML } from 'smp-imsc';
2
- import { f as findSegmentTemplate, L as LoadUrl, a as DebugToolInstance, P as Plugins, U as Utils, D as DOMHelpers } from './main-f02ff055.js';
2
+ import { f as findSegmentTemplate, L as LoadUrl, a as DebugToolInstance, P as Plugins, U as Utils, D as DOMHelpers } from './main-39559d4f.js';
3
3
 
4
4
  const SEGMENTS_BUFFER_SIZE = 3;
5
5
  const LOAD_ERROR_COUNT_MAX = 3;
@@ -1,4 +1,4 @@
1
- import { D as DOMHelpers, a as DebugToolInstance, P as Plugins, L as LoadUrl, T as TransportControlPosition } from './main-f02ff055.js';
1
+ import { D as DOMHelpers, a as DebugToolInstance, P as Plugins, L as LoadUrl, T as TransportControlPosition } from './main-39559d4f.js';
2
2
 
3
3
  /**
4
4
  * Safely checks if an attribute exists on an element.
@@ -5960,7 +5960,7 @@ BasicStrategy.getLiveSupport = () => LiveSupport.SEEKABLE;
5960
5960
  function StrategyPicker() {
5961
5961
  return new Promise((resolve, reject) => {
5962
5962
  if (window.bigscreenPlayer.playbackStrategy === PlaybackStrategy.MSE) {
5963
- return import('./msestrategy-42cf77cc.js')
5963
+ return import('./msestrategy-4c14d0cd.js')
5964
5964
  .then(({ default: MSEStrategy }) => resolve(MSEStrategy))
5965
5965
  .catch(() => {
5966
5966
  reject({ error: "strategyDynamicLoadError" });
@@ -6383,7 +6383,7 @@ const PauseTriggers = {
6383
6383
  DEVICE: 3,
6384
6384
  };
6385
6385
 
6386
- var Version = "8.6.0";
6386
+ var Version = "8.7.1";
6387
6387
 
6388
6388
  var sourceList;
6389
6389
  var source;
@@ -7734,7 +7734,7 @@ function Subtitles(mediaPlayer, autoStart, playbackElement, defaultStyleOpts, me
7734
7734
 
7735
7735
  if (available()) {
7736
7736
  if (useLegacySubs) {
7737
- import('./legacysubtitles-954d904b.js')
7737
+ import('./legacysubtitles-9f1cf253.js')
7738
7738
  .then(({ default: LegacySubtitles }) => {
7739
7739
  subtitlesContainer = LegacySubtitles(mediaPlayer, autoStart, playbackElement, mediaSources, defaultStyleOpts);
7740
7740
  callback(subtitlesEnabled);
@@ -7743,7 +7743,7 @@ function Subtitles(mediaPlayer, autoStart, playbackElement, defaultStyleOpts, me
7743
7743
  Plugins.interface.onSubtitlesDynamicLoadError();
7744
7744
  });
7745
7745
  } else {
7746
- import('./imscsubtitles-66e8a316.js')
7746
+ import('./imscsubtitles-9740e301.js')
7747
7747
  .then(({ default: IMSCSubtitles }) => {
7748
7748
  subtitlesContainer = IMSCSubtitles(mediaPlayer, autoStart, playbackElement, mediaSources, defaultStyleOpts);
7749
7749
  callback(subtitlesEnabled);
@@ -8530,4 +8530,4 @@ const TransportControlPosition = {
8530
8530
  FULLSCREEN: 16,
8531
8531
  };
8532
8532
 
8533
- export { BigscreenPlayer as B, DOMHelpers as D, EntryCategory as E, LoadUrl as L, MediaState as M, Plugins as P, TransportControlPosition as T, Utils as U, WindowTypes as W, DebugToolInstance as a, PauseTriggers as b, LiveSupport as c, MediaKinds as d, TimeUtils as e, findSegmentTemplate as f, DynamicWindowUtils as g, MockBigscreenPlayer as h, PlaybackStrategy as i, TransferFormat as j, isMessage as k, isMetric as l, isTrace as m };
8533
+ export { BigscreenPlayer as B, DOMHelpers as D, EntryCategory as E, LoadUrl as L, MediaKinds as M, Plugins as P, TransportControlPosition as T, Utils as U, WindowTypes as W, DebugToolInstance as a, PauseTriggers as b, LiveSupport as c, TimeUtils as d, DynamicWindowUtils as e, findSegmentTemplate as f, MediaState as g, MockBigscreenPlayer as h, PlaybackStrategy as i, TransferFormat as j, isMessage as k, isMetric as l, isTrace as m };
package/dist/esm/main.js CHANGED
@@ -1 +1 @@
1
- export { B as BigscreenPlayer, a as DebugTool, E as EntryCategory, c as LiveSupport, d as MediaKinds, M as MediaState, h as MockBigscreenPlayer, b as PauseTriggers, i as PlaybackStrategy, j as TransferFormat, T as TransportControlPosition, W as WindowTypes, k as isMessage, l as isMetric, m as isTrace } from './main-f02ff055.js';
1
+ export { B as BigscreenPlayer, a as DebugTool, E as EntryCategory, c as LiveSupport, M as MediaKinds, g as MediaState, h as MockBigscreenPlayer, b as PauseTriggers, i as PlaybackStrategy, j as TransferFormat, T as TransportControlPosition, W as WindowTypes, k as isMessage, l as isMetric, m as isTrace } from './main-39559d4f.js';
@@ -1,5 +1,5 @@
1
1
  import { MediaPlayer } from 'dashjs/index_mediaplayerOnly';
2
- import { W as WindowTypes, U as Utils, D as DOMHelpers, b as PauseTriggers, c as LiveSupport, a as DebugToolInstance, M as MediaState, P as Plugins, d as MediaKinds, e as TimeUtils, g as DynamicWindowUtils } from './main-f02ff055.js';
2
+ import { W as WindowTypes, U as Utils, b as PauseTriggers, c as LiveSupport, M as MediaKinds, a as DebugToolInstance, d as TimeUtils, e as DynamicWindowUtils, g as MediaState, P as Plugins, D as DOMHelpers } from './main-39559d4f.js';
3
3
 
4
4
  function filter(manifest, representationOptions) {
5
5
  const constantFps = representationOptions.constantFps;
@@ -219,6 +219,7 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
219
219
 
220
220
  let publishedSeekEvent = false;
221
221
  let isSeeking = false;
222
+ let manifestRequestTime;
222
223
 
223
224
  let playerMetadata = {
224
225
  playbackBitrate: undefined,
@@ -235,6 +236,7 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
235
236
  GAP_JUMP: "gapCausedInternalSeek",
236
237
  GAP_JUMP_TO_END: "gapCausedSeekToPeriodEnd",
237
238
  MANIFEST_LOADED: "manifestLoaded",
239
+ MANIFEST_LOADING_FINISHED: "manifestLoadingFinished",
238
240
  DOWNLOAD_MANIFEST_ERROR_CODE: 25,
239
241
  DOWNLOAD_CONTENT_ERROR_CODE: 27,
240
242
  DOWNLOAD_INIT_SEGMENT_ERROR_CODE: 28,
@@ -430,6 +432,8 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
430
432
  ManifestModifier.filter(manifest, representationOptions);
431
433
  ManifestModifier.generateBaseUrls(manifest, mediaSources.availableSources());
432
434
 
435
+ manifest.manifestRequestTime = manifestRequestTime;
436
+
433
437
  emitManifestInfo(manifest);
434
438
  }
435
439
  }
@@ -704,6 +708,11 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
704
708
  mediaPlayer.on(DashJSEvents.GAP_JUMP, onGapJump);
705
709
  mediaPlayer.on(DashJSEvents.GAP_JUMP_TO_END, onGapJump);
706
710
  mediaPlayer.on(DashJSEvents.QUOTA_EXCEEDED, onQuotaExceeded);
711
+ mediaPlayer.on(DashJSEvents.MANIFEST_LOADING_FINISHED, manifestLoadingFinished);
712
+ }
713
+
714
+ function manifestLoadingFinished(event) {
715
+ manifestRequestTime = event.request.requestEndDate.getTime() - event.request.requestStartDate.getTime();
707
716
  }
708
717
 
709
718
  function getSeekableRange() {
@@ -789,6 +798,46 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
789
798
  );
790
799
  }
791
800
 
801
+ function cleanUpMediaPlayer() {
802
+ if (mediaPlayer) {
803
+ mediaPlayer.destroy();
804
+
805
+ mediaPlayer.off(DashJSEvents.ERROR, onError);
806
+ mediaPlayer.off(DashJSEvents.MANIFEST_LOADED, onManifestLoaded);
807
+ mediaPlayer.off(DashJSEvents.MANIFEST_VALIDITY_CHANGED, onManifestValidityChange);
808
+ mediaPlayer.off(DashJSEvents.STREAM_INITIALIZED, onStreamInitialised);
809
+ mediaPlayer.off(DashJSEvents.QUALITY_CHANGE_RENDERED, onQualityChangeRendered);
810
+ mediaPlayer.off(DashJSEvents.METRIC_ADDED, onMetricAdded);
811
+ mediaPlayer.off(DashJSEvents.BASE_URL_SELECTED, onBaseUrlSelected);
812
+ mediaPlayer.off(DashJSEvents.LOG, onDebugLog);
813
+ mediaPlayer.off(DashJSEvents.SERVICE_LOCATION_AVAILABLE, onServiceLocationAvailable);
814
+ mediaPlayer.off(DashJSEvents.URL_RESOLUTION_FAILED, onURLResolutionFailed);
815
+ mediaPlayer.off(DashJSEvents.GAP_JUMP, onGapJump);
816
+ mediaPlayer.off(DashJSEvents.GAP_JUMP_TO_END, onGapJump);
817
+ mediaPlayer.off(DashJSEvents.QUOTA_EXCEEDED, onQuotaExceeded);
818
+
819
+ mediaPlayer = undefined;
820
+ }
821
+
822
+ if (mediaElement) {
823
+ mediaElement.removeEventListener("timeupdate", onTimeUpdate);
824
+ mediaElement.removeEventListener("loadedmetadata", onLoadedMetaData);
825
+ mediaElement.removeEventListener("loadeddata", onLoadedData);
826
+ mediaElement.removeEventListener("play", onPlay);
827
+ mediaElement.removeEventListener("playing", onPlaying);
828
+ mediaElement.removeEventListener("pause", onPaused);
829
+ mediaElement.removeEventListener("waiting", onWaiting);
830
+ mediaElement.removeEventListener("seeking", onSeeking);
831
+ mediaElement.removeEventListener("seeked", onSeeked);
832
+ mediaElement.removeEventListener("ended", onEnded);
833
+ mediaElement.removeEventListener("ratechange", onRateChange);
834
+
835
+ DOMHelpers.safeRemoveElement(mediaElement);
836
+
837
+ mediaElement = undefined;
838
+ }
839
+ }
840
+
792
841
  return {
793
842
  transitions: {
794
843
  canBePaused: () => true,
@@ -808,38 +857,9 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
808
857
  getDuration,
809
858
  getPlayerElement: () => mediaElement,
810
859
  tearDown: () => {
811
- mediaPlayer.reset();
812
-
813
- mediaElement.removeEventListener("timeupdate", onTimeUpdate);
814
- mediaElement.removeEventListener("loadedmetadata", onLoadedMetaData);
815
- mediaElement.removeEventListener("loadeddata", onLoadedData);
816
- mediaElement.removeEventListener("play", onPlay);
817
- mediaElement.removeEventListener("playing", onPlaying);
818
- mediaElement.removeEventListener("pause", onPaused);
819
- mediaElement.removeEventListener("waiting", onWaiting);
820
- mediaElement.removeEventListener("seeking", onSeeking);
821
- mediaElement.removeEventListener("seeked", onSeeked);
822
- mediaElement.removeEventListener("ended", onEnded);
823
- mediaElement.removeEventListener("ratechange", onRateChange);
824
- mediaPlayer.off(DashJSEvents.ERROR, onError);
825
- mediaPlayer.off(DashJSEvents.MANIFEST_LOADED, onManifestLoaded);
826
- mediaPlayer.off(DashJSEvents.MANIFEST_VALIDITY_CHANGED, onManifestValidityChange);
827
- mediaPlayer.off(DashJSEvents.STREAM_INITIALIZED, onStreamInitialised);
828
- mediaPlayer.off(DashJSEvents.QUALITY_CHANGE_RENDERED, onQualityChangeRendered);
829
- mediaPlayer.off(DashJSEvents.METRIC_ADDED, onMetricAdded);
830
- mediaPlayer.off(DashJSEvents.BASE_URL_SELECTED, onBaseUrlSelected);
831
- mediaPlayer.off(DashJSEvents.LOG, onDebugLog);
832
- mediaPlayer.off(DashJSEvents.SERVICE_LOCATION_AVAILABLE, onServiceLocationAvailable);
833
- mediaPlayer.off(DashJSEvents.URL_RESOLUTION_FAILED, onURLResolutionFailed);
834
- mediaPlayer.off(DashJSEvents.GAP_JUMP, onGapJump);
835
- mediaPlayer.off(DashJSEvents.GAP_JUMP_TO_END, onGapJump);
836
- mediaPlayer.off(DashJSEvents.QUOTA_EXCEEDED, onQuotaExceeded);
837
-
838
- DOMHelpers.safeRemoveElement(mediaElement);
860
+ cleanUpMediaPlayer();
839
861
 
840
862
  lastError = undefined;
841
- mediaPlayer = undefined;
842
- mediaElement = undefined;
843
863
  eventCallbacks = [];
844
864
  errorCallback = undefined;
845
865
  timeUpdateCallback = undefined;
@@ -857,7 +877,11 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
857
877
  },
858
878
  };
859
879
  },
860
- reset: () => {},
880
+ reset: () => {
881
+ if (window.bigscreenPlayer.overrides && window.bigscreenPlayer.overrides.resetMSEPlayer) {
882
+ cleanUpMediaPlayer();
883
+ }
884
+ },
861
885
  isEnded: () => isEnded,
862
886
  isPaused,
863
887
  pause: (opts = {}) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigscreen-player",
3
- "version": "8.6.0",
3
+ "version": "8.7.1",
4
4
  "type": "module",
5
5
  "description": "Simplified media playback for bigscreen devices.",
6
6
  "main": "dist/esm/main.js",