Sha256: 5c202b57614360786c3ec4799a018d0f41090560e58fa6eda3ac8cdae1fc1a05

Contents?: true

Size: 1.78 KB

Versions: 18

Compression:

Stored size: 1.78 KB

Contents

pageflow.VideoPlayer.bufferUnderrunWaiting = function(player) {
  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.waitingOnUnderrun = true;

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

        player.play();
      }
    });

    player.on('play', onNextPlay);

    function onNextPlay() {
      player.off('play', onNextPlay);

      // if user presses play button, ignore buffer underruns for a
      // moment to give the user the possibility to pause the video.
      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.features.has('buffer underrun waiting support')) {
    player.on('play', function() {
      player.on('progress', pauseAndPreloadOnUnderrun);
    });

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

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
pageflow-0.8.2 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.8.1 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.8.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.7.2 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.7.1 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.7.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.6.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.5.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.4.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.3.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.2.1 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.2.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.1.0 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.0.5 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.0.4 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.0.3 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.0.2 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js
pageflow-0.0.1 app/assets/javascripts/pageflow/video_player/buffer_underrun_waiting.js