From b4e99304c42fa3026aa77e654ac5f8fe61820fae Mon Sep 17 00:00:00 2001 From: christosts Date: Tue, 10 Aug 2021 14:49:07 +0100 Subject: [PATCH] Bump version to 2.15.0 and tidy release notes #minor-release PiperOrigin-RevId: 389871495 --- RELEASENOTES.md | 222 ++++++++---------- constants.gradle | 4 +- .../exoplayer2/ExoPlayerLibraryInfo.java | 6 +- 3 files changed, 109 insertions(+), 123 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 9d60eff4a0..de78e1407c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,22 +1,46 @@ # Release notes ### dev-v2 (not yet released) +* Core Library: + * Move `com.google.android.exoplayer2.device.DeviceInfo` to + `com.google.android.exoplayer2.DeviceInfo`. +* Android 12 compatibility: + * Disable platform transcoding when playing content URIs on Android 12. + * Add `ExoPlayer.setVideoChangeFrameRateStrategy` to allow disabling of + calls from the player to `Surface.setFrameRate`. This is useful for + applications wanting to call `Surface.setFrameRate` directly from + application code with Android 12's `Surface.CHANGE_FRAME_RATE_ALWAYS`. +* GVR extension: + * Remove `GvrAudioProcessor`, which has been deprecated since 2.11.0. +* Remove deprecated symbols: + * Remove `Renderer.VIDEO_SCALING_MODE_*` constants. Use identically named + constants in `C` instead. + * Remove `C.MSG_*` constants. Use identically named constants in + `Renderer` instead, except for `C.MSG_SET_SURFACE`, which is replaced + with `Renderer.MSG_SET_VIDEO_OUTPUT`. + * Remove `DeviceListener`. Use `Player.Listener` instead. + +### 2.15.0 (2021-08-10) * Core Library: - * Add `needsReconfiguration` API to the `MediaCodecAdapter` interface. - * Add `getSeekBackIncrement`, `seekBack`, `getSeekForwardIncrement` and - `seekForward` methods to `Player`. - * Add `getMaxSeekToPreviousPosition`, `seekToPrevious` and `seekToNext` - methods to `Player`. - * Rename `Player` methods `hasPrevious`, `previous`, `hasNext` and `next` - to `hasPreviousWindow`, `seekToPreviousWindow`, `hasNextWindow` and - `seekToNextWindow`, respectively. - * Rename `Player` commands `COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM`, - `COMMAND_SEEK_TO_NEXT_MEDIA_ITEM`, - `COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM`, `COMMAND_SEEK_TO_MEDIA_ITEM` and - `COMMAND_GET_MEDIA_ITEMS` to `COMMAND_SEEK_IN_CURRENT_WINDOW`, - `COMMAND_SEEK_TO_NEXT_WINDOW`, `COMMAND_SEEK_TO_PREVIOUS_WINDOW`, - `COMMAND_SEEK_TO_WINDOW` and `COMMAND_GET_TIMELINE`, respectively. + * Add `MediaCodecAdapter.needsReconfiguration` method. + * Add `getSeekBackIncrement`, `seekBack`, `getSeekForwardIncrement`, + `seekForward`, `getMaxSeekToPreviousPosition`, `seekToPrevious` and + `seekToNext` methods to `Player`. + * Rename `Player` methods: + * `hasPrevious` to `hasPreviousWindow`. + * `previous` to `seekToPreviousWindow`. + * `hasNext` to `hasNextWindow`. + * `next` to `seekToNextWindow`. + * Rename `Player` commands: + * `COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM` to + `COMMAND_SEEK_IN_CURRENT_WINDOW`. + * `COMMAND_SEEK_TO_NEXT_MEDIA_ITEM` to `COMMAND_SEEK_TO_NEXT_WINDOW`. + * `COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM` to + `COMMAND_SEEK_TO_PREVIOUS_WINDOW`. + * `COMMAND_SEEK_TO_MEDIA_ITEM` to `COMMAND_SEEK_TO_WINDOW`. + * `COMMAND_GET_MEDIA_ITEMS` to `COMMAND_GET_TIMELINE`. + * Rename `Player.EventFlags` IntDef to `Player.Event`. * Make `Player` depend on the new `PlaybackException` class instead of `ExoPlaybackException`: * `Player.getPlayerError` now returns a `PlaybackException`. @@ -29,24 +53,14 @@ users can downcast the `PlaybackException` instance to obtain implementation-specific fields (like `ExoPlaybackException.rendererIndex`). - * `PlaybackException` introduces an `errorCode` which identifies the - cause of the failure in order to simplify error handling - ([#1611](https://github.com/google/ExoPlayer/issues/1611)). - * Add `@FallbackType` to `LoadErrorHandlingPolicy` to support - customization of the exclusion duration for locations and tracks. - * Rename `Player.EventFlags` IntDef to `Player.Event`. + * `PlaybackException` introduces an `errorCode` which identifies the cause + of the failure in order to simplify error handling + ([#1611](https://github.com/google/ExoPlayer/issues/1611)). * Add a `DefaultMediaDescriptionAdapter` for the `PlayerNotificationManager`, that makes use of the `Player` `MediaMetadata` to populate the notification fields. - * Deprecate `Player.getCurrentStaticMetadata`, - `Player.Listener.onStaticMetadataChanged` and - `Player.EVENT_STATIC_METADATA_CHANGED`. Use `Player.getMediaMetadata`, - `Player.Listener.onMediaMetadataChanged` and - `Player.EVENT_MEDIA_METADATA_CHANGED` for convenient access to - structured metadata, or access the raw static metadata directly from the - `TrackSelection#getFormat()`. - * Deprecate `ControlDispatcher` and `DefaultControlDispatcher`. Use a - `ForwardingPlayer` or configure the player to customize operations. + * Add `@FallbackType` to `LoadErrorHandlingPolicy` to support + customization of the exclusion duration for locations and tracks. * Change interface of `LoadErrorHandlingPolicy` to support configuring the behavior of track and location fallback. Location fallback is currently only supported for DASH manifests with multiple base URLs. @@ -54,57 +68,18 @@ listing audio offload encodings as supported for passthrough mode on mobile devices ([#9239](https://github.com/google/ExoPlayer/issues/9239)). - * Move `com.google.android.exoplayer2.device.DeviceInfo` to - `com.google.android.exoplayer2.DeviceInfo`. -* Android 12 compatibility: - * Disable platform transcoding when playing content URIs on Android 12. - * Add `ExoPlayer.setVideoChangeFrameRateStrategy` to allow disabling of - calls from the player to `Surface.setFrameRate`. This is useful for - applications wanting to call `Surface.setFrameRate` directly from - application code with Android 12's `Surface.CHANGE_FRAME_RATE_ALWAYS`. -* Remove deprecated symbols: - * Remove `Player.getPlaybackError`. Use `Player.getPlayerError` instead. - * Remove `Player.getCurrentTag`. Use `Player.getCurrentMediaItem` and - `MediaItem.PlaybackProperties.tag` instead. - * Remove `Player.Listener.onTimelineChanged(Timeline, Object, int)`. Use - `Player.Listener.onTimelineChanged(Timeline, int)` instead. The manifest - can be accessed using `Player.getCurrentManifest`. - * Remove `PlaybackPreparer`. UI components that previously had - `setPlaybackPreparer` methods will now call `Player.prepare` by default. - If this behavior is sufficient, use of `PlaybackPreparer` can be removed - from application code without replacement. For custom preparation logic, - use a `ForwardingPlayer` that implements custom preparation logic in - `prepare`. - * Remove `setRewindIncrementMs` and `setFastForwardIncrementMs` from UI - components. These increments can be customized by configuring the - `Player` (see `setSeekBackIncrementMs` and `setSeekForwardIncrementMs` - in `SimpleExoPlayer.Builder`), or by using a `ForwardingPlayer` that - overrides `getSeekBackIncrement`, `seekBack`, `getSeekForwardIncrement` - and `seekForward`. The rewind and fast forward buttons can be disabled - by using a `ForwardingPlayer` that removes `COMMAND_SEEK_BACK` and - `COMMAND_SEEK_FORWARD` from the available commands. - * Remove `PlayerNotificationManager` constructors and `createWith` - methods. Use `PlayerNotificationManager.Builder` instead. - * Remove `PlayerNotificationManager.setNotificationListener`. Use - `PlayerNotificationManager.Builder.setNotificationListener` instead. - * Remove `PlayerNotificationManager` `setUseNavigationActions` and - `setUseNavigationActionsInCompactView`. Use `setUseNextAction`, - `setUsePreviousAction`, `setUseNextActionInCompactView` and - `setUsePreviousActionInCompactView` instead. - * Remove `Format.create` methods. Use `Format.Builder` instead. - * Remove `Timeline.getWindow(int, Window, boolean)`. Use - `Timeline.getWindow(int, Window)` instead, which will always set tags. - * Remove `MediaSource.getTag`. Use `MediaSource.getMediaItem` and - `MediaItem.PlaybackProperties.tag` instead. - * Remove `CastPlayer` specific playlist manipulation methods. Use - `setMediaItems`, `addMediaItems`, `removeMediaItem` and `moveMediaItem` - instead. - * Remove `Renderer.VIDEO_SCALING_MODE_*` constants. Use identically named - constants in `C` instead. - * Remove `C.MSG_*` constants. Use identically named constants in - `Renderer` instead, except for `C.MSG_SET_SURFACE`, which is replaced - with `Renderer.MSG_SET_VIDEO_OUTPUT`. - * Remove `DeviceListener`. Use `Player.Listener` instead. +* Extractors: + * Add support for DTS-UHD in MP4 + ([#9163](https://github.com/google/ExoPlayer/issues/9163)). +* Text: + * TTML: Inherit the `rubyPosition` value from a containing `` element. + * WebVTT: Add support for CSS `font-size` property + ([#8964](https://github.com/google/ExoPlayer/issues/8964)). +* Ad playback: + * Support changing ad break positions in the player logic + ([#5067](https://github.com/google/ExoPlayer/issues/5067)). + * Support resuming content with an offset after an ad group. * UI: * Add `setUseRewindAction` and `setUseFastForwardAction` to `PlayerNotificationManager`, and `setUseFastForwardActionInCompactView` @@ -121,37 +96,15 @@ available commands. * Update `DefaultControlDispatcher` `getRewindIncrementMs` and `getFastForwardIncrementMs` to take the player as parameter. - * Deprecate `setControlDispatcher` in `PlayerView`, `StyledPlayerView`, - `PlayerControlView`, `StyledPlayerControlView` and - `PlayerNotificationManager`. * HLS: * Fix issue that could cause some playbacks to be stuck buffering ([#8850](https://github.com/google/ExoPlayer/issues/8850), [#9153](https://github.com/google/ExoPlayer/issues/9153)). -* Extractors: - * Add support for DTS-UHD in MP4 - ([#9163](https://github.com/google/ExoPlayer/issues/9163)). -* Text: - * TTML: Inherit the `rubyPosition` value from a containing `` element. - * WebVTT: Add support for CSS `font-size` property - ([#8964](https://github.com/google/ExoPlayer/issues/8964)). -* Ad playback: - * Support changing ad break positions in the player logic - ([#5067](https://github.com/google/ExoPlayer/issues/5067). - * Support resuming content with an offset after an ad group. -* OkHttp extension: - * Switch to OkHttp 4.9.1. This increases the extension's minimum SDK - version requirement from 16 to 21. -* Cronet extension: - * Add `CronetDataSource.Factory.setRequestPriority` to allow setting the - priority of requests made by `CronetDataSource` instances. -* Leanback extension: - * Deprecate `setControlDispatcher` in `LeanbackPlayerAdapter`. -* Media2 extension: - * Deprecate `setControlDispatcher` in `SessionPlayerConnector`. -* GVR extension: - * Remove `GvrAudioProcessor`, which has been deprecated since 2.11.0. + * Report audio track type in + `AnalyticsListener.onDownstreamFormatChanged()` for audio-only + playlists, so that the `PlaybackStatsListener` can derive audio + format-related information + ([#9175](https://github.com/google/ExoPlayer/issues/9175)). * RTSP: * Use standard RTSP header names ([#9182](https://github.com/google/ExoPlayer/issues/9182)). @@ -159,19 +112,52 @@ ([#9247](https://github.com/google/ExoPlayer/pull/9247)). * Fix handling of special characters in the RTSP session ID ([#9254](https://github.com/google/ExoPlayer/issues/9254)). -* MediaSession extension: - * Deprecate `setControlDispatcher` in `MediaSessionConnector`. The - `ControlDispatcher` parameter has also been deprecated in all - `MediaSessionConnector` listener methods. -* HLS: - * Report audio track type in - `AnalyticsListener.onDownstreamFormatChanged()` for audio-only - playlists, so that the `PlaybackStatsListener` can derive audio - format-related information. - ([#9175](https://github.com/google/ExoPlayer/issues/9175)). -* SS: +* SmoothStreaming: * Propagate `StreamIndex` element `Name` attribute value as `Format` label ([#9252](https://github.com/google/ExoPlayer/issues/9252)). +* Cronet extension: + * Add `CronetDataSource.Factory.setRequestPriority` to allow setting the + priority of requests made by `CronetDataSource` instances. +* OkHttp extension: + * Switch to OkHttp 4.9.1. This increases the extension's minimum SDK + version requirement from 16 to 21. +* Remove deprecated symbols: + * Remove `CastPlayer` specific playlist manipulation methods. Use + `setMediaItems`, `addMediaItems`, `removeMediaItem` and `moveMediaItem` + instead. + * Remove `Format.create` methods. Use `Format.Builder` instead. + * Remove `MediaSource.getTag`. Use `MediaSource.getMediaItem` and + `MediaItem.PlaybackProperties.tag` instead. + * Remove `PlaybackPreparer`. UI components that previously had + `setPlaybackPreparer` methods will now call `Player.prepare` by default. + If this behavior is sufficient, use of `PlaybackPreparer` can be removed + from application code without replacement. For custom preparation logic, + use a `ForwardingPlayer` that implements custom preparation logic in + `prepare`. + * Remove `Player.Listener.onTimelineChanged(Timeline, Object, int)`. Use + `Player.Listener.onTimelineChanged(Timeline, int)` instead. The manifest + can be accessed using `Player.getCurrentManifest`. + * Remove `Player.getCurrentTag`. Use `Player.getCurrentMediaItem` and + `MediaItem.PlaybackProperties.tag` instead. + * Remove `Player.getPlaybackError`. Use `Player.getPlayerError` instead. + * Remove `PlayerNotificationManager` constructors and `createWith` + methods. Use `PlayerNotificationManager.Builder` instead. + * Remove `PlayerNotificationManager.setNotificationListener`. Use + `PlayerNotificationManager.Builder.setNotificationListener` instead. + * Remove `PlayerNotificationManager` `setUseNavigationActions` and + `setUseNavigationActionsInCompactView`. Use `setUseNextAction`, + `setUsePreviousAction`, `setUseNextActionInCompactView` and + `setUsePreviousActionInCompactView` instead. + * Remove `setRewindIncrementMs` and `setFastForwardIncrementMs` from UI + components. These increments can be customized by configuring the + `Player` (see `setSeekBackIncrementMs` and `setSeekForwardIncrementMs` + in `SimpleExoPlayer.Builder`), or by using a `ForwardingPlayer` that + overrides `getSeekBackIncrement`, `seekBack`, `getSeekForwardIncrement` + and `seekForward`. The rewind and fast forward buttons can be disabled + by using a `ForwardingPlayer` that removes `COMMAND_SEEK_BACK` and + `COMMAND_SEEK_FORWARD` from the available commands. + * Remove `Timeline.getWindow(int, Window, boolean)`. Use + `Timeline.getWindow(int, Window)` instead, which will always set tags. ### 2.14.2 (2021-07-20) diff --git a/constants.gradle b/constants.gradle index 3755fc2779..51e671fd2c 100644 --- a/constants.gradle +++ b/constants.gradle @@ -13,8 +13,8 @@ // limitations under the License. project.ext { // ExoPlayer version and version code. - releaseVersion = '2.14.2' - releaseVersionCode = 2014002 + releaseVersion = '2.15.0' + releaseVersionCode = 2015000 minSdkVersion = 16 appTargetSdkVersion = 29 // Upgrading this requires [Internal ref: b/193254928] to be fixed, or some diff --git a/library/common/src/main/java/com/google/android/exoplayer2/ExoPlayerLibraryInfo.java b/library/common/src/main/java/com/google/android/exoplayer2/ExoPlayerLibraryInfo.java index 30235cdba7..198ec23817 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/ExoPlayerLibraryInfo.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/ExoPlayerLibraryInfo.java @@ -26,11 +26,11 @@ public final class ExoPlayerLibraryInfo { /** 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. - public static final String VERSION = "2.14.2"; + public static final String VERSION = "2.15.0"; /** The version of the library expressed as {@code "ExoPlayerLib/" + VERSION}. */ // Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa. - public static final String VERSION_SLASHY = "ExoPlayerLib/2.14.2"; + public static final String VERSION_SLASHY = "ExoPlayerLib/2.15.0"; /** * The version of the library expressed as an integer, for example 1002003. @@ -40,7 +40,7 @@ public final class ExoPlayerLibraryInfo { * integer version 123045006 (123-045-006). */ // Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa. - public static final int VERSION_INT = 2014002; + public static final int VERSION_INT = 2015000; /** * The default user agent for requests made by the library.