From 595b75b7d37a725c686d6139dca48b3054d4426d Mon Sep 17 00:00:00 2001 From: kimvde Date: Tue, 1 Apr 2025 03:40:13 -0700 Subject: [PATCH] Deduplicate some of the calls to DefaultVideoSink methods Some DefaultVideoSink methods are called once per sequence, but this doesn't make sense as the DefaultVideoSink is connected to the VideoGraph output. This CL calls the DefaultVideoSink method only for the primary sequence. The other problematic DefaultVideoSink method calls will be moved in follow-up CLs. This is part of the effort to prepare PlaybackVideoGraphWrapper for multi-sequence. PiperOrigin-RevId: 742625589 --- .../video/PlaybackVideoGraphWrapper.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/PlaybackVideoGraphWrapper.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/PlaybackVideoGraphWrapper.java index 5d5e784164..7dc0609668 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/PlaybackVideoGraphWrapper.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/PlaybackVideoGraphWrapper.java @@ -637,6 +637,11 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video defaultVideoSink.setBufferTimestampAdjustmentUs(bufferTimestampAdjustmentUs); } + private void setChangeFrameRateStrategy( + @C.VideoChangeFrameRateStrategy int changeFrameRateStrategy) { + defaultVideoSink.setChangeFrameRateStrategy(changeFrameRateStrategy); + } + private boolean shouldRenderToInputVideoSink() { return totalVideoInputCount != C.LENGTH_UNSET && totalVideoInputCount == registeredVideoInputCount; @@ -850,12 +855,16 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video @Override public void setVideoFrameMetadataListener( VideoFrameMetadataListener videoFrameMetadataListener) { - PlaybackVideoGraphWrapper.this.setVideoFrameMetadataListener(videoFrameMetadataListener); + if (inputIndex == PRIMARY_SEQUENCE_INDEX) { + PlaybackVideoGraphWrapper.this.setVideoFrameMetadataListener(videoFrameMetadataListener); + } } @Override public void setPlaybackSpeed(@FloatRange(from = 0, fromInclusive = false) float speed) { - PlaybackVideoGraphWrapper.this.setPlaybackSpeed(speed); + if (inputIndex == PRIMARY_SEQUENCE_INDEX) { + PlaybackVideoGraphWrapper.this.setPlaybackSpeed(speed); + } } @Override @@ -892,7 +901,9 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video @Override public void setChangeFrameRateStrategy( @C.VideoChangeFrameRateStrategy int changeFrameRateStrategy) { - defaultVideoSink.setChangeFrameRateStrategy(changeFrameRateStrategy); + if (inputIndex == PRIMARY_SEQUENCE_INDEX) { + PlaybackVideoGraphWrapper.this.setChangeFrameRateStrategy(changeFrameRateStrategy); + } } @Override