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.
@@ -6401,6 +6401,10 @@ function toNumber(val) {
6401
6401
  var n = typeof val === "string" ? parseFloat(val) : Number(val);
6402
6402
  return Number.isNaN(n) ? void 0 : n;
6403
6403
  }
6404
+ function getDateRangeDurationSeconds(attrs) {
6405
+ var _toNumber;
6406
+ return (_toNumber = toNumber(attrs["DURATION"])) !== null && _toNumber !== void 0 ? _toNumber : toNumber(attrs["PLANNED-DURATION"]);
6407
+ }
6404
6408
  function isManifestBasedMarker(marker) {
6405
6409
  var raw = marker.raw;
6406
6410
  if (!raw) return false;
@@ -8766,11 +8770,13 @@ var HlsEngine = /*#__PURE__*/ function() {
8766
8770
  }
8767
8771
  }
8768
8772
  if (!tag) continue;
8773
+ if (tag.includes("EXT-X-CUE-OUT-CONT")) continue;
8769
8774
  if (tag.includes("EXT-X-CUE-OUT") || tag.includes("EXT-X-DATERANGE")) {
8770
- var attrs = tag.includes("EXT-X-DATERANGE") ? parseAttributeList(value) : {};
8775
+ var isDateRange = tag.includes("EXT-X-DATERANGE");
8776
+ var attrs = isDateRange ? parseAttributeList(value) : {};
8771
8777
  var hasScteOut = tag.includes("EXT-X-CUE-OUT") || "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
8772
8778
  if (hasScteOut) {
8773
- var durationSeconds = parseCueOutDuration(value);
8779
+ var durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);
8774
8780
  var marker = _object_spread_props(_object_spread({
8775
8781
  type: "start"
8776
8782
  }, durationSeconds !== void 0 ? {
@@ -8944,7 +8950,7 @@ var HlsEngine = /*#__PURE__*/ function() {
8944
8950
  var hasScteOut = "SCTE35-OUT" in attrs || attrs["SCTE35-OUT"] !== void 0;
8945
8951
  var hasScteIn = "SCTE35-IN" in attrs || attrs["SCTE35-IN"] !== void 0;
8946
8952
  var klass = String((_attrs_CLASS = attrs["CLASS"]) !== null && _attrs_CLASS !== void 0 ? _attrs_CLASS : "");
8947
- var duration = toNumber(attrs["DURATION"]);
8953
+ var duration = getDateRangeDurationSeconds(attrs);
8948
8954
  if (hasScteOut || /com\.apple\.hls\.cue/i.test(klass)) {
8949
8955
  var marker2 = _object_spread_props(_object_spread({
8950
8956
  type: "start"
@@ -10121,7 +10127,7 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10121
10127
  key: "runEdgePod",
10122
10128
  value: function runEdgePod(requestUrl, trigger) {
10123
10129
  return _async_to_generator(function() {
10124
- var _params_get, _params_get1, epoch, generation, adPlayer, requestToken, params, _ref, _adPlayer_getPodAdCount, _adPlayer_getPodTotalDurationMs, remainingMs, remainingAds, podCount, error, errorMessage, classification, diag;
10130
+ 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;
10125
10131
  return _ts_generator(this, function(_state) {
10126
10132
  switch(_state.label){
10127
10133
  case 0:
@@ -10176,7 +10182,8 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10176
10182
  }
10177
10183
  remainingMs = this.timing.getRemainingAdMs();
10178
10184
  remainingAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, this.adConfig.resolvePodParams().maxAds - this.timing.totalAdsInBreak));
10179
- 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;
10185
+ overrunAllowanceMs = Math.max(0, (_this_host_config_maxAdBreakExtensionMs = this.host.config.maxAdBreakExtensionMs) !== null && _this_host_config_maxAdBreakExtensionMs !== void 0 ? _this_host_config_maxAdBreakExtensionMs : 0);
10186
+ 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;
10180
10187
  if (classifyEdgeVastResponse({
10181
10188
  podAdCount: podCount
10182
10189
  }) !== "fill") {
@@ -10186,7 +10193,8 @@ var AdBreakOrchestrator = /*#__PURE__*/ function() {
10186
10193
  this.logOrchestratorFunnel("edge_fill", {
10187
10194
  podAdCount: podCount,
10188
10195
  podDurationMs: (_adPlayer_getPodTotalDurationMs = adPlayer.getPodTotalDurationMs) === null || _adPlayer_getPodTotalDurationMs === void 0 ? void 0 : _adPlayer_getPodTotalDurationMs.call(adPlayer),
10189
- remainingMs: remainingMs
10196
+ remainingMs: remainingMs,
10197
+ overrunAllowanceMs: overrunAllowanceMs
10190
10198
  });
10191
10199
  sendAdLoadedTracking(this.host.config.licenseKey, {
10192
10200
  source: "hls",
@@ -12575,7 +12583,7 @@ var CRITICAL_PROPS = [
12575
12583
  var CONTROLS_HIDE_DELAY = 3e3;
12576
12584
  var DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;
12577
12585
  var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
12578
- 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, [
12586
+ 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, [
12579
12587
  "src",
12580
12588
  "autoplay",
12581
12589
  "muted",
@@ -12612,6 +12620,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
12612
12620
  "minRemainingMsToStartAd",
12613
12621
  "minRemainingMsToRequestAd",
12614
12622
  "maxNoFillsPerBreak",
12623
+ "maxAdBreakExtensionMs",
12615
12624
  "adFloorLadderEnabled",
12616
12625
  "adFloorLadder",
12617
12626
  "adFloorMinCents",
@@ -12819,6 +12828,7 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
12819
12828
  if (minRemainingMsToStartAd !== void 0) cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;
12820
12829
  if (minRemainingMsToRequestAd !== void 0) cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;
12821
12830
  if (maxNoFillsPerBreak !== void 0) cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;
12831
+ if (maxAdBreakExtensionMs !== void 0) cfg.maxAdBreakExtensionMs = maxAdBreakExtensionMs;
12822
12832
  if (adFloorLadderEnabled !== void 0) cfg.adFloorLadderEnabled = adFloorLadderEnabled;
12823
12833
  if (adFloorLadder !== void 0) cfg.adFloorLadder = adFloorLadder;
12824
12834
  if (adFloorMinCents !== void 0) cfg.adFloorMinCents = adFloorMinCents;