Commit dbe0e602 by tonihei Committed by Oliver Woodman

Use Timeline.getPeriodPosition to resolve period index in ExoPlayerImpl.seekTo

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=174460558
parent 6ec53f47
...@@ -21,6 +21,7 @@ import android.os.Looper; ...@@ -21,6 +21,7 @@ import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.util.Log; import android.util.Log;
import android.util.Pair;
import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId; import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId;
import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.source.TrackGroupArray;
...@@ -254,19 +255,12 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -254,19 +255,12 @@ import java.util.concurrent.CopyOnWriteArraySet;
maskingWindowPositionMs = positionMs == C.TIME_UNSET ? 0 : positionMs; maskingWindowPositionMs = positionMs == C.TIME_UNSET ? 0 : positionMs;
maskingPeriodIndex = 0; maskingPeriodIndex = 0;
} else { } else {
timeline.getWindow(windowIndex, window); long windowPositionUs = positionMs == C.TIME_UNSET
long windowPositionUs = positionMs == C.TIME_UNSET ? window.getDefaultPositionUs() ? timeline.getWindow(windowIndex, window).getDefaultPositionUs() : C.msToUs(positionMs);
: C.msToUs(positionMs); Pair<Integer, Long> periodIndexAndPositon =
int periodIndex = window.firstPeriodIndex; timeline.getPeriodPosition(window, period, windowIndex, windowPositionUs);
long periodPositionUs = window.getPositionInFirstPeriodUs() + windowPositionUs;
long periodDurationUs = timeline.getPeriod(periodIndex, period).getDurationUs();
while (periodDurationUs != C.TIME_UNSET && periodPositionUs >= periodDurationUs
&& periodIndex < window.lastPeriodIndex) {
periodPositionUs -= periodDurationUs;
periodDurationUs = timeline.getPeriod(++periodIndex, period).getDurationUs();
}
maskingWindowPositionMs = C.usToMs(windowPositionUs); maskingWindowPositionMs = C.usToMs(windowPositionUs);
maskingPeriodIndex = periodIndex; maskingPeriodIndex = periodIndexAndPositon.first;
} }
internalPlayer.seekTo(timeline, windowIndex, C.msToUs(positionMs)); internalPlayer.seekTo(timeline, windowIndex, C.msToUs(positionMs));
for (Player.EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment