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
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.
*/

View File

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

View File

@ -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();

View File

@ -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() {