Fix close skips not overlapping

This commit is contained in:
Ajay
2022-03-28 15:33:15 -04:00
parent 5d72498aac
commit b15a8db651

View File

@@ -45,6 +45,8 @@ let lastKnownVideoTime: { videoTime: number, preciseTime: number } = {
videoTime: null, videoTime: null,
preciseTime: null preciseTime: null
}; };
// It resumes with a slightly later time on chromium
let lastTimeFromWaitingEvent = null;
// Skips are scheduled to ensure precision. // Skips are scheduled to ensure precision.
// Skips are rescheduled every seeking event. // Skips are rescheduled every seeking event.
@@ -456,14 +458,16 @@ function startSponsorSchedule(includeIntersectingSegments = false, currentTime?:
if (!video || video.paused) return; if (!video || video.paused) return;
if (currentTime === undefined || currentTime === null) { if (currentTime === undefined || currentTime === null) {
const virtualTime = lastKnownVideoTime.videoTime ? const virtualTime = lastTimeFromWaitingEvent ?? (lastKnownVideoTime.videoTime ?
(performance.now() - lastKnownVideoTime.preciseTime) / 1000 + lastKnownVideoTime.videoTime : null; (performance.now() - lastKnownVideoTime.preciseTime) / 1000 + lastKnownVideoTime.videoTime : null);
if (!utils.isFirefox() && !isSafari() && virtualTime && Math.abs(virtualTime - video.currentTime) < 0.6){ if ((lastTimeFromWaitingEvent || !utils.isFirefox())
&& !isSafari() && virtualTime && Math.abs(virtualTime - video.currentTime) < 0.6){
currentTime = virtualTime; currentTime = virtualTime;
} else { } else {
currentTime = video.currentTime; currentTime = video.currentTime;
} }
} }
lastTimeFromWaitingEvent = null;
if (videoMuted && !inMuteSegment(currentTime)) { if (videoMuted && !inMuteSegment(currentTime)) {
video.muted = false; video.muted = false;
@@ -535,8 +539,8 @@ function startSponsorSchedule(includeIntersectingSegments = false, currentTime?:
startSponsorSchedule(forcedIncludeIntersectingSegments, forcedSkipTime, forcedIncludeNonIntersectingSegments); startSponsorSchedule(forcedIncludeIntersectingSegments, forcedSkipTime, forcedIncludeNonIntersectingSegments);
}; };
if (timeUntilSponsor <= 0) { if (timeUntilSponsor < 0.003) {
skippingFunction(); skippingFunction(currentTime);
} else { } else {
const delayTime = timeUntilSponsor * 1000 * (1 / video.playbackRate); const delayTime = timeUntilSponsor * 1000 * (1 / video.playbackRate);
if (delayTime < 300) { if (delayTime < 300) {
@@ -680,6 +684,7 @@ function setupVideoListeners() {
lastCheckVideoTime = video.currentTime; lastCheckVideoTime = video.currentTime;
updateVirtualTime(); updateVirtualTime();
lastTimeFromWaitingEvent = null;
startSponsorSchedule(); startSponsorSchedule();
} }
@@ -696,6 +701,7 @@ function setupVideoListeners() {
videoTime: null, videoTime: null,
preciseTime: null preciseTime: null
} }
lastTimeFromWaitingEvent = video.currentTime;
cancelSponsorSchedule(); cancelSponsorSchedule();
}; };