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
This commit is contained in:
tonihei 2022-01-28 16:43:44 +00:00 committed by Andrew Lewis
parent 596d98a048
commit 2521ee6d9f
4 changed files with 26 additions and 2 deletions

View File

@ -1135,6 +1135,15 @@ public interface ExoPlayer extends Player {
@C.TrackType @C.TrackType
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.
*/ */

View File

@ -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;
} }

View File

@ -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;
@ -1360,6 +1359,12 @@ public class SimpleExoPlayer extends BasePlayer
return player.getRendererType(index); return player.getRendererType(index);
} }
@Override
public Renderer getRenderer(int index) {
verifyApplicationThread();
return player.getRenderer(index);
}
@Override @Override
public TrackSelector getTrackSelector() { public TrackSelector getTrackSelector() {
verifyApplicationThread(); verifyApplicationThread();

View File

@ -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;
@ -293,6 +294,11 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@Override
public Renderer getRenderer(int index) {
throw new UnsupportedOperationException();
}
@Override @Override
@Nullable @Nullable
public TrackSelector getTrackSelector() { public TrackSelector getTrackSelector() {