diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b22039ccd6..6ac9d5a210 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -41,6 +41,8 @@ multiple codecs are supported by primary, hardware-accelerated decoders ([#4835](https://github.com/google/ExoPlayer/issues/4835)). * Rename `DecoderCounters#inputBufferCount` to `queuedInputBufferCount`. + * Make `SimpleExoPlayer.renderers` private. Renderers can be accessed via + `ExoPlayer.getRenderer`. * Android 12 compatibility: * Upgrade the Cast extension to depend on `com.google.android.gms:play-services-cast-framework:20.1.0`. Earlier diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java index 9a9a3fa1e2..a7df794bbd 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java @@ -1087,6 +1087,14 @@ 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. + */ + Renderer getRenderer(int index); + /** * Returns the track selector that this player uses, or null if track selection is not supported. */ diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java index bbd03b59d8..dfc77d95e1 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java @@ -944,6 +944,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/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java index ed5d0ca1eb..da9440bbab 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java @@ -347,8 +347,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; @@ -1349,6 +1348,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/testutils/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java index 19c833b42b..9db3cb6a3c 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java @@ -22,6 +22,7 @@ import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.PlayerMessage; +import com.google.android.exoplayer2.Renderer; import com.google.android.exoplayer2.SeekParameters; import com.google.android.exoplayer2.analytics.AnalyticsCollector; import com.google.android.exoplayer2.analytics.AnalyticsListener; @@ -291,6 +292,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() {