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 31bd19b6fd..b2b1512655 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 @@ -1602,4 +1602,13 @@ public interface ExoPlayer extends Player { * @see AudioOffloadListener#onExperimentalSleepingForOffloadChanged(boolean) */ boolean experimentalIsSleepingForOffload(); + + /** + * Returns whether tunneling is enabled for + * the currently selected tracks. + * + * @see Player.Listener#onTracksChanged(Tracks) + */ + boolean isTunnelingEnabled(); } 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 9c67002a54..d7358ec04e 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 @@ -1671,6 +1671,17 @@ import java.util.concurrent.TimeoutException; streamVolumeManager.setMuted(muted); } + @Override + public boolean isTunnelingEnabled() { + verifyApplicationThread(); + for (RendererConfiguration config : playbackInfo.trackSelectorResult.rendererConfigurations) { + if (config.tunneling) { + return true; + } + } + return false; + } + /* package */ void setThrowsWhenUsingWrongThread(boolean throwsWhenUsingWrongThread) { this.throwsWhenUsingWrongThread = throwsWhenUsingWrongThread; } 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 421f5a8f63..fa316e80d1 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 @@ -1247,6 +1247,12 @@ public class SimpleExoPlayer extends BasePlayer player.setDeviceMuted(muted); } + @Override + public boolean isTunnelingEnabled() { + blockUntilConstructorFinished(); + return player.isTunnelingEnabled(); + } + /* package */ void setThrowsWhenUsingWrongThread(boolean throwsWhenUsingWrongThread) { blockUntilConstructorFinished(); player.setThrowsWhenUsingWrongThread(throwsWhenUsingWrongThread); 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 d39ec7536d..0cad49571a 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 @@ -410,4 +410,9 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer { public boolean experimentalIsSleepingForOffload() { throw new UnsupportedOperationException(); } + + @Override + public boolean isTunnelingEnabled() { + throw new UnsupportedOperationException(); + } }