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

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=174460558
This commit is contained in:
tonihei 2017-11-03 07:46:47 -07:00 committed by Oliver Woodman
parent 6ec53f4717
commit dbe0e602ef

View File

@ -21,6 +21,7 @@ import android.os.Looper;
import android.os.Message;
import android.support.annotation.Nullable;
import android.util.Log;
import android.util.Pair;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId;
import com.google.android.exoplayer2.source.TrackGroupArray;
@ -254,19 +255,12 @@ import java.util.concurrent.CopyOnWriteArraySet;
maskingWindowPositionMs = positionMs == C.TIME_UNSET ? 0 : positionMs;
maskingPeriodIndex = 0;
} else {
timeline.getWindow(windowIndex, window);
long windowPositionUs = positionMs == C.TIME_UNSET ? window.getDefaultPositionUs()
: C.msToUs(positionMs);
int periodIndex = window.firstPeriodIndex;
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();
}
long windowPositionUs = positionMs == C.TIME_UNSET
? timeline.getWindow(windowIndex, window).getDefaultPositionUs() : C.msToUs(positionMs);
Pair<Integer, Long> periodIndexAndPositon =
timeline.getPeriodPosition(window, period, windowIndex, windowPositionUs);
maskingWindowPositionMs = C.usToMs(windowPositionUs);
maskingPeriodIndex = periodIndex;
maskingPeriodIndex = periodIndexAndPositon.first;
}
internalPlayer.seekTo(timeline, windowIndex, C.msToUs(positionMs));
for (Player.EventListener listener : listeners) {