stormcloud-video-player 0.8.71 → 0.8.73

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.
package/lib/index.js CHANGED
@@ -6413,6 +6413,10 @@ function toNumber(val) {
6413
6413
  var n = typeof val === "string" ? parseFloat(val) : Number(val);
6414
6414
  return Number.isNaN(n) ? void 0 : n;
6415
6415
  }
6416
+ function getDateRangeDurationSeconds(attrs) {
6417
+ var _toNumber;
6418
+ return (_toNumber = toNumber(attrs["DURATION"])) !== null && _toNumber !== void 0 ? _toNumber : toNumber(attrs["PLANNED-DURATION"]);
6419
+ }
6416
6420
  function isManifestBasedMarker(marker) {
6417
6421
  var raw = marker.raw;
6418
6422
  if (!raw) return false;
@@ -8784,11 +8788,13 @@ var HlsEngine = /*#__PURE__*/ function() {
8784
8788
  }
8785
8789
  }
8786
8790
  if (!tag) continue;
8791
+ if (tag.includes("EXT-X-CUE-OUT-CONT")) continue;
8787
8792
  if (tag.includes("EXT-X-CUE-OUT") || tag.includes("EXT-X-DATERANGE")) {
8788
- var attrs = tag.includes("EXT-X-DATERANGE") ? parseAttributeList(value) : {};
8793
+ var isDateRange = tag.includes("EXT-X-DATERANGE");
8794
+ var attrs = isDateRange ? parseAttributeList(value) : {};
8789
8795
  var hasScteOut = tag.includes("EXT-X-CUE-OUT") || "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
8790
8796
  if (hasScteOut) {
8791
- var durationSeconds = parseCueOutDuration(value);
8797
+ var durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);
8792
8798
  var marker = _object_spread_props(_object_spread({
8793
8799
  type: "start"
8794
8800
  }, durationSeconds !== void 0 ? {
@@ -8962,7 +8968,7 @@ var HlsEngine = /*#__PURE__*/ function() {
8962
8968
  var hasScteOut = "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
8963
8969
  var hasScteIn = "SCTE35-IN" in attrs || attrs["SCTE35-IN"] !== void 0;
8964
8970
  var klass = String((_attrs_CLASS = attrs["CLASS"]) !== null && _attrs_CLASS !== void 0 ? _attrs_CLASS : "");
8965
- var duration = toNumber(attrs["DURATION"]);
8971
+ var duration = getDateRangeDurationSeconds(attrs);
8966
8972
  if (hasScteOut || /com\.apple\.hls\.cue/i.test(klass)) {
8967
8973
  var marker2 = _object_spread_props(_object_spread({
8968
8974
  type: "start"
@@ -10140,7 +10146,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10140
10146
  key: "runEdgePod",
10141
10147
  value: function runEdgePod(requestUrl, trigger) {
10142
10148
  return _async_to_generator(function() {
10143
- var _params_get, _params_get1, epoch, generation, adPlayer, requestToken, params, _ref, _adPlayer_getPodAdCount, _adPlayer_getPodTotalDurationMs, remainingMs, remainingAds, podCount, error, errorMessage, classification, diag;
10149
+ var _params_get, _params_get1, epoch, generation, adPlayer, requestToken, params, _this_host_config_maxAdBreakExtensionMs, _ref, _adPlayer_getPodAdCount, _adPlayer_getPodTotalDurationMs, remainingMs, remainingAds, overrunAllowanceMs, podCount, error, errorMessage, classification, diag;
10144
10150
  return _ts_generator(this, function(_state) {
10145
10151
  switch(_state.label){
10146
10152
  case 0:
@@ -10195,7 +10201,8 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10195
10201
  }
10196
10202
  remainingMs = this.timing.getRemainingAdMs();
10197
10203
  remainingAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, this.adConfig.resolvePodParams().maxAds - this.timing.totalAdsInBreak));
10198
- podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs, remainingAds) : (_ref = (_adPlayer_getPodAdCount = adPlayer.getPodAdCount) === null || _adPlayer_getPodAdCount === void 0 ? void 0 : _adPlayer_getPodAdCount.call(adPlayer)) !== null && _ref !== void 0 ? _ref : 0;
10204
+ overrunAllowanceMs = Math.max(0, (_this_host_config_maxAdBreakExtensionMs = this.host.config.maxAdBreakExtensionMs) !== null && _this_host_config_maxAdBreakExtensionMs !== void 0 ? _this_host_config_maxAdBreakExtensionMs : 0);
10205
+ podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs + overrunAllowanceMs, remainingAds) : (_ref = (_adPlayer_getPodAdCount = adPlayer.getPodAdCount) === null || _adPlayer_getPodAdCount === void 0 ? void 0 : _adPlayer_getPodAdCount.call(adPlayer)) !== null && _ref !== void 0 ? _ref : 0;
10199
10206
  if (classifyEdgeVastResponse({
10200
10207
  podAdCount: podCount
10201
10208
  }) !== "fill") {
@@ -10205,7 +10212,8 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10205
10212
  this.logOrchestratorFunnel("edge_fill", {
10206
10213
  podAdCount: podCount,
10207
10214
  podDurationMs: (_adPlayer_getPodTotalDurationMs = adPlayer.getPodTotalDurationMs) === null || _adPlayer_getPodTotalDurationMs === void 0 ? void 0 : _adPlayer_getPodTotalDurationMs.call(adPlayer),
10208
- remainingMs: remainingMs
10215
+ remainingMs: remainingMs,
10216
+ overrunAllowanceMs: overrunAllowanceMs
10209
10217
  });
10210
10218
  sendAdLoadedTracking(this.host.config.licenseKey, {
10211
10219
  source: "hls",
@@ -12595,7 +12603,7 @@ var CRITICAL_PROPS = [
12595
12603
  var CONTROLS_HIDE_DELAY = 3e3;
12596
12604
  var DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;
12597
12605
  var StormcloudVideoPlayerComponent = React.memo(function(props) {
12598
- var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, isLiveStream = props.isLiveStream, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, vastMode = props.vastMode, vastTagUrl = props.vastTagUrl, isVmap = props.isVmap, vmapUrl = props.vmapUrl, minSegmentsBeforePlay = props.minSegmentsBeforePlay, ctvAdRequest = props.ctvAdRequest, programTitle = props.programTitle, channelName = props.channelName, minRemainingMsToStartAd = props.minRemainingMsToStartAd, minRemainingMsToRequestAd = props.minRemainingMsToRequestAd, maxNoFillsPerBreak = props.maxNoFillsPerBreak, adFloorLadderEnabled = props.adFloorLadderEnabled, adFloorLadder = props.adFloorLadder, adFloorMinCents = props.adFloorMinCents, adFloorMaxCents = props.adFloorMaxCents, adFloorStepCents = props.adFloorStepCents, enableEdgePodRequest = props.enableEdgePodRequest, edgePodUrl = props.edgePodUrl, restVideoAttrs = _object_without_properties(props, [
12606
+ var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, isLiveStream = props.isLiveStream, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, vastMode = props.vastMode, vastTagUrl = props.vastTagUrl, isVmap = props.isVmap, vmapUrl = props.vmapUrl, minSegmentsBeforePlay = props.minSegmentsBeforePlay, ctvAdRequest = props.ctvAdRequest, programTitle = props.programTitle, channelName = props.channelName, minRemainingMsToStartAd = props.minRemainingMsToStartAd, minRemainingMsToRequestAd = props.minRemainingMsToRequestAd, maxNoFillsPerBreak = props.maxNoFillsPerBreak, maxAdBreakExtensionMs = props.maxAdBreakExtensionMs, adFloorLadderEnabled = props.adFloorLadderEnabled, adFloorLadder = props.adFloorLadder, adFloorMinCents = props.adFloorMinCents, adFloorMaxCents = props.adFloorMaxCents, adFloorStepCents = props.adFloorStepCents, enableEdgePodRequest = props.enableEdgePodRequest, edgePodUrl = props.edgePodUrl, restVideoAttrs = _object_without_properties(props, [
12599
12607
  "src",
12600
12608
  "autoplay",
12601
12609
  "muted",
@@ -12632,6 +12640,7 @@ var StormcloudVideoPlayerComponent = React.memo(function(props) {
12632
12640
  "minRemainingMsToStartAd",
12633
12641
  "minRemainingMsToRequestAd",
12634
12642
  "maxNoFillsPerBreak",
12643
+ "maxAdBreakExtensionMs",
12635
12644
  "adFloorLadderEnabled",
12636
12645
  "adFloorLadder",
12637
12646
  "adFloorMinCents",
@@ -12839,6 +12848,7 @@ var StormcloudVideoPlayerComponent = React.memo(function(props) {
12839
12848
  if (minRemainingMsToStartAd !== void 0) cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;
12840
12849
  if (minRemainingMsToRequestAd !== void 0) cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;
12841
12850
  if (maxNoFillsPerBreak !== void 0) cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;
12851
+ if (maxAdBreakExtensionMs !== void 0) cfg.maxAdBreakExtensionMs = maxAdBreakExtensionMs;
12842
12852
  if (adFloorLadderEnabled !== void 0) cfg.adFloorLadderEnabled = adFloorLadderEnabled;
12843
12853
  if (adFloorLadder !== void 0) cfg.adFloorLadder = adFloorLadder;
12844
12854
  if (adFloorMinCents !== void 0) cfg.adFloorMinCents = adFloorMinCents;