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