Source: directive/video.js

/**
 * Create a video/audio segment
 * @module
 */

'use strict';

var videoDirective = [
  'Segment',
  function (Segment) { return {
    restrict: 'E',
    require: '^?ngController',
    link: function ($scope, $element, $attrs, view) {
      $element.on('loadedmetadata', function () {
        var video = this;
        var seek = $scope.$eval($attrs.seek), stop;
        if (seek instanceof Segment) {
          stop = seek.u;
          seek = seek.l;
        }

        if (isFinite(seek) && seek > 0) {
          video.currentTime = seek / 1000;
          $element.off('loadedmetadata');
        }

        if (isFinite(stop) && stop > seek) {
          stop /= 1000;
          var checkStop = function() {
            if (video.currentTime < stop)
              return;
            video.pause();
            $element.off('timeupdate', checkStop);
          };
          $element.on('timeupdate', checkStop);
        }

        if (view && view.registerVideo)
          view.registerVideo($element);
        $scope.$on('$destroy', function () {
          $element.empty();
          video.load();
          if (view && view.deregisterVideo)
            view.deregisterVideo($element);
        });
      });
    }
  }; }
];
app.directive('video', videoDirective);
app.directive('audio', videoDirective);