Bump version to 2.14.0 and tidy release notes

#minor-release

PiperOrigin-RevId: 372910834
This commit is contained in:
olly 2021-05-10 14:00:21 +01:00 committed by Oliver Woodman
parent 7a3d8b5ef0
commit e908750336
3 changed files with 143 additions and 141 deletions

View File

@ -2,118 +2,7 @@
### dev-v2 (not yet released)
* Core Library:
* Move `Player` components to `ExoPlayer`. For example
`Player.VideoComponent` is now `ExoPlayer.VideoComponent`.
* The most used methods of `Player`'s audio/video/text/metadata components
have been added to `Player`. Support can be queried using
`Player.isCommandAvailable` instead of testing for component nullness.
* Add position info of the old and the new position as arguments to
`EventListener.onPositionDiscontinuity`. Add the new reasons
`DISCONTINUITY_REASON_SKIP` and `DISCONTINUITY_REASON_REMOVE` and rename
`DISCONTINUITY_REASON_PERIOD_TRANSITION` to
`DISCONTINUITY_REASON_AUTO_TRANSITION`. Remove
`DISCONTINUITY_REASON_AD_INSERTION` for which
`DISCONTINUITY_REASON_AUTO_TRANSITION` is used instead. Deprecate the
`onPositionDiscontinuity(int)` callback
([#6163](https://github.com/google/ExoPlayer/issues/6163),
[#4768](https://github.com/google/ExoPlayer/issues/4768)).
* Add methods `Player.getAvailableCommands`, `PLayer.isCommandAvailable`
and `EventListener.onAvailableCommandsChanged` to query the commands
that can be executed on the player.
* `AdsLoader.AdViewProvider` and `AdsLoader.OverlayInfo` have been renamed
`com.google.android.exoplayer2.ui.AdViewProvider` and
`com.google.android.exoplayer2.ui.AdOverlayInfo` respectively.
* `CaptionStyleCompat` has been moved to the
`com.google.android.exoplayer2.ui` package.
* Move `getRendererCount` and `getRendererType` methods from `Player` to
`ExoPlayer`.
* Add `getMediaMetadata` to `Player` interface.
* Add a `Listener` interface to receive all player events in a single
object. Component Listeners and `EventListener` have been deprecated in
its favor.
* `Player.setPlaybackParameters` no longer accepts null, use
`PlaybackParameters.DEFAULT` instead.
* Use an empty string instead of the URI if the media ID is not explicitly
set with `MediaItem.Builder.setMediaId(String)`.
* Remove `MediaCodecRenderer.configureCodec()` and add
`MediaCodecRenderer.getMediaCodecConfiguration()`. The new method is
called just before the `MediaCodec` is created and returns the
parameters needed to create and configure the `MediaCodec` instance.
Applications can override `MediaCodecRenderer.onCodecInitialized()` to
get notified after MediaCodec is initialized, or they can inject a
custom `MediaCodecAdapter.Factory` if they want to control how the
`MediaCodec` is configured.
* Promote `AdaptiveTrackSelection.AdaptationCheckpoint` to `public`
visibility in order to allow Kotlin subclasses of
`AdaptiveTrackSelection.Factory`
([#8830](https://github.com/google/ExoPlayer/issues/8830)).
* Added a combined and structured metadata object (`MediaMetadata`) to
Player, accessible through `getMediaMetadata` or by listening to
`EventListener.onMediaMetadataChanged`.
* Fix bug when transitions from content to ad periods called
`onMediaItemTransition` by mistake.
* Deprecate `ExoPlayer.Builder`. Use `SimpleExoPlayer.Builder` instead.
* UI:
* Add builder for `PlayerNotificationManager`.
* Add group setting to `PlayerNotificationManager`.
* Remove `setUseSensorRotation` from `PlayerView` and `StyledPlayerView`.
Instead, cast the view returned by `getVideoSurfaceView` to
`SphericalGLSurfaceView`, and then call `setUseSensorRotation` on the
`SphericalGLSurfaceView` directly.
* Audio:
* Report unexpected discontinuities in
`AnalyticsListener.onAudioSinkError`
([#6384](https://github.com/google/ExoPlayer/issues/6384)).
* Allow forcing offload for gapless content even if gapless playback is
not supported.
* Allow fall back from DTS-HD to DTS when playing via passthrough.
* Video:
* Add `Player.getVideoSize()` to retrieve the current size of the video
stream. Add `Listener.onVideoSizeChanged(VideoSize)` and deprecate
`Listener.onVideoSizeChanged(int weight, int height...)`.
* Analytics:
* Add `onAudioCodecError` and `onVideoCodecError` to `AnalyticsListener`.
* Downloads and caching:
* Fix `CacheWriter` to correctly handle cases where the request `DataSpec`
extends beyond the end of the underlying resource. Caching will now
succeed in this case, with data up to the end of the resource being
cached. This behaviour is enabled by default, and so the
`allowShortContent` parameter has been removed
([#7326](https://github.com/google/ExoPlayer/issues/7326)).
* Fix `CacheWriter` to correctly handle `DataSource.close` failures, for
which it cannot be assumed that data was successfully written to the
cache.
* Library restructuring:
* `DebugTextViewHelper` moved from `ui` package to `util` package.
* Remove deprecated symbols:
* Remove `ExoPlayerFactory`. Use `SimpleExoPlayer.Builder` instead.
* Remove `Player.DefaultEventListener`. Use `Player.EventListener`
instead.
* Remove `DownloadNotificationUtil`. Use `DownloadNotificationHelper`
instead.
* Remove `extension-jobdispatcher` module. Use the `extension-workmanager`
module instead.
* Remove `DefaultMediaSourceEventListener`. Use `MediaSourceEventListener`
instead.
* Remove `ExtractorMediaSource`. Use `ProgressiveMediaSource` instead.
* Remove `NotificationUtil.createNotificationChannel(Context, String, int,
int)`. Use `createNotificationChannel(Context, String, int, int, int)`
instead.
* Remove `PlayerNotificationManager.NotificationListener`
`onNotificationStarted(int, Notification)` and
`onNotificationCancelled(int)`. Use `onNotificationPosted(int,
Notification, boolean)` and `onNotificationCancelled(int, boolean)`
instead.
* Remove `PlayerNotificationManager.setNotificationListener`. Use
`PlayerNotificationManager.Builder.setNotificationListener` instead.
* Remove `DashManifest` constructor. Use the remaining constructor with
`programInformation` and `serviceDescription` set to `null` instead.
* Remove `CryptoInfo.getFrameworkCryptoInfoV16`. Use
`CryptoInfo.getFrameworkCryptoInfo` instead.
* Remove `CastPlayer` specific playlist manipulation methods. Use
`setMediaItems`, `addMediaItems`, `removeMediaItem` and `moveMediaItem`
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
@ -129,48 +18,161 @@
long)`.
* 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 `CastPlayer` specific playlist manipulation methods. Use
`setMediaItems`, `addMediaItems`, `removeMediaItem` and `moveMediaItem`
instead.
### 2.14.0 (2021-05-13)
* Core Library:
* Move `Player` components to `ExoPlayer`. For example
`Player.VideoComponent` is now `ExoPlayer.VideoComponent`.
* The most used methods of `Player`'s audio, video, text and metadata
components have been added directly to `Player`.
* Add `Player.getAvailableCommands`, `Player.isCommandAvailable` and
`Listener.onAvailableCommandsChanged` to query which commands
that can be executed on the player.
* Add a `Player.Listener` interface to receive all player events.
Component listeners and `EventListener` have been deprecated.
* Add `Player.getMediaMetadata`, which returns a combined and structured
`MediaMetadata` object. Changes to metadata are reported to
`Listener.onMediaMetadataChanged`.
* `Player.setPlaybackParameters` no longer accepts null, use
`PlaybackParameters.DEFAULT` instead.
* Report information about the old and the new playback positions to
`Listener.onPositionDiscontinuity`. Add `DISCONTINUITY_REASON_SKIP`
and `DISCONTINUITY_REASON_REMOVE` as discontinuity reasons, and rename
`DISCONTINUITY_REASON_PERIOD_TRANSITION` to
`DISCONTINUITY_REASON_AUTO_TRANSITION`. Remove
`DISCONTINUITY_REASON_AD_INSERTION`, for which
`DISCONTINUITY_REASON_AUTO_TRANSITION` is used instead
([#6163](https://github.com/google/ExoPlayer/issues/6163),
[#4768](https://github.com/google/ExoPlayer/issues/4768)).
* Deprecate `ExoPlayer.Builder`. Use `SimpleExoPlayer.Builder` instead.
* Move `Player.getRendererCount` and `Player.getRendererType` to
`ExoPlayer`.
* Use an empty string instead of the URI if the media ID is not explicitly
set with `MediaItem.Builder.setMediaId(String)`.
* Remove `MediaCodecRenderer.configureCodec()` and add
`MediaCodecRenderer.getMediaCodecConfiguration()`. The new method is
called just before the `MediaCodec` is created and returns the
parameters needed to create and configure the `MediaCodec` instance.
Applications can override `MediaCodecRenderer.onCodecInitialized()` to
be notified after a `MediaCodec` is initialized, or they can inject a
custom `MediaCodecAdapter.Factory` if they want to control how the
`MediaCodec` is configured.
* Promote `AdaptiveTrackSelection.AdaptationCheckpoint` to `public`
visibility to allow Kotlin subclasses of
`AdaptiveTrackSelection.Factory`
([#8830](https://github.com/google/ExoPlayer/issues/8830)).
* Fix bug when transitions from content to ad periods called
`onMediaItemTransition` by mistake.
* `AdsLoader.AdViewProvider` and `AdsLoader.OverlayInfo` have been renamed
`com.google.android.exoplayer2.ui.AdViewProvider` and
`com.google.android.exoplayer2.ui.AdOverlayInfo` respectively.
* `CaptionStyleCompat` has been moved to the
`com.google.android.exoplayer2.ui` package.
* `DebugTextViewHelper` has been moved from the `ui` package to the `util`
package.
* RTSP:
* Initial support for RTSP playbacks
([#55](https://github.com/google/ExoPlayer/issues/55)).
* Downloads and caching:
* Fix `CacheWriter` to correctly handle cases where the request `DataSpec`
extends beyond the end of the underlying resource. Caching will now
succeed in this case, with data up to the end of the resource being
cached. This behaviour is enabled by default, and so the
`allowShortContent` parameter has been removed
([#7326](https://github.com/google/ExoPlayer/issues/7326)).
* Fix `CacheWriter` to correctly handle `DataSource.close` failures, for
which it cannot be assumed that data was successfully written to the
cache.
* DRM:
* Only dispatch DRM session acquire and release events once per period
when playing content that uses the same encryption keys for both audio &
video tracks (previously separate acquire and release events were
dispatched for each track in each period).
* Include the session state in DRM session-acquired listener methods.
* Prepare DRM sessions (and fetch keys) ahead of the playback position
([#4133](https://github.com/google/ExoPlayer/issues/4133)).
* Only dispatch DRM session acquire and release events once per period
when playing content that uses the same encryption keys for both audio &
video tracks. Previously, separate acquire and release events were
dispatched for each track in each period.
* Include the session state in DRM session-acquired listener methods.
* UI:
* Add `PlayerNotificationManager.Builder`, with the ability to
specify which group the notification should belong to.
* Remove `setUseSensorRotation` from `PlayerView` and `StyledPlayerView`.
Instead, cast the view returned by `getVideoSurfaceView` to
`SphericalGLSurfaceView`, and then call `setUseSensorRotation` on the
`SphericalGLSurfaceView` directly.
* Analytics:
* Add `onAudioCodecError` and `onVideoCodecError` to `AnalyticsListener`.
* Video:
* Add `Player.getVideoSize()` to retrieve the current size of the video
stream. Add `Listener.onVideoSizeChanged(VideoSize)` and deprecate
`Listener.onVideoSizeChanged(int, int, int, float)`.
* Audio:
* Report unexpected audio discontinuities to
`AnalyticsListener.onAudioSinkError`
([#6384](https://github.com/google/ExoPlayer/issues/6384)).
* Allow forcing offload for gapless content even if gapless playback is
not supported.
* Allow fall back from DTS-HD to DTS when playing via passthrough.
* Text:
* Fix lines overlapping when using `SubtitleView.VIEW_TYPE_WEB`.
* Fix overlapping lines when using `SubtitleView.VIEW_TYPE_WEB`.
* Parse SSA/ASS underline & strikethrough info in `Style:` lines
([#8435](https://github.com/google/ExoPlayer/issues/8435)).
* Ensure TTML `tts:textAlign` is correctly propagated from `<p>` nodes to
child nodes.
* Support TTML `ebutts:multiRowAlign` attributes.
* MediaSession extension: Remove dependency to core module and rely on common
only. The `TimelineQueueEditor` uses a new `MediaDescriptionConverter` for
this purpose and does not rely on the `ConcatenatingMediaSource` anymore.
* Allow the use of Android platform extractors through
[MediaParser](https://developer.android.com/reference/android/media/MediaParser).
Only supported on API 30+.
* You can use platform extractors for progressive media by passing
`MediaParserExtractorAdapter.FACTORY` when creating a
`ProgressiveMediaSource.Factory`.
* You can use platform extractors for HLS by passing
`MediaParserHlsMediaChunkExtractor.FACTORY` when creating a
`HlsMediaSource.Factory`.
* You can use platform extractors for DASH by passing a
`DefaultDashChunkSource` that uses `MediaParserChunkExtractor.FACTORY`
when creating a `DashMediaSource.Factory`.
* Cast extension:
* Trigger `onMediaItemTransition` event for all reasons except
`MEDIA_ITEM_TRANSITION_REASON_REPEAT`.
* Allow the use of platform extractors through
[MediaParser](https://developer.android.com/reference/android/media/MediaParser).
Only supported on API 30+.
* You can use it for progressive media by passing a
`MediaParserExtractorAdapter.FACTORY` when creating the
`ProgressiveMediaSource.Factory`.
* You can use it for HLS by passing a
`MediaParserHlsMediaChunkExtractor.FACTORY` when creating the
`HlsMediaSource.Factory`.
* You can use it for DASH by passing a `DefaultDashChunkSource` which
depends on `MediaParserChunkExtractor.FACTORY` when creating the
`DashMediaSource.Factory`.
* We don't currently support using platform extractors with
SmoothStreaming.
* RTSP
* Release the initial version of ExoPlayer's RTSP support.
* MediaSession extension:
* Remove dependency on `exoplayer-core`, relying only `exoplayer-common`
instead. To achieve this, `TimelineQueueEditor` uses a new
`MediaDescriptionConverter` interface, and no longer relies on
`ConcatenatingMediaSource`.
* Remove deprecated symbols:
* Remove `ExoPlayerFactory`. Use `SimpleExoPlayer.Builder` instead.
* Remove `Player.DefaultEventListener`. Use `Player.Listener` instead.
* Remove `ExtractorMediaSource`. Use `ProgressiveMediaSource` instead.
* Remove `DefaultMediaSourceEventListener`. Use `MediaSourceEventListener`
instead.
* Remove `DashManifest` constructor. Use the remaining constructor with
`programInformation` and `serviceDescription` set to `null` instead.
* Remove `CryptoInfo.getFrameworkCryptoInfoV16`. Use
`CryptoInfo.getFrameworkCryptoInfo` instead.
* Remove `NotificationUtil.createNotificationChannel(Context, String, int,
int)`. Use `createNotificationChannel(Context, String, int, int, int)`
instead.
* Remove `PlayerNotificationManager.setNotificationListener`. Use
`PlayerNotificationManager.Builder.setNotificationListener` instead.
* Remove `PlayerNotificationManager.NotificationListener`
`onNotificationStarted(int, Notification)` and
`onNotificationCancelled(int)`. Use `onNotificationPosted(int,
Notification, boolean)` and `onNotificationCancelled(int, boolean)`
instead.
* Remove `DownloadNotificationUtil`. Use `DownloadNotificationHelper`
instead.
* Remove `extension-jobdispatcher` module. Use the `extension-workmanager`
module instead.
### 2.13.3 (2021-04-14)

View File

@ -13,8 +13,8 @@
// limitations under the License.
project.ext {
// ExoPlayer version and version code.
releaseVersion = '2.13.3'
releaseVersionCode = 2013003
releaseVersion = '2.14.0'
releaseVersionCode = 2014000
minSdkVersion = 16
appTargetSdkVersion = 29
targetSdkVersion = 28 // TODO: Bump once b/143232359 is resolved. Also fix TODOs in UtilTest.

View File

@ -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.13.3";
public static final String VERSION = "2.14.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.13.3";
public static final String VERSION_SLASHY = "ExoPlayerLib/2.14.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 = 2013003;
public static final int VERSION_INT = 2014000;
/**
* The default user agent for requests made by the library.