From 2521ee6d9fa6b175678383a399ee31783f013c8c Mon Sep 17 00:00:00 2001 From: tonihei Date: Fri, 28 Jan 2022 16:43:44 +0000 Subject: [PATCH] Add getRenderer method to ExoPlayer. This allows access to custom renderers, for example to send messages or to access custom fields and methods. PiperOrigin-RevId: 424878963 --- .../main/java/androidx/media3/exoplayer/ExoPlayer.java | 9 +++++++++ .../java/androidx/media3/exoplayer/ExoPlayerImpl.java | 4 ++++ .../java/androidx/media3/exoplayer/SimpleExoPlayer.java | 9 +++++++-- .../java/androidx/media3/test/utils/StubExoPlayer.java | 6 ++++++ 4 files changed, 26 insertions(+), 2 deletions(-) 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 1b770f014e..7269e6c6c5 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java @@ -1135,6 +1135,15 @@ public interface ExoPlayer extends Player { @C.TrackType int getRendererType(int index); + /** + * Returns the renderer at the given index. + * + * @param index The index of the renderer. + * @return The renderer at this index. + */ + @UnstableApi + Renderer getRenderer(int index); + /** * Returns the track selector that this player uses, or null if track selection is not supported. */ 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 00a5985efc..823f3ffd1a 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java @@ -955,6 +955,10 @@ import java.util.concurrent.CopyOnWriteArraySet; return renderers[index].getTrackType(); } + public Renderer getRenderer(int index) { + return renderers[index]; + } + public TrackSelector getTrackSelector() { return trackSelector; } 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 09c0a351b8..bc9f029e28 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java @@ -358,8 +358,7 @@ public class SimpleExoPlayer extends BasePlayer private static final String TAG = "SimpleExoPlayer"; - protected final Renderer[] renderers; - + private final Renderer[] renderers; private final ConditionVariable constructorFinished; private final Context applicationContext; private final ExoPlayerImpl player; @@ -1360,6 +1359,12 @@ public class SimpleExoPlayer extends BasePlayer return player.getRendererType(index); } + @Override + public Renderer getRenderer(int index) { + verifyApplicationThread(); + return player.getRenderer(index); + } + @Override public TrackSelector getTrackSelector() { verifyApplicationThread(); 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 7f9471a1b6..0f4cd5bdae 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 @@ -28,6 +28,7 @@ import androidx.media3.exoplayer.DecoderCounters; import androidx.media3.exoplayer.ExoPlaybackException; import androidx.media3.exoplayer.ExoPlayer; import androidx.media3.exoplayer.PlayerMessage; +import androidx.media3.exoplayer.Renderer; import androidx.media3.exoplayer.SeekParameters; import androidx.media3.exoplayer.analytics.AnalyticsCollector; import androidx.media3.exoplayer.analytics.AnalyticsListener; @@ -293,6 +294,11 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer { throw new UnsupportedOperationException(); } + @Override + public Renderer getRenderer(int index) { + throw new UnsupportedOperationException(); + } + @Override @Nullable public TrackSelector getTrackSelector() {