From eda4e01bbec503a7bf52b6bd500d1361c3d8171e Mon Sep 17 00:00:00 2001 From: Matthew Neil Date: Thu, 5 Oct 2017 17:40:41 -0400 Subject: [PATCH] comments and mappingForTimeline --- src/master-playlist-controller.js | 4 ++++ src/segment-loader.js | 6 ++++-- src/sync-controller.js | 9 +++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/master-playlist-controller.js b/src/master-playlist-controller.js index 68e9b810e..df4377a2b 100644 --- a/src/master-playlist-controller.js +++ b/src/master-playlist-controller.js @@ -609,10 +609,14 @@ export class MasterPlaylistController extends videojs.EventTarget { }); this.mainSegmentLoader_.on('reseteverything', () => { + // If playing an MTS stream, a videojs.MediaSource is listening for + // hls-reset to reset caption parsing state in the transmuxer this.tech_.trigger('hls-reset'); }); this.mainSegmentLoader_.on('segmenttimemapping', (event) => { + // If playing an MTS stream in html, a videojs.MediaSource is listening for + // hls-segment-time-mapping update its internal mapping of stream to display time this.tech_.trigger({ type: 'hls-segment-time-mapping', mapping: event.mapping diff --git a/src/segment-loader.js b/src/segment-loader.js index b735a40a4..39c82b7d0 100644 --- a/src/segment-loader.js +++ b/src/segment-loader.js @@ -1119,10 +1119,12 @@ export default class SegmentLoader extends videojs.EventTarget { this.trigger('timestampoffset'); } - if (timingInfo && timingInfo.hasMapping) { + const timelineMapping = this.syncController_.mappingForTimeline(segmentInfo.timeline); + + if (timelineMapping !== null) { this.trigger({ type: 'segmenttimemapping', - mapping: this.syncController_.timelines[segmentInfo.timeline].mapping + mapping: timelineMapping }); } diff --git a/src/sync-controller.js b/src/sync-controller.js index cbe0a1e45..ede098459 100644 --- a/src/sync-controller.js +++ b/src/sync-controller.js @@ -380,8 +380,6 @@ export default class SyncController extends videojs.EventTarget { time: segment.start }; } - - timingInfo.hasMapping = true; } } @@ -453,6 +451,13 @@ export default class SyncController extends videojs.EventTarget { return this.timelines[timeline].time; } + mappingForTimeline(timeline) { + if (typeof this.timelines[timeline] === 'undefined') { + return null; + } + return this.timelines[timeline].mapping; + } + /** * Use the "media time" for a segment to generate a mapping to "display time" and * save that display time to the segment.