From 377136419df0d29917e6970c42e46e84b375e1dd Mon Sep 17 00:00:00 2001 From: kimvde Date: Thu, 6 Mar 2025 02:52:44 -0800 Subject: [PATCH] MCVR: call VideoSink.setStreamTimestampInfo on stream change The start position and buffer adjustement are only allowed to change when the stream changes so it makes more sense to call setStreamTimestampInfo when the stream changes. This is part of an effort to simplify stream change notification to the video sink, to ease implementation of multi sequences preview. PiperOrigin-RevId: 734062686 --- .../media3/exoplayer/video/MediaCodecVideoRenderer.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java index 4c80cd1eb6..d5b11ccd18 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java @@ -941,6 +941,10 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer super.onStreamChanged(formats, startPositionUs, offsetUs, mediaPeriodId); if (this.startPositionUs == C.TIME_UNSET) { this.startPositionUs = startPositionUs; + if (videoSink != null) { + videoSink.setStreamTimestampInfo( + getOutputStreamStartPositionUs(), getBufferTimestampAdjustmentUs()); + } } updatePeriodDurationUs(mediaPeriodId); } @@ -965,8 +969,6 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer // MediaCodec once the codec is flushed. videoSink.flush(/* resetPosition= */ true); } - videoSink.setStreamTimestampInfo( - getOutputStreamStartPositionUs(), getBufferTimestampAdjustmentUs()); pendingVideoSinkInputStreamChange = true; } super.onPositionReset(positionUs, joining);