private boolean resolvePendingMessagePosition(PendingMessageInfo pendingMessageInfo) { if (pendingMessageInfo.resolvedPeriodUid == null) { // Position is still unresolved. Try to find window in current timeline. Pair<Object, Long> periodPosition = resolveSeekPosition( new SeekPosition( pendingMessageInfo.message.getTimeline(), pendingMessageInfo.message.getWindowIndex(), C.msToUs(pendingMessageInfo.message.getPositionMs())), /* trySubsequentPeriods= */ false); if (periodPosition == null) { return false; } pendingMessageInfo.setResolvedPosition( playbackInfo.timeline.getIndexOfPeriod(periodPosition.first), periodPosition.second, periodPosition.first); } else { // Position has been resolved for a previous timeline. Try to find the updated period index. int index = playbackInfo.timeline.getIndexOfPeriod(pendingMessageInfo.resolvedPeriodUid); if (index == C.INDEX_UNSET) { return false; } pendingMessageInfo.resolvedPeriodIndex = index; } return true; }
boolean seekPositionAdjusted; Pair<Object, Long> resolvedSeekPosition = resolveSeekPosition(seekPosition, /* trySubsequentPeriods= */ true); if (resolvedSeekPosition == null) {
try { periodPosition = resolveSeekPosition(pendingInitialSeekPosition, /* trySubsequentPeriods= */ true); } catch (IllegalSeekPositionException e) { MediaPeriodId firstMediaPeriodId =