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 Ian Baker
parent 9151103968
commit 022b5144b1
5 changed files with 27 additions and 2 deletions

View File

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

View File

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

View File

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

View File

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

View File

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