From 27e6395dbc3ba8424ac31eb52f67e30509e4b4ba Mon Sep 17 00:00:00 2001 From: tonihei Date: Wed, 12 Jun 2024 04:00:43 -0700 Subject: [PATCH] Make ImageOutput clearable It's currently not possible to remove a previously set image output on ExoPlayer, although the underlying renderer already supports receiving null to clear the output. Marking the parameter as nullable allows apps to clear it as well. PiperOrigin-RevId: 642569081 --- RELEASENOTES.md | 3 +++ .../src/main/java/androidx/media3/exoplayer/ExoPlayer.java | 4 ++-- .../main/java/androidx/media3/exoplayer/ExoPlayerImpl.java | 2 +- .../main/java/androidx/media3/exoplayer/SimpleExoPlayer.java | 2 +- .../main/java/androidx/media3/test/utils/StubExoPlayer.java | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index feb7a4dc53..2039c5af59 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -17,6 +17,9 @@ * Video: * Text: * Metadata: +* Image: + * Allow `null` as parameter for `ExoPlayer.setImageOutput` to clear a + previously set `ImageOutput`. * DRM: * Effect: * Remove unused `OverlaySettings.useHdr` since dynamic range of overlay diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java index 155d708cae..08428368ef 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java @@ -1978,8 +1978,8 @@ public interface ExoPlayer extends Player { /** * Sets the {@link ImageOutput} where rendered images will be forwarded. * - * @param imageOutput The {@link ImageOutput}. + * @param imageOutput The {@link ImageOutput}. May be null to clear a previously set image output. */ @UnstableApi - void setImageOutput(ImageOutput imageOutput); + void setImageOutput(@Nullable ImageOutput imageOutput); } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java index 8170930b44..031a888feb 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java @@ -1895,7 +1895,7 @@ import java.util.concurrent.TimeoutException; } @Override - public void setImageOutput(ImageOutput imageOutput) { + public void setImageOutput(@Nullable ImageOutput imageOutput) { verifyApplicationThread(); sendRendererMessage(TRACK_TYPE_IMAGE, MSG_SET_IMAGE_OUTPUT, imageOutput); } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java index b91bc3fbfd..0c38eccc6f 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java @@ -1352,7 +1352,7 @@ public class SimpleExoPlayer extends BasePlayer } @Override - public void setImageOutput(ImageOutput imageOutput) { + public void setImageOutput(@Nullable ImageOutput imageOutput) { blockUntilConstructorFinished(); player.setImageOutput(imageOutput); } diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java index 89d01f87d0..8a13d08712 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java @@ -434,7 +434,7 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer { } @Override - public void setImageOutput(ImageOutput imageOutput) { + public void setImageOutput(@Nullable ImageOutput imageOutput) { throw new UnsupportedOperationException(); } }