mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
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:
parent
6ec53f4717
commit
dbe0e602ef
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user