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

#minor-release

PiperOrigin-RevId: 430456963
This commit is contained in:
ibaker 2022-02-23 16:15:36 +00:00 committed by Ian Baker
parent f310a57a30
commit 7781247445
3 changed files with 91 additions and 86 deletions

View File

@ -2,18 +2,26 @@
### dev-v2 (not yet released) ### dev-v2 (not yet released)
* Track selection:
* Flatten `TrackSelectionOverrides` class into `TrackSelectionParameters`,
and promote `TrackSelectionOverride` to a top level class.
* Extractors:
* Opus DiscardPadding in Matroska files.
* RTSP:
* Add RTP reader for HEVC
([#36](https://github.com/androidx/media/pull/36))
* Remove deprecated symbols:
* Remove `Player.Listener.onTracksChanged`. Use
`Player.Listener.onTracksInfoChanged` instead.
* Remove `Player.getCurrentTrackGroups` and
`Player.getCurrentTrackSelections`. Use `Player.getCurrentTracksInfo`
instead. You can also continue to use `ExoPlayer.getCurrentTrackGroups`
and `ExoPlayer.getCurrentTrackSelections`, although these methods remain
deprecated.
### 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 +29,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,26 +53,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
* Track selection after backgrounding the app with an active track override
* Flatten `TrackSelectionOverrides` class into `TrackSelectionParameters`, ([#9718](https://github.com/google/ExoPlayer/issues/9718)).
and promote `TrackSelectionOverride` to a top level class. * Amend logic in `AdaptiveTrackSelection` to allow a quality increase
* Android 12 compatibility: under sufficient network bandwidth even if playback is very close to the
* Upgrade the Cast extension to depend on live edge ([#9784](https://github.com/google/ExoPlayer/issues/9784)).
`com.google.android.gms:play-services-cast-framework:20.1.0`. Earlier * Video:
versions of `play-services-cast-framework` are not compatible with apps * Fix decoder fallback logic for Dolby Vision to use a compatible
targeting Android 12, and will crash with an `IllegalArgumentException` H264/H265 decoder if needed.
when creating `PendingIntent`s
([#9528](https://github.com/google/ExoPlayer/issues/9528)).
* 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
@ -67,17 +78,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.
* Opus DiscardPadding in Matroska 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
@ -90,30 +98,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)`.
@ -121,14 +133,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
@ -139,31 +152,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:
* Add RTP reader for HEVC
([#36](https://github.com/androidx/media/pull/36))
* 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`,
@ -200,13 +212,6 @@
`DefaultRenderersFactory#setAllowedVideoJoiningTimeMs` instead. `DefaultRenderersFactory#setAllowedVideoJoiningTimeMs` instead.
* Remove all public `CronetDataSource` constructors. Use * Remove all public `CronetDataSource` constructors. Use
`CronetDataSource.Factory` instead. `CronetDataSource.Factory` instead.
* Remove `Player.Listener.onTracksChanged`. Use
`Player.Listener.onTracksInfoChanged` instead.
* Remove `Player.getCurrentTrackGroups` and
`Player.getCurrentTrackSelections`. Use `Player.getCurrentTracksInfo`
instead. You can also continue to use `ExoPlayer.getCurrentTrackGroups`
and `ExoPlayer.getCurrentTrackSelections`, although these methods remain
deprecated.
* Change the following `IntDefs` to `@Target(TYPE_USE)` only. This may break * Change the following `IntDefs` to `@Target(TYPE_USE)` only. This may break
the compilation of usages in Kotlin, which can be fixed by moving the the compilation of usages in Kotlin, which can be fixed by moving the
annotation to annotate the type (`Int`). annotation to annotate the type (`Int`).

View File

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

View File

@ -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 {
* 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;