stormcloud-video-player 0.8.51 → 0.8.53

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,4 +1,4 @@
1
- import { A as AdController } from '../types-iDjS8f_7.cjs';
1
+ import { A as AdController } from '../types-cTqIKw_D.cjs';
2
2
  import Hls from 'hls.js';
3
3
 
4
4
  declare function createHlsAdPlayer(contentVideo: HTMLVideoElement, options?: {
@@ -571,6 +571,7 @@ function createHlsAdPlayer(contentVideo, options) {
571
571
  var AD_CONTAINER_PROP = "__stormcloudAdContainer";
572
572
  var AD_VIDEO_PROP = "__stormcloudAdVideo";
573
573
  var FRAME_COUNTER_RELIABLE_PROP = "__stormcloudFrameCounterReliable";
574
+ var RVFC_RELIABLE_PROP = "__stormcloudRvfcReliable";
574
575
  var adVideoElement = (_contentVideo_AD_VIDEO_PROP = contentVideo[AD_VIDEO_PROP]) !== null && _contentVideo_AD_VIDEO_PROP !== void 0 ? _contentVideo_AD_VIDEO_PROP : void 0;
575
576
  var adHls;
576
577
  var adContainerEl = (_contentVideo_AD_CONTAINER_PROP = contentVideo[AD_CONTAINER_PROP]) !== null && _contentVideo_AD_CONTAINER_PROP !== void 0 ? _contentVideo_AD_CONTAINER_PROP : void 0;
@@ -1071,7 +1072,7 @@ function createHlsAdPlayer(contentVideo, options) {
1071
1072
  }
1072
1073
  function fetchAndParsePod(vastTagUrl) {
1073
1074
  return _async_to_generator(function() {
1074
- var vastXml, parser, xmlDoc, adElements, ads, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, adElement, parsed, resolved, error, err;
1075
+ var vastXml, trimmedXml, parser, xmlDoc, adElements, ads, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, adElement, parsed, resolved, error, err;
1075
1076
  return _ts_generator(this, function(_state) {
1076
1077
  switch(_state.label){
1077
1078
  case 0:
@@ -1081,11 +1082,19 @@ function createHlsAdPlayer(contentVideo, options) {
1081
1082
  ];
1082
1083
  case 1:
1083
1084
  vastXml = _state.sent();
1084
- console.log("[HlsAdPlayer] Pod VAST XML received");
1085
+ console.log("[HlsAdPlayer] Pod VAST XML received (length=".concat(vastXml.length, ")"));
1086
+ trimmedXml = vastXml.trim();
1087
+ if (trimmedXml.length === 0) {
1088
+ console.warn("[HlsAdPlayer] Pod VAST response body is empty (no fill)");
1089
+ return [
1090
+ 2,
1091
+ []
1092
+ ];
1093
+ }
1085
1094
  parser = new DOMParser();
1086
1095
  xmlDoc = parser.parseFromString(vastXml, "text/xml");
1087
1096
  if (xmlDoc.querySelector("parsererror")) {
1088
- console.error("[HlsAdPlayer] Pod VAST XML parsing error (malformed)");
1097
+ console.error("[HlsAdPlayer] Pod VAST XML parsing error (malformed). Content (first 2000 chars):", vastXml.substring(0, 2e3));
1089
1098
  return [
1090
1099
  2,
1091
1100
  []
@@ -1093,7 +1102,7 @@ function createHlsAdPlayer(contentVideo, options) {
1093
1102
  }
1094
1103
  adElements = Array.from(xmlDoc.querySelectorAll("Ad"));
1095
1104
  if (adElements.length === 0) {
1096
- console.warn("[HlsAdPlayer] No <Ad> elements found in pod VAST response");
1105
+ console.warn("[HlsAdPlayer] No <Ad> elements found in pod VAST response (no fill). Content (first 2000 chars):", vastXml.substring(0, 2e3));
1097
1106
  return [
1098
1107
  2,
1099
1108
  []
@@ -1572,6 +1581,12 @@ function createHlsAdPlayer(contentVideo, options) {
1572
1581
  function markFrameCounterReliable() {
1573
1582
  contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;
1574
1583
  }
1584
+ function isRvfcReliable() {
1585
+ return contentVideo[RVFC_RELIABLE_PROP] === true;
1586
+ }
1587
+ function markRvfcReliable() {
1588
+ contentVideo[RVFC_RELIABLE_PROP] = true;
1589
+ }
1575
1590
  function cancelVideoFrameProbe() {
1576
1591
  if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === "function") {
1577
1592
  try {
@@ -1591,6 +1606,7 @@ function createHlsAdPlayer(contentVideo, options) {
1591
1606
  videoFrameCallbackHandle = void 0;
1592
1607
  if (!adPlaying) return;
1593
1608
  sawDecodedVideoFrame = true;
1609
+ markRvfcReliable();
1594
1610
  };
1595
1611
  try {
1596
1612
  videoFrameCallbackHandle = rvfc.call(adVideoElement, onPresentedFrame);
@@ -1615,18 +1631,19 @@ function createHlsAdPlayer(contentVideo, options) {
1615
1631
  noteAdProgress();
1616
1632
  sawDecodedVideoFrame = false;
1617
1633
  startVideoFrameProbe();
1634
+ var blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();
1618
1635
  stallWatchdogId = window.setInterval(function() {
1619
1636
  if (!adPlaying || !adVideoElement) {
1620
1637
  return;
1621
1638
  }
1622
- if (!sawDecodedVideoFrame && !adVideoElement.paused) {
1639
+ if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {
1623
1640
  var decodedFrames = getDecodedVideoFrameCount(adVideoElement);
1624
1641
  if (decodedFrames !== void 0 && decodedFrames > 0) {
1625
1642
  sawDecodedVideoFrame = true;
1626
1643
  markFrameCounterReliable();
1627
1644
  } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {
1628
1645
  var timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;
1629
- if (isRvfcSupported(adVideoElement) && timeAdvancing) {
1646
+ if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {
1630
1647
  handleVideoDecodeFailure();
1631
1648
  return;
1632
1649
  }
@@ -2027,7 +2044,7 @@ function createHlsAdPlayer(contentVideo, options) {
2027
2044
  }
2028
2045
  },
2029
2046
  hidePlaceholder: function hidePlaceholder() {
2030
- if (adContainerEl) {
2047
+ if (adContainerEl && !adPlaying) {
2031
2048
  adContainerEl.style.display = "none";
2032
2049
  adContainerEl.style.pointerEvents = "none";
2033
2050
  }