SponsorBlock: Fixed (?) rewinding over skippable segments

This commit is contained in:
polymorphicshade 2020-10-25 13:01:22 -06:00
parent ba4b4122dc
commit c35dc98e27

View file

@ -745,6 +745,10 @@ public abstract class BasePlayer implements
} }
public void triggerProgressUpdate() { public void triggerProgressUpdate() {
triggerProgressUpdate(false);
}
public void triggerProgressUpdate(final boolean isRewind) {
if (simpleExoPlayer == null) { if (simpleExoPlayer == null) {
return; return;
} }
@ -761,13 +765,19 @@ public abstract class BasePlayer implements
return; return;
} }
final int skipTo = (int) Math.ceil((segment.endTime)); int skipTarget = isRewind
? (int) Math.ceil((segment.startTime)) - 1
: (int) Math.ceil((segment.endTime));
if (skipTarget < 0) {
skipTarget = 0;
}
// temporarily force EXACT seek parameters to prevent infinite skip looping // temporarily force EXACT seek parameters to prevent infinite skip looping
final SeekParameters seekParams = simpleExoPlayer.getSeekParameters(); final SeekParameters seekParams = simpleExoPlayer.getSeekParameters();
simpleExoPlayer.setSeekParameters(SeekParameters.EXACT); simpleExoPlayer.setSeekParameters(SeekParameters.EXACT);
seekTo(skipTo); seekTo(skipTarget);
simpleExoPlayer.setSeekParameters(seekParams); simpleExoPlayer.setSeekParameters(seekParams);
@ -807,7 +817,7 @@ public abstract class BasePlayer implements
if (DEBUG) { if (DEBUG) {
Log.d("SPONSOR_BLOCK", "Skipped segment: currentProgress = [" Log.d("SPONSOR_BLOCK", "Skipped segment: currentProgress = ["
+ currentProgress + "], skipped to = [" + skipTo + "]"); + currentProgress + "], skipped to = [" + skipTarget + "]");
} }
} }
} }
@ -1357,7 +1367,7 @@ public abstract class BasePlayer implements
Log.d(TAG, "onFastRewind() called"); Log.d(TAG, "onFastRewind() called");
} }
seekBy(-getSeekDuration()); seekBy(-getSeekDuration());
triggerProgressUpdate(); triggerProgressUpdate(true);
} }
public void onFastForward() { public void onFastForward() {