Skip to content

Commit ce59680

Browse files
kim-vdecopybara-github
authored andcommitted
Always call onProcessedStreamChanged for first stream for effects
Before this CL: - MediaCodecVideoRenderer.onProcessedStreamChanged was called for the first stream in CompositionPlayer. - MediaCodecVideoRenderer.onProcessedStreamChanged was NOT called for the first stream in ExoPlayer.setVideoEffects. This discrepancy was adding some complexity to the code, making it less robust. PiperOrigin-RevId: 735439320
1 parent e8842b9 commit ce59680

File tree

2 files changed

+4
-9
lines changed

2 files changed

+4
-9
lines changed

libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -935,6 +935,7 @@ public void onError(
935935
if (wakeupListener != null) {
936936
videoSink.setWakeupListener(wakeupListener);
937937
}
938+
experimentalEnableProcessedStreamChangedAtStart();
938939
} else {
939940
videoFrameReleaseControl.setClock(getClock());
940941
int firstFrameReleaseInstruction =
@@ -962,13 +963,6 @@ protected void onStreamChanged(
962963
MediaSource.MediaPeriodId mediaPeriodId)
963964
throws ExoPlaybackException {
964965
super.onStreamChanged(formats, startPositionUs, offsetUs, mediaPeriodId);
965-
if (this.startPositionUs == C.TIME_UNSET) {
966-
this.startPositionUs = startPositionUs;
967-
if (videoSink != null) {
968-
videoSink.setStreamStartPositionUs(getOutputStreamStartPositionUs());
969-
videoSink.setBufferTimestampAdjustmentUs(getBufferTimestampAdjustmentUs());
970-
}
971-
}
972966
updatePeriodDurationUs(mediaPeriodId);
973967
}
974968

@@ -992,7 +986,6 @@ protected void onPositionReset(long positionUs, boolean joining) throws ExoPlayb
992986
// MediaCodec once the codec is flushed.
993987
videoSink.flush(/* resetPosition= */ true);
994988
}
995-
pendingVideoSinkInputStreamChange = true;
996989
}
997990
super.onPositionReset(positionUs, joining);
998991
if (videoSink == null) {
@@ -1869,6 +1862,9 @@ protected void onProcessedStreamChange() {
18691862
// Signaling end of the previous stream.
18701863
videoSink.signalEndOfCurrentInputStream();
18711864
videoSink.setStreamStartPositionUs(getOutputStreamStartPositionUs());
1865+
if (this.startPositionUs == C.TIME_UNSET) {
1866+
this.startPositionUs = getOutputStreamStartPositionUs();
1867+
}
18721868
videoSink.setBufferTimestampAdjustmentUs(getBufferTimestampAdjustmentUs());
18731869
} else {
18741870
videoFrameReleaseControl.onStreamChanged(RELEASE_FIRST_FRAME_WHEN_PREVIOUS_STREAM_PROCESSED);

libraries/transformer/src/main/java/androidx/media3/transformer/SequenceRenderersFactory.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,6 @@ public SequenceVideoRenderer(
329329
this.bufferingVideoSink = bufferingVideoSink;
330330
this.requestToneMapping = requestToneMapping;
331331
this.pendingEffects = ImmutableList.of();
332-
experimentalEnableProcessedStreamChangedAtStart();
333332
}
334333

335334
@Override

0 commit comments

Comments
 (0)