Sha256: 4a4ddd80b178b3d1b3207b1a563437752c45585013ed231d7eb5a56ed7b3fad5

Contents?: true

Size: 1.7 KB

Versions: 58

Compression:

Stored size: 1.7 KB

Contents

pageflow.VideoPlayer.bufferUnderrunWaiting = function(player) {
  var originalPause = player.pause;

  player.pause = function() {
    cancelWaiting();
    originalPause.apply(this, arguments);
  };

  function pauseAndPreloadOnUnderrun() {
    if (bufferUnderrun()) {
      pauseAndPreload();
    }
  }

  function bufferUnderrun() {
    return !player.isBufferedAhead(0.1, true) && !player.waitingOnUnderrun && !ignoringUnderruns();
  }

  function pauseAndPreload() {
    pageflow.log('Buffer underrun');

    player.trigger('bufferunderrun');
    player.pause();

    player.waitingOnUnderrun = true;

    player.prebuffer({secondsToBuffer: 5, secondsToWait: 5}).then(function() {
      // do nothing if user aborted waiting by clicking pause
      if (player.waitingOnUnderrun) {
        player.waitingOnUnderrun = false;
        player.trigger('bufferunderruncontinue');

        player.play();
      }
    });
  }

  function cancelWaiting() {
    if (player.waitingOnUnderrun) {
      player.ignoreUnderrunsUntil = new Date().getTime() + 5 * 1000;
      player.waitingOnUnderrun = false;

      player.trigger('bufferunderruncontinue');
    }
  }

  function ignoringUnderruns() {
    var r = player.ignoreUnderrunsUntil && new Date().getTime() < player.ignoreUnderrunsUntil;

    if (r) {
      pageflow.log('ignoring underrun');
    }

    return r;
  }

  function stopListeningForProgress() {
    player.off('progress', pauseAndPreloadOnUnderrun);
  }

  if (pageflow.browser.has('buffer underrun waiting support')) {
    player.on('play', function() {
      player.on('progress', pauseAndPreloadOnUnderrun);
    });

    player.on('pause', stopListeningForProgress);
    player.on('ended', stopListeningForProgress);
  }
};

Version data entries

58 entries across 58 versions & 1 rubygems

Version Path
pageflow-14.5.2 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-15.0.2 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-15.0.1 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-15.0.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-14.5.1 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-14.5.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-15.0.0.rc2 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-15.0.0.rc1 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-15.0.0.beta4 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-15.0.0.beta3 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-14.4.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-15.0.0.beta2 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-15.0.0.beta1 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-14.3.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-14.2.1 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-14.2.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-14.1.1 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-14.1.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-14.0.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-14.0.0.rc2 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js