diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 90cd7722ac..7460ba5075 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -7,17 +7,27 @@ results in a call to `Player.Listener#onTimelineChanged` with `reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED` ([#9889](https://github.com/google/ExoPlayer/issues/9889)). + * For progressive media, only include selected tracks in buffered position + ([#10361](https://github.com/google/ExoPlayer/issues/10361)). + * Add `ExoPlayer.isTunnelingEnabled` to check if tunneling is enabled for + the currently selected tracks + ([#2518](https://github.com/google/ExoPlayer/issues/2518)). * Extractors: * Add support for AVI ([#2092](https://github.com/google/ExoPlayer/issues/2092)). * Fix parsing of H265 short term reference picture sets ([#10316](https://github.com/google/ExoPlayer/issues/10316)). + * Fix parsing of bitrates from `esds` boxes + ([#10381](https://github.com/google/ExoPlayer/issues/10381)). * Metadata: * `MetadataRenderer` can now be configured to render metadata as soon as they are available. Create an instance with `MetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean)` to specify whether the renderer will output metadata early or in sync with the player position. +* DASH: + * Parse ClearKey license URL from manifests + ([#10246](https://github.com/google/ExoPlayer/issues/10246)). * UI: * Ensure TalkBack announces the currently active speed option in the playback controls menu @@ -25,6 +35,16 @@ * RTSP: * Add RTP reader for H263 ([#63](https://github.com/androidx/media/pull/63)). +* Leanback extension: + * Listen to `playWhenReady` changes in `LeanbackAdapter` + ([10420](https://github.com/google/ExoPlayer/issues/10420)). +* Cast: + * Use the `MediaItem` that has been passed to the playlist methods as + `Window.mediaItem` in `CastTimeline` + ([#25](https://github.com/androidx/media/issues/25), + [#8212](https://github.com/google/ExoPlayer/issues/8212)). + * Support `Player.getMetadata()` and `Listener.onMediaMetadataChanged()` + with `CastPlayer` ([#25](https://github.com/androidx/media/issues/25)). ### 1.0.0-beta01 (2022-06-16) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java index 1efe41836c..422fc783e4 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayer.java @@ -1696,4 +1696,14 @@ public interface ExoPlayer extends Player { */ @UnstableApi boolean experimentalIsSleepingForOffload(); + + /** + * Returns whether tunneling is enabled for + * the currently selected tracks. + * + * @see Player.Listener#onTracksChanged(Tracks) + */ + @UnstableApi + boolean isTunnelingEnabled(); } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java index e95c465e9d..2327f53c34 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImpl.java @@ -1682,6 +1682,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/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java index 3dfd26d19b..233fd18eed 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/SimpleExoPlayer.java @@ -1258,6 +1258,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/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java index 28840d6ae0..0838b7e4ee 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/StubExoPlayer.java @@ -412,4 +412,9 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer { public boolean experimentalIsSleepingForOffload() { throw new UnsupportedOperationException(); } + + @Override + public boolean isTunnelingEnabled() { + throw new UnsupportedOperationException(); + } }