Fix logic that detects the last media item in Sequence
After the change in a879bc2154
, the Sequence won't have repeated
EditedMediaItems. Thus if the sequence is looping, the last EditedMediaItems
in the Sequence object might not corresponds to the last item in the "logical"
sequence.
PiperOrigin-RevId: 675912197
This commit is contained in:
parent
3facfbf542
commit
69da26935e
@ -50,7 +50,6 @@ import androidx.media3.exoplayer.video.MediaCodecVideoRenderer;
|
||||
import androidx.media3.exoplayer.video.VideoRendererEventListener;
|
||||
import androidx.media3.exoplayer.video.VideoSink;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Iterables;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
@ -253,8 +252,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
private void onMediaItemChanged() {
|
||||
EditedMediaItem currentEditedMediaItem = checkStateNotNull(pendingEditedMediaItem);
|
||||
// Use reference equality intentionally.
|
||||
int lastEditedMediaItemIndex = getTimeline().getPeriodCount() - 1;
|
||||
boolean isLastInSequence =
|
||||
currentEditedMediaItem == Iterables.getLast(sequence.editedMediaItems);
|
||||
currentEditedMediaItem == getRepeatedEditedMediaItem(sequence, lastEditedMediaItemIndex);
|
||||
audioSink.onMediaItemChanged(
|
||||
currentEditedMediaItem, pendingOffsetToCompositionTimeUs, isLastInSequence);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user