define(["exports"], function (_exports) {
  Object.defineProperty(_exports, "__esModule", { value: !0 }),
    (_exports.default = void 0),
    (_exports.default = (function () {
      function MediaInfo() {
        babelHelpers.classCallCheck(this, MediaInfo),
          (this.mimeType = null),
          (this.duration = null),
          (this.hasAudio = null),
          (this.hasVideo = null),
          (this.audioCodec = null),
          (this.videoCodec = null),
          (this.audioDataRate = null),
          (this.videoDataRate = null),
          (this.audioSampleRate = null),
          (this.audioChannelCount = null),
          (this.width = null),
          (this.height = null),
          (this.fps = null),
          (this.profile = null),
          (this.refFrames = null),
          (this.chromaFormat = null),
          (this.sarNum = null),
          (this.sarDen = null),
          (this.metadata = null),
          (this.segments = null),
          (this.segmentCount = null),
          (this.hasKeyframesIndex = null),
          (this.keyframesIndex = null);
      }
      return (
        babelHelpers.createClass(MediaInfo, [
          {
            key: "isComplete",
            value: function () {
              var audioInfoComplete =
                  !1 === this.hasAudio ||
                  (!0 === this.hasAudio &&
                    null != this.audioCodec &&
                    null != this.audioSampleRate &&
                    null != this.audioChannelCount),
                videoInfoComplete =
                  !1 === this.hasVideo ||
                  (!0 === this.hasVideo &&
                    null != this.videoCodec &&
                    null != this.width &&
                    null != this.height);
              return (
                null != this.mimeType &&
                null != this.duration &&
                null != this.metadata &&
                null != this.hasKeyframesIndex &&
                audioInfoComplete &&
                videoInfoComplete
              );
            },
          },
          {
            key: "isSeekable",
            value: function () {
              return !0 === this.hasKeyframesIndex;
            },
          },
          {
            key: "getNearestKeyframe",
            value: function (milliseconds) {
              var table;
              return null == this.keyframesIndex
                ? null
                : ((table = this.keyframesIndex),
                  {
                    index: (milliseconds = this._search(
                      table.times,
                      milliseconds,
                    )),
                    milliseconds: table.times[milliseconds],
                    fileposition: table.filepositions[milliseconds],
                  });
            },
          },
          {
            key: "_search",
            value: function (list, value) {
              var mid,
                idx = 0,
                last = list.length - 1,
                lbound = 0,
                ubound = last;
              for (
                value < list[0] && ((idx = 0), (lbound = ubound + 1));
                lbound <= ubound;

              ) {
                if (
                  (mid = lbound + Math.floor((ubound - lbound) / 2)) === last ||
                  (value >= list[mid] && value < list[mid + 1])
                ) {
                  idx = mid;
                  break;
                }
                list[mid] < value ? (lbound = mid + 1) : (ubound = mid - 1);
              }
              return idx;
            },
          },
        ]),
        MediaInfo
      );
    })());
});
