diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 384aac108eb..aa61bbe0e63 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -2,19 +2,24 @@ ### 2.12.0 (2020-09-11) ### +To learn more about what's new in 2.12, read the corresponding +[blog post](https://medium.com/google-exoplayer/exoplayer-2-12-whats-new-e43ef8ff72e7). + * Core library: * `Player`: * Add a top level playlist API based on a new `MediaItem` class - ([#6161](https://github.com/google/ExoPlayer/issues/6161)). The - new methods for playlist manipulation are `setMediaItem(s)`, + ([#6161](https://github.com/google/ExoPlayer/issues/6161)). The new + methods for playlist manipulation are `setMediaItem(s)`, `addMediaItem(s)`, `moveMediaItem(s)`, `removeMediaItem(s)` and `clearMediaItems`. The playlist can be queried using `getMediaItemCount` and `getMediaItemAt`. This API should be used - instead of `ConcatenatingMediaSource` in most cases. - * Add `getCurrentMediaItem` for getting the currently playing item - in the playlist. - * Add `EventListener.onMediaItemTransition` to report when - playback transitions from one item to another in the playlist. + instead of `ConcatenatingMediaSource` in most cases. Learn more by + reading + [this blog post](https://medium.com/google-exoplayer/a-top-level-playlist-api-for-exoplayer-abe0a24edb55). + * Add `getCurrentMediaItem` for getting the currently playing item in + the playlist. + * Add `EventListener.onMediaItemTransition` to report when playback + transitions from one item to another in the playlist. * Add `play` and `pause` convenience methods. They are equivalent to `setPlayWhenReady(true)` and `setPlayWhenReady(false)` respectively. * Add `getCurrentLiveOffset` for getting the offset of the current @@ -23,6 +28,11 @@ player. * Add `AudioComponent.setAudioSessionId` to set the audio session ID. This method is also available on `SimpleExoPlayer`. + * Remove `PlaybackParameters.skipSilence`, and replace it with + `AudioComponent.setSkipSilenceEnabled`. This method is also + available on `SimpleExoPlayer`. An + `AudioListener.onSkipSilenceEnabledChanged` callback is also + added. * Add `TextComponent.getCurrentCues` to get the current cues. This method is also available on `SimpleExoPlayer`. The current cues are no longer automatically forwarded to a `TextOutput` when it's added @@ -39,9 +49,6 @@ * Deprecate `EventListener.onSeekProcessed` because seek changes now happen instantly and listening to `onPositionDiscontinuity` is sufficient. - * Split off `skipSilence' from `PlaybackParameter` and move it - to `AudioComponent.setSkipSilenceEnabled` with callback - `AudioListener.onSkipSilenceEnabledChanged`. * `ExoPlayer`: * Add `setMediaSource(s)` and `addMediaSource(s)` to `ExoPlayer`, for adding `MediaSource` instances directly to the playlist. @@ -79,8 +86,8 @@ ([#7309](https://github.com/google/ExoPlayer/issues/7309)). `LoadErrorHandlingPolicy` implementations should migrate to implementing the non-deprecated methods of the interface. - * Add an option to `MergingMediaSource` to adjust the time offsets - between the merged sources + * Add an option to `MergingMediaSource` to adjust the time offsets between + the merged sources ([#6103](https://github.com/google/ExoPlayer/issues/6103)). * Move `MediaSourceEventListener.LoadEventInfo` and `MediaSourceEventListener.MediaLoadData` to be top-level classes in @@ -90,11 +97,10 @@ generalize them to work with `Decoder` rather than `SimpleDecoder`. * Deprecate `C.MSG_*` constants, replacing them with constants in `Renderer`. - * Split the `library-core` module into `library-core`, - `library-common` and `library-extractor`. The `library-core` module - has an API dependency on both of the new modules, so this change - should be transparent to developers including ExoPlayer using Gradle - dependencies. + * Split the `library-core` module into `library-core`, `library-common` + and `library-extractor`. The `library-core` module has an API dependency + on both of the new modules, so this change should be transparent to + developers including ExoPlayer using Gradle dependencies. * Add a dependency on Guava. * Video: * Pass frame rate hint to `Surface.setFrameRate` on Android 11. @@ -134,6 +140,10 @@ the `AudioCapabilities` ([#7404](https://github.com/google/ExoPlayer/issues/7404)). * Text: + * Many of the changes described below improve support for Japanese + subtitles. Read + [this blog post](https://medium.com/google-exoplayer/improved-japanese-subtitle-support-7598fee12cf4) + to learn more. * Add a WebView-based output option to `SubtitleView`. This can display some features not supported by the existing Canvas-based output such as vertical text and rubies. It can be enabled by calling @@ -296,8 +306,8 @@ * Analytics: * Extend `EventTime` with more details about the current player state ([#7332](https://github.com/google/ExoPlayer/issues/7332)). - * Add `AnalyticsListener.onVideoFrameProcessingOffset` to report how - early or late video frames are processed relative to them needing to be + * Add `AnalyticsListener.onVideoFrameProcessingOffset` to report how early + or late video frames are processed relative to them needing to be presented. Video frame processing offset fields are also added to `DecoderCounters`. * Fix incorrect `MediaPeriodId` for some renderer errors reported by @@ -307,7 +317,9 @@ * Test utils: Add `TestExoPlayer`, a utility class with APIs to create `SimpleExoPlayer` instances with fake components for testing. * Media2 extension: This is a new extension that makes it easy to use - ExoPlayer together with AndroidX Media2. + ExoPlayer together with AndroidX Media2. Read + [this blog post](https://medium.com/google-exoplayer/the-media2-extension-for-exoplayer-d6b7d89b9063) + to learn more. * Cast extension: Implement playlist API and deprecate the old queue manipulation API. * IMA extension: @@ -337,11 +349,11 @@ * Add `clip_start_position_ms` and `clip_end_position_ms` to allow clipped samples. * Use `StyledPlayerControlView` rather than `PlayerView`. - * Remove support for media tunneling, random ABR and playback of - spherical video. Developers wishing to experiment with these features - can enable them by modifying the demo app source code. - * Add support for downloading DRM-protected content using offline - Widevine licenses. + * Remove support for media tunneling, random ABR and playback of spherical + video. Developers wishing to experiment with these features can enable + them by modifying the demo app source code. + * Add support for downloading DRM-protected content using offline Widevine + licenses. ### 2.11.8 (2020-08-25) ###