Commit b3593e61 by ibaker Committed by Ian Baker

Version bump to exoplayer:2.17.0 and media3:1.0.0-alpha02

PiperOrigin-RevId: 430456963
parent 64a3cf72
# Release notes # Release notes
### dev-v2 (not yet released) ### 2.17.0 (2022-02-24)
* Core library: * Core library:
* Support preferred video role flags in track selection
([#9402](https://github.com/google/ExoPlayer/issues/9402)).
* Prefer audio content preferences (for example, "default" audio track or
track matching system Locale language) over technical track selection
constraints (for example, preferred MIME type, or maximum channel
count).
* Prohibit duplicate `TrackGroup`s in a `TrackGroupArray`. `TrackGroup`s
can always be made distinguishable by setting an `id` in the
`TrackGroup` constructor. This fixes a crash when resuming playback
after backgrounding the app with an active track override
([#9718](https://github.com/google/ExoPlayer/issues/9718)).
* Sleep and retry when creating a `MediaCodec` instance fails. This works * Sleep and retry when creating a `MediaCodec` instance fails. This works
around an issue that occurs on some devices when switching a surface around an issue that occurs on some devices when switching a surface
from a secure codec to another codec from a secure codec to another codec
...@@ -21,16 +10,21 @@ ...@@ -21,16 +10,21 @@
* Add `MediaCodecAdapter.getMetrics()` to allow users obtain metrics data * Add `MediaCodecAdapter.getMetrics()` to allow users obtain metrics data
from `MediaCodec`. from `MediaCodec`.
([#9766](https://github.com/google/ExoPlayer/issues/9766)). ([#9766](https://github.com/google/ExoPlayer/issues/9766)).
* Amend logic in `AdaptiveTrackSelection` to allow a quality increase
under sufficient network bandwidth even if playback is very close to the
live edge ([#9784](https://github.com/google/ExoPlayer/issues/9784)).
* Fix Maven dependency resolution * Fix Maven dependency resolution
([#8353](https://github.com/google/ExoPlayer/issues/8353)). ([#8353](https://github.com/google/ExoPlayer/issues/8353)).
* Fix decoder fallback logic for Dolby Atmos (E-AC3-JOC) and Dolby Vision
to use a compatible base decoder (E-AC3 or H264/H265) if needed.
* Disable automatic speed adjustment for live streams that neither have * Disable automatic speed adjustment for live streams that neither have
low-latency features nor a user request setting the speed low-latency features nor a user request setting the speed
([#9329](https://github.com/google/ExoPlayer/issues/9329)). ([#9329](https://github.com/google/ExoPlayer/issues/9329)).
* Rename `DecoderCounters#inputBufferCount` to `queuedInputBufferCount`.
* Make `SimpleExoPlayer.renderers` private. Renderers can be accessed via
`ExoPlayer.getRenderer`.
* Updated some `AnalyticsListener.EventFlags` constant values to match
values in `Player.EventFlags`.
* Split `AnalyticsCollector` into an interface and default implementation
to allow it to be stripped by R8 if an app doesn't need it.
* Track selection:
* Support preferred video role flags in track selection
([#9402](https://github.com/google/ExoPlayer/issues/9402)).
* Update video track selection logic to take preferred MIME types and role * Update video track selection logic to take preferred MIME types and role
flags into account when selecting multiple video tracks for adaptation flags into account when selecting multiple video tracks for adaptation
([#9519](https://github.com/google/ExoPlayer/issues/9519)). ([#9519](https://github.com/google/ExoPlayer/issues/9519)).
...@@ -40,23 +34,24 @@ ...@@ -40,23 +34,24 @@
* Update video track selection logic to prefer more efficient codecs if * Update video track selection logic to prefer more efficient codecs if
multiple codecs are supported by primary, hardware-accelerated decoders multiple codecs are supported by primary, hardware-accelerated decoders
([#4835](https://github.com/google/ExoPlayer/issues/4835)). ([#4835](https://github.com/google/ExoPlayer/issues/4835)).
* Rename `DecoderCounters#inputBufferCount` to `queuedInputBufferCount`. * Prefer audio content preferences (for example, the "default" audio track
* Make `SimpleExoPlayer.renderers` private. Renderers can be accessed via or a track matching the system locale language) over technical track
`ExoPlayer.getRenderer`. selection constraints (for example, preferred MIME type, or maximum
* Updated some `AnalyticsListener.EventFlags` constant values to match channel count).
values in `Player.EventFlags`. * Prohibit duplicate `TrackGroup`s in a `TrackGroupArray`. `TrackGroup`s
* Split `AnalyticsCollector` into an interface and default implementation can always be made distinguishable by setting an `id` in the
to allow it to be stripped by R8 if an app doesn't need it. `TrackGroup` constructor. This fixes a crash when resuming playback
* Android 12 compatibility: after backgrounding the app with an active track override
* Upgrade the Cast extension to depend on ([#9718](https://github.com/google/ExoPlayer/issues/9718)).
`com.google.android.gms:play-services-cast-framework:20.1.0`. Earlier * Amend logic in `AdaptiveTrackSelection` to allow a quality increase
versions of `play-services-cast-framework` are not compatible with apps under sufficient network bandwidth even if playback is very close to the
targeting Android 12, and will crash with an `IllegalArgumentException` live edge ([#9784](https://github.com/google/ExoPlayer/issues/9784)).
when creating `PendingIntent`s * Video:
([#9528](https://github.com/google/ExoPlayer/issues/9528)). * Fix decoder fallback logic for Dolby Vision to use a compatible
H264/H265 decoder if needed.
* Audio: * Audio:
* Add a `Builder` to `DefaultAudioSink` and deprecate the existing * Fix decoder fallback logic for Dolby Atmos (E-AC3-JOC) to use a
constructors. compatible E-AC3 decoder if needed.
* Change `AudioCapabilities` APIs to require passing explicitly * Change `AudioCapabilities` APIs to require passing explicitly
`AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES` instead of `null`. `AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES` instead of `null`.
* Allow customization of the `AudioTrack` buffer size calculation by * Allow customization of the `AudioTrack` buffer size calculation by
...@@ -64,16 +59,14 @@ ...@@ -64,16 +59,14 @@
([#8891](https://github.com/google/ExoPlayer/issues/8891)). ([#8891](https://github.com/google/ExoPlayer/issues/8891)).
* Retry `AudioTrack` creation if the requested buffer size was > 1MB. * Retry `AudioTrack` creation if the requested buffer size was > 1MB.
([#9712](https://github.com/google/ExoPlayer/issues/9712)). ([#9712](https://github.com/google/ExoPlayer/issues/9712)).
* Make `build_ffmpeg.sh` depend on LLVM's bin utils instead of GNU's
([#9933](https://github.com/google/ExoPlayer/issues/9933)).
* Extractors: * Extractors:
* Fix inconsistency with spec in H.265 SPS nal units parsing * Fix incorrect parsing of H.265 SPS NAL units
([#9719](https://github.com/google/ExoPlayer/issues/9719)). ([#9719](https://github.com/google/ExoPlayer/issues/9719)).
* Parse Vorbis Comments (including `METADATA_BLOCK_PICTURE`) in Ogg Opus * Parse Vorbis Comments (including `METADATA_BLOCK_PICTURE`) in Ogg Opus
and Vorbis files. and Ogg Vorbis files.
* Text: * Text:
* Add a `MediaItem.SubtitleConfiguration#id` field which is propagated to * Add a `MediaItem.SubtitleConfiguration.id` field which is propagated to
the `Format#id` field of the subtitle track created from the the `Format.id` field of the subtitle track created from the
configuration configuration
([#9673](https://github.com/google/ExoPlayer/issues/9673)). ([#9673](https://github.com/google/ExoPlayer/issues/9673)).
* Add basic support for WebVTT subtitles in Matroska containers * Add basic support for WebVTT subtitles in Matroska containers
...@@ -86,30 +79,34 @@ ...@@ -86,30 +79,34 @@
the `playbackLooper` needs to be passed to `DrmSessionManager.setPlayer` the `playbackLooper` needs to be passed to `DrmSessionManager.setPlayer`
instead. instead.
* Ad playback / IMA: * Ad playback / IMA:
* Add support for
[IMA Dynamic Ad Insertion (DAI)](https://support.google.com/admanager/answer/6147120)
([#8213](https://github.com/google/ExoPlayer/issues/8213)).
* Add a method to `AdPlaybackState` to allow resetting an ad group so that * Add a method to `AdPlaybackState` to allow resetting an ad group so that
it can be played again it can be played again
([#9615](https://github.com/google/ExoPlayer/issues/9615)). ([#9615](https://github.com/google/ExoPlayer/issues/9615)).
* Enforce playback speed of 1.0 during ad playback * Enforce playback speed of 1.0 during ad playback
([#9018](https://github.com/google/ExoPlayer/issues/9018)). ([#9018](https://github.com/google/ExoPlayer/issues/9018)).
* Add support for
[IMA Dynamic Ad Insertion (DAI)](https://support.google.com/admanager/answer/6147120)
([#8213](https://github.com/google/ExoPlayer/issues/8213)).
* Fix issue where an ad group that failed to load caused an immediate * Fix issue where an ad group that failed to load caused an immediate
playback reset playback reset
([#9929](https://github.com/google/ExoPlayer/issues/9929)). ([#9929](https://github.com/google/ExoPlayer/issues/9929)).
* UI:
* Fix the color of the numbers in `StyledPlayerView` rewind and
fastforward buttons when using certain themes
([#9765](https://github.com/google/ExoPlayer/issues/9765)).
* Correctly translate playback speed strings
([#9811](https://github.com/google/ExoPlayer/issues/9811)).
* DASH: * DASH:
* Support the `forced-subtitle` track role * Support the `forced-subtitle` track role
([#9727](https://github.com/google/ExoPlayer/issues/9727)). ([#9727](https://github.com/google/ExoPlayer/issues/9727)).
* Stop interpreting the `main` track role as `C.SELECTION_FLAG_DEFAULT`. * Stop interpreting the `main` track role as `C.SELECTION_FLAG_DEFAULT`.
* Fix bug when base URLs have been assigned the same service location and * Fix base URL exclusion logic for manifests that do not declare the DVB
priority in manifests that do not declare the dvb namespace. This namespace ([#9856](https://github.com/google/ExoPlayer/issues/9856)).
prevents the exclusion logic to exclude base URL when they actually
should be used as a fallback base URL.
* Support relative `MPD.Location` URLs * Support relative `MPD.Location` URLs
([#9939](https://github.com/google/ExoPlayer/issues/9939)). ([#9939](https://github.com/google/ExoPlayer/issues/9939)).
* HLS: * HLS:
* Use chunkless preparation by default to improve start up time. If your * Use chunkless preparation by default to improve start up time. If your
renditions contain muxed closed-caption tracks that are *not* declared renditions contain muxed closed-caption tracks that are **not** declared
in the master playlist, you should add them to the master playlist to be in the master playlist, you should add them to the master playlist to be
available for playback, or turn off chunkless preparation with available for playback, or turn off chunkless preparation with
`HlsMediaSource.Factory.setAllowChunklessPreparation(false)`. `HlsMediaSource.Factory.setAllowChunklessPreparation(false)`.
...@@ -117,14 +114,15 @@ ...@@ -117,14 +114,15 @@
([#2882](https://github.com/google/ExoPlayer/issues/2882)). ([#2882](https://github.com/google/ExoPlayer/issues/2882)).
* Correctly populate `Format.label` for audio only HLS streams * Correctly populate `Format.label` for audio only HLS streams
([#9608](https://github.com/google/ExoPlayer/issues/9608)). ([#9608](https://github.com/google/ExoPlayer/issues/9608)).
* Timestamp adjuster initialization occurs after opening the `DataSource` * RTSP:
([#9777](https://github.com/google/ExoPlayer/pull/9777)). * Provide a client API to override the `SocketFactory` used for any server
* UI: connection ([#9606](https://github.com/google/ExoPlayer/pull/9606)).
* Fix the color of the numbers in `StyledPlayerView` rewind and * Prefer DIGEST authentication method over BASIC if both are present
fastforward buttons when using certain themes ([#9800](https://github.com/google/ExoPlayer/issues/9800)).
([#9765](https://github.com/google/ExoPlayer/issues/9765)). * Handle when RTSP track timing is not available
* Correctly translate playback speed strings ([#9775](https://github.com/google/ExoPlayer/issues/9775)).
([#9811](https://github.com/google/ExoPlayer/issues/9811)). * Ignore invalid RTP-Info header values
([#9619](https://github.com/google/ExoPlayer/issues/9619)).
* Transformer: * Transformer:
* Increase required min API version to 21. * Increase required min API version to 21.
* `TransformationException` is now used to describe errors that occur * `TransformationException` is now used to describe errors that occur
...@@ -135,29 +133,30 @@ ...@@ -135,29 +133,30 @@
* Fix potential NPE in `Transformer.getProgress` when releasing the muxer * Fix potential NPE in `Transformer.getProgress` when releasing the muxer
throws. throws.
* Add a demo app for applying transformations. * Add a demo app for applying transformations.
* MediaSession extension:
* Remove deprecated call to `onStop(/* reset= */ true)` and provide an
opt-out flag for apps that don't want to clear the playlist on stop.
* RTSP:
* Provide a client API to override the `SocketFactory` used for any server
connection ([#9606](https://github.com/google/ExoPlayer/pull/9606)).
* Prefers DIGEST authentication method over BASIC if both are present
([#9800](https://github.com/google/ExoPlayer/issues/9800)).
* Handle when RTSP track timing is not available
([#9775](https://github.com/google/ExoPlayer/issues/9775)).
* Ignores invalid RTP-Info header values
([#9619](https://github.com/google/ExoPlayer/issues/9619)).
* Transformer:
* The transformer module is no longer included by depending on * The transformer module is no longer included by depending on
`com.google.android.exoplayer:exoplayer`. To continue using transformer, `com.google.android.exoplayer:exoplayer`. To continue using transformer,
add an additional dependency on add an additional dependency on
`com.google.android.exoplayer:exoplayer-transformer`. `com.google.android.exoplayer:exoplayer-transformer`.
* Cast extension * MediaSession extension:
* By default, `MediaSessionConnector` now clears the playlist on stop.
Apps that want the playlist to be retained can call
`setClearMediaItemsOnStop(false)` on the connector.
* Cast extension:
* Fix bug that prevented `CastPlayer` from calling `onIsPlayingChanged` * Fix bug that prevented `CastPlayer` from calling `onIsPlayingChanged`
correctly ([#9792](https://github.com/google/ExoPlayer/issues/9792)). correctly ([#9792](https://github.com/google/ExoPlayer/issues/9792)).
* Support audio metadata including artwork with * Support audio metadata including artwork with
`DefaultMediaItemConverter` `DefaultMediaItemConverter`
([#9663](https://github.com/google/ExoPlayer/issues/9663)). ([#9663](https://github.com/google/ExoPlayer/issues/9663)).
* FFmpeg extension:
* Make `build_ffmpeg.sh` depend on LLVM's bin utils instead of GNU's
([#9933](https://github.com/google/ExoPlayer/issues/9933)).
* Android 12 compatibility:
* Upgrade the Cast extension to depend on
`com.google.android.gms:play-services-cast-framework:20.1.0`. Earlier
versions of `play-services-cast-framework` are not compatible with apps
targeting Android 12, and will crash with an `IllegalArgumentException`
when creating `PendingIntent`s
([#9528](https://github.com/google/ExoPlayer/issues/9528)).
* Remove deprecated symbols: * Remove deprecated symbols:
* Remove `Player.EventLister`. Use `Player.Listener` instead. * Remove `Player.EventLister`. Use `Player.Listener` instead.
* Remove `MediaSourceFactory#setDrmSessionManager`, * Remove `MediaSourceFactory#setDrmSessionManager`,
......
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
// limitations under the License. // limitations under the License.
project.ext { project.ext {
// ExoPlayer version and version code. // ExoPlayer version and version code.
releaseVersion = '2.16.1' releaseVersion = '2.17.0'
releaseVersionCode = 2016001 releaseVersionCode = 2_017_000
minSdkVersion = 16 minSdkVersion = 16
appTargetSdkVersion = 29 appTargetSdkVersion = 29
// Upgrading this requires [Internal ref: b/193254928] to be fixed, or some // Upgrading this requires [Internal ref: b/193254928] to be fixed, or some
......
...@@ -27,11 +27,11 @@ public final class ExoPlayerLibraryInfo { ...@@ -27,11 +27,11 @@ public final class ExoPlayerLibraryInfo {
/** The version of the library expressed as a string, for example "1.2.3". */ /** The version of the library expressed as a string, for example "1.2.3". */
// Intentionally hardcoded. Do not derive from other constants (e.g. VERSION_INT) or vice versa. // Intentionally hardcoded. Do not derive from other constants (e.g. VERSION_INT) or vice versa.
public static final String VERSION = "2.16.1"; public static final String VERSION = "2.17.0";
/** The version of the library expressed as {@code TAG + "/" + VERSION}. */ /** The version of the library expressed as {@code TAG + "/" + VERSION}. */
// Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa. // Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa.
public static final String VERSION_SLASHY = "ExoPlayerLib/2.16.1"; public static final String VERSION_SLASHY = "ExoPlayerLib/2.17.0";
/** /**
* The version of the library expressed as an integer, for example 1002003. * The version of the library expressed as an integer, for example 1002003.
...@@ -41,7 +41,7 @@ public final class ExoPlayerLibraryInfo { ...@@ -41,7 +41,7 @@ public final class ExoPlayerLibraryInfo {
* integer version 123045006 (123-045-006). * integer version 123045006 (123-045-006).
*/ */
// Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa. // Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa.
public static final int VERSION_INT = 2016001; public static final int VERSION_INT = 2_017_000;
/** Whether the library was compiled with {@link Assertions} checks enabled. */ /** Whether the library was compiled with {@link Assertions} checks enabled. */
public static final boolean ASSERTIONS_ENABLED = true; public static final boolean ASSERTIONS_ENABLED = true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment