Commit 2521ee6d by tonihei Committed by Andrew Lewis

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
parent 596d98a0
...@@ -1136,6 +1136,15 @@ public interface ExoPlayer extends Player { ...@@ -1136,6 +1136,15 @@ public interface ExoPlayer extends Player {
int getRendererType(int index); 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. * Returns the track selector that this player uses, or null if track selection is not supported.
*/ */
@UnstableApi @UnstableApi
......
...@@ -955,6 +955,10 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -955,6 +955,10 @@ import java.util.concurrent.CopyOnWriteArraySet;
return renderers[index].getTrackType(); return renderers[index].getTrackType();
} }
public Renderer getRenderer(int index) {
return renderers[index];
}
public TrackSelector getTrackSelector() { public TrackSelector getTrackSelector() {
return trackSelector; return trackSelector;
} }
......
...@@ -358,8 +358,7 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -358,8 +358,7 @@ public class SimpleExoPlayer extends BasePlayer
private static final String TAG = "SimpleExoPlayer"; private static final String TAG = "SimpleExoPlayer";
protected final Renderer[] renderers; private final Renderer[] renderers;
private final ConditionVariable constructorFinished; private final ConditionVariable constructorFinished;
private final Context applicationContext; private final Context applicationContext;
private final ExoPlayerImpl player; private final ExoPlayerImpl player;
...@@ -1361,6 +1360,12 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -1361,6 +1360,12 @@ public class SimpleExoPlayer extends BasePlayer
} }
@Override @Override
public Renderer getRenderer(int index) {
verifyApplicationThread();
return player.getRenderer(index);
}
@Override
public TrackSelector getTrackSelector() { public TrackSelector getTrackSelector() {
verifyApplicationThread(); verifyApplicationThread();
return player.getTrackSelector(); return player.getTrackSelector();
......
...@@ -28,6 +28,7 @@ import androidx.media3.exoplayer.DecoderCounters; ...@@ -28,6 +28,7 @@ import androidx.media3.exoplayer.DecoderCounters;
import androidx.media3.exoplayer.ExoPlaybackException; import androidx.media3.exoplayer.ExoPlaybackException;
import androidx.media3.exoplayer.ExoPlayer; import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.exoplayer.PlayerMessage; import androidx.media3.exoplayer.PlayerMessage;
import androidx.media3.exoplayer.Renderer;
import androidx.media3.exoplayer.SeekParameters; import androidx.media3.exoplayer.SeekParameters;
import androidx.media3.exoplayer.analytics.AnalyticsCollector; import androidx.media3.exoplayer.analytics.AnalyticsCollector;
import androidx.media3.exoplayer.analytics.AnalyticsListener; import androidx.media3.exoplayer.analytics.AnalyticsListener;
...@@ -294,6 +295,11 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer { ...@@ -294,6 +295,11 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer {
} }
@Override @Override
public Renderer getRenderer(int index) {
throw new UnsupportedOperationException();
}
@Override
@Nullable @Nullable
public TrackSelector getTrackSelector() { public TrackSelector getTrackSelector() {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment