diff --git a/lib/media/media_source_engine.js b/lib/media/media_source_engine.js index 0d350ec47e..c5581192da 100644 --- a/lib/media/media_source_engine.js +++ b/lib/media/media_source_engine.js @@ -449,29 +449,28 @@ shaka.media.MediaSourceEngine.prototype.bufferedAheadOf = /** - * Gets the current buffered ranges. - * @return {shaka.extern.BufferedInfo} + * Fill in the given buffered info object with the buffered info that media + * source knows about. + * + * @param {shaka.extern.BufferedInfo} info */ -shaka.media.MediaSourceEngine.prototype.getBufferedInfo = function() { +shaka.media.MediaSourceEngine.prototype.getBufferedInfo = function(info) { const ContentType = shaka.util.ManifestParserUtils.ContentType; - let getBufferedInfo = shaka.media.TimeRangesUtils.getBufferedInfo; - - let textRanges; - if (this.textEngine_ && this.textEngine_.bufferStart() != null) { - textRanges = [{ - start: this.textEngine_.bufferStart(), - end: this.textEngine_.bufferEnd(), - }]; - } else { - textRanges = []; - } - return { - total: getBufferedInfo(this.video_.buffered), - audio: getBufferedInfo(this.getBuffered_(ContentType.AUDIO)), - video: getBufferedInfo(this.getBuffered_(ContentType.VIDEO)), - text: textRanges, - }; + const getBufferedInfo = shaka.media.TimeRangesUtils.getBufferedInfo; + info.total = getBufferedInfo(this.video_.buffered); + info.audio = getBufferedInfo(this.getBuffered_(ContentType.AUDIO)); + info.video = getBufferedInfo(this.getBuffered_(ContentType.VIDEO)); + info.text = []; + + if (this.textEngine_) { + const start = this.textEngine_.bufferStart(); + const end = this.textEngine_.bufferEnd(); + + if (start != null && end != null) { + info.text.push({start: start, end: end}); + } + } }; diff --git a/lib/player.js b/lib/player.js index 8ca2ba270c..b7032b93ce 100644 --- a/lib/player.js +++ b/lib/player.js @@ -2719,16 +2719,18 @@ shaka.Player.prototype.getPresentationStartTimeAsDate = function() { * @export */ shaka.Player.prototype.getBufferedInfo = function() { - if (!this.mediaSourceEngine_) { - return { - total: [], - audio: [], - video: [], - text: [], - }; + const info = { + total: [], + audio: [], + video: [], + text: [], + }; + + if (this.mediaSourceEngine_) { + this.mediaSourceEngine_.getBufferedInfo(info); } - return this.mediaSourceEngine_.getBufferedInfo(); + return info; };