diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DefaultVideoSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DefaultVideoSink.java index 9f64532c2e..b696c4070c 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DefaultVideoSink.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/DefaultVideoSink.java @@ -220,7 +220,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; @Override public boolean handleInputFrame( - long framePresentationTimeUs, boolean isLastFrame, VideoFrameHandler videoFrameHandler) { + long framePresentationTimeUs, VideoFrameHandler videoFrameHandler) { videoFrameHandlers.add(videoFrameHandler); long bufferPresentationTimeUs = framePresentationTimeUs - bufferTimestampAdjustmentUs; videoFrameRenderControl.onFrameAvailableForRendering(bufferPresentationTimeUs); 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 d944958cea..860d2a7255 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 @@ -1741,7 +1741,6 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer long framePresentationTimeUs = bufferPresentationTimeUs + getBufferTimestampAdjustmentUs(); return videoSink.handleInputFrame( framePresentationTimeUs, - isLastBuffer, new VideoSink.VideoFrameHandler() { @Override public void render(long renderTimestampNs) { 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 fa35c0f0d9..d91d9ff674 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 @@ -457,10 +457,10 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video outputStreamFirstFrameReleaseInstruction = streamChangeInfo.firstFrameReleaseInstruction; onOutputStreamChanged(); } + defaultVideoSink.handleInputFrame(framePresentationTimeUs, videoFrameHandler); boolean isLastFrame = finalBufferPresentationTimeUs != C.TIME_UNSET && bufferPresentationTimeUs >= finalBufferPresentationTimeUs; - defaultVideoSink.handleInputFrame(framePresentationTimeUs, isLastFrame, videoFrameHandler); if (isLastFrame) { // TODO b/257464707 - Support extensively modified media. defaultVideoSink.signalEndOfCurrentInputStream(); @@ -895,7 +895,7 @@ public final class PlaybackVideoGraphWrapper implements VideoSinkProvider, Video @Override public boolean handleInputFrame( - long framePresentationTimeUs, boolean isLastFrame, VideoFrameHandler videoFrameHandler) { + long framePresentationTimeUs, VideoFrameHandler videoFrameHandler) { checkState(isInitialized()); if (!shouldRenderToInputVideoSink()) { diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoSink.java index 76ffc535cb..b01ed1e58c 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoSink.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoSink.java @@ -275,15 +275,11 @@ public interface VideoSink { * Format, long, int, List) signaled}. * * @param framePresentationTimeUs The frame's presentation time, in microseconds. - * @param isLastFrame Whether this is the last frame of the video stream. This flag is set on a - * best effort basis, and any logic relying on it should degrade gracefully to handle cases - * where it's not set. * @param videoFrameHandler The {@link VideoFrameHandler} used to handle the input frame. * @return Whether the frame was handled successfully. If {@code false}, the caller can try again * later. */ - boolean handleInputFrame( - long framePresentationTimeUs, boolean isLastFrame, VideoFrameHandler videoFrameHandler); + boolean handleInputFrame(long framePresentationTimeUs, VideoFrameHandler videoFrameHandler); /** * Handles an input {@link Bitmap}. diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/BufferingVideoSink.java b/libraries/transformer/src/main/java/androidx/media3/transformer/BufferingVideoSink.java index 3f4c120d67..20f88ba29e 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/BufferingVideoSink.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/BufferingVideoSink.java @@ -234,9 +234,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; */ @Override public boolean handleInputFrame( - long framePresentationTimeUs, boolean isLastFrame, VideoFrameHandler videoFrameHandler) { + long framePresentationTimeUs, VideoFrameHandler videoFrameHandler) { return videoSink != null - && videoSink.handleInputFrame(framePresentationTimeUs, isLastFrame, videoFrameHandler); + && videoSink.handleInputFrame(framePresentationTimeUs, videoFrameHandler); } /**