mirror of
https://github.com/androidx/media.git
synced 2025-05-15 19:49:50 +08:00
First pass at finalizing 2.11.0 release notes
PiperOrigin-RevId: 280056790
This commit is contained in:
parent
69e51505e4
commit
20ab05103b
217
RELEASENOTES.md
217
RELEASENOTES.md
@ -2,118 +2,139 @@
|
|||||||
|
|
||||||
### dev-v2 (not yet released) ###
|
### dev-v2 (not yet released) ###
|
||||||
|
|
||||||
|
* Require an end time or duration for SubRip (SRT) and SubStation Alpha
|
||||||
|
(SSA/ASS) subtitles. This applies to both sidecar files & subtitles
|
||||||
|
[embedded in Matroska streams](https://matroska.org/technical/specs/subtitles/index.html).
|
||||||
|
|
||||||
### 2.11.0 (not yet released) ###
|
### 2.11.0 (not yet released) ###
|
||||||
|
|
||||||
* AV1 extension: Uses libgav1 to decode AV1 videos. Android 10 includes an AV1
|
* Core library:
|
||||||
decoder, but the older versions of Android require this extension for playback
|
* Replace `ExoPlayerFactory` by `SimpleExoPlayer.Builder` and
|
||||||
of AV1 streams ([#3353](https://github.com/google/ExoPlayer/issues/3353)). You
|
`ExoPlayer.Builder`.
|
||||||
can read more about playing AV1 videos with ExoPlayer
|
* Add automatic `WakeLock` handling to `SimpleExoPlayer`, which can be enabled
|
||||||
[here](https://medium.com/google-exoplayer/playing-av1-videos-with-exoplayer-a7cb19bedef9).
|
by calling `SimpleExoPlayer.setHandleWakeLock`
|
||||||
|
([#5846](https://github.com/google/ExoPlayer/issues/5846)). To use this
|
||||||
|
feature, you must add the
|
||||||
|
[WAKE_LOCK](https://developer.android.com/reference/android/Manifest.permission.html#WAKE_LOCK)
|
||||||
|
permission to your application's manifest file.
|
||||||
|
* Add automatic "audio becoming noisy" handling to `SimpleExoPlayer`, which
|
||||||
|
can be enabled by calling `SimpleExoPlayer.setHandleAudioBecomingNoisy`.
|
||||||
|
* Wrap decoder exceptions in a new `DecoderException` class and report them as
|
||||||
|
renderer errors.
|
||||||
|
* Add `Timeline.Window.isLive` to indicate that a window is a live stream
|
||||||
|
([#2668](https://github.com/google/ExoPlayer/issues/2668) and
|
||||||
|
[#5973](https://github.com/google/ExoPlayer/issues/5973)).
|
||||||
|
* Add `Timeline.Window.uid` to uniquely identify window instances.
|
||||||
|
* Deprecate `setTag` parameter of `Timeline.getWindow`. Tags will always be
|
||||||
|
set.
|
||||||
|
* Deprecate passing the manifest directly to
|
||||||
|
`Player.EventListener.onTimelineChanged`. It can be accessed through
|
||||||
|
`Timeline.Window.manifest` or `Player.getCurrentManifest()`
|
||||||
|
* Add `MediaSource.enable` and `MediaSource.disable` to improve resource
|
||||||
|
management in playlists.
|
||||||
|
* Add `MediaPeriod.isLoading` to improve `Player.isLoading` state.
|
||||||
|
* Fix issue where player errors are thrown too early at playlist transitions
|
||||||
|
([#5407](https://github.com/google/ExoPlayer/issues/5407)).
|
||||||
* DRM:
|
* DRM:
|
||||||
* Inject `DrmSessionManager` into the `MediaSources` instead of `Renderers`
|
* Inject `DrmSessionManager` into the `MediaSources` instead of `Renderers`
|
||||||
([#5619](https://github.com/google/ExoPlayer/issues/5619)).
|
([#5619](https://github.com/google/ExoPlayer/issues/5619)).
|
||||||
* Add a `DefaultDrmSessionManager.Builder`.
|
* Add a `DefaultDrmSessionManager.Builder`.
|
||||||
* Add support for the use of secure decoders in clear sections of content
|
* Add support for the use of secure decoders in clear sections of content
|
||||||
([#4867](https://github.com/google/ExoPlayer/issues/4867)).
|
([#4867](https://github.com/google/ExoPlayer/issues/4867)).
|
||||||
* Add basic DRM support to the Cast demo app.
|
|
||||||
* Add support for custom `LoadErrorHandlingPolicies` in key and provisioning
|
* Add support for custom `LoadErrorHandlingPolicies` in key and provisioning
|
||||||
requests ([#6334](https://github.com/google/ExoPlayer/issues/6334)).
|
requests ([#6334](https://github.com/google/ExoPlayer/issues/6334)).
|
||||||
* Remove `DefaultDrmSessionManager` factory methods that leak `ExoMediaDrm`
|
* Remove `DefaultDrmSessionManager` factory methods that leak `ExoMediaDrm`
|
||||||
instances ([#4721](https://github.com/google/ExoPlayer/issues/4721)).
|
instances ([#4721](https://github.com/google/ExoPlayer/issues/4721)).
|
||||||
* Remove the `DataSpec.FLAG_ALLOW_ICY_METADATA` flag. Instead, set the header
|
* Track selection:
|
||||||
`IcyHeaders.REQUEST_HEADER_ENABLE_METADATA_NAME` in the `DataSpec`
|
* Update `DefaultTrackSelector` to set a viewport constraint for the default
|
||||||
`httpRequestHeaders`.
|
display by default.
|
||||||
|
* Update `DefaultTrackSelector` to set text language and role flag
|
||||||
|
constraints for the device's accessibility settings by default
|
||||||
|
([#5749](https://github.com/google/ExoPlayer/issues/5749)).
|
||||||
|
* Add option to set preferred text role flags using
|
||||||
|
`DefaultTrackSelector.ParametersBuilder.setPreferredTextRoleFlags`.
|
||||||
|
* Android 10:
|
||||||
|
* Set `compileSdkVersion` to 29 to enable use of Android 10 APIs.
|
||||||
|
* Expose new `isHardwareAccelerated`, `isSoftwareOnly` and `isVendor` flags
|
||||||
|
in `MediaCodecInfo`
|
||||||
|
([#5839](https://github.com/google/ExoPlayer/issues/5839)).
|
||||||
|
* Add `allowedCapturePolicy` field to `AudioAttributes` to allow to
|
||||||
|
configuration of the audio capture policy.
|
||||||
|
* Video:
|
||||||
|
* Pass the codec output `MediaFormat` to `VideoFrameMetadataListener`.
|
||||||
|
* Support out-of-band HDR10+ metadata for VP9 in WebM/Matroska.
|
||||||
|
* Assume that protected content requires a secure decoder when evaluating
|
||||||
|
whether `MediaCodecVideoRenderer` supports a given video format
|
||||||
|
([#5568](https://github.com/google/ExoPlayer/issues/5568)).
|
||||||
|
* Fix Dolby Vision fallback to AVC and HEVC.
|
||||||
|
* Audio:
|
||||||
|
* Fix E-AC3 JOC passthrough playback failing to initialize due to incorrect
|
||||||
|
channel count check.
|
||||||
|
* Handle new signaling for E-AC3 JOC audio in DASH
|
||||||
|
([#6636](https://github.com/google/ExoPlayer/issues/6636)).
|
||||||
|
* Fix the start of audio getting truncated when transitioning to a new
|
||||||
|
item in a playlist of Opus streams.
|
||||||
|
* Workaround broken raw audio decoding on Oppo R9
|
||||||
|
([#5782](https://github.com/google/ExoPlayer/issues/5782)).
|
||||||
|
* UI:
|
||||||
|
* Make showing and hiding player controls accessible to TalkBack in
|
||||||
|
`PlayerView`.
|
||||||
|
* Rename `spherical_view` surface type to `spherical_gl_surface_view`.
|
||||||
|
* Analytics:
|
||||||
|
* Remove `AnalyticsCollector.Factory`. Instances should be created directly,
|
||||||
|
and the `Player` should be set by calling `AnalyticsCollector.setPlayer`.
|
||||||
|
* Add `PlaybackStatsListener` to collect `PlaybackStats` for analysis and
|
||||||
|
analytics reporting (TODO: link to developer guide page/blog post).
|
||||||
|
* DataSource
|
||||||
|
* Add `DataSpec.httpRequestHeaders` to support setting per-request headers for
|
||||||
|
HTTP and HTTPS.
|
||||||
|
* Remove the `DataSpec.FLAG_ALLOW_ICY_METADATA` flag. Use is replaced by
|
||||||
|
setting the `IcyHeaders.REQUEST_HEADER_ENABLE_METADATA_NAME` header in
|
||||||
|
`DataSpec.httpRequestHeaders`.
|
||||||
|
* Fail more explicitly when local file URIs contain invalid parts (e.g. a
|
||||||
|
fragment) ([#6470](https://github.com/google/ExoPlayer/issues/6470)).
|
||||||
* DASH: Support negative @r values in segment timelines
|
* DASH: Support negative @r values in segment timelines
|
||||||
([#1787](https://github.com/google/ExoPlayer/issues/1787)).
|
([#1787](https://github.com/google/ExoPlayer/issues/1787)).
|
||||||
* Add `allowedCapturePolicy` field to `AudioAttributes` wrapper to allow to
|
* HLS: Fix issue where streams could get stuck in an infinite buffering state
|
||||||
opt-out of audio recording.
|
after a postroll ad
|
||||||
* Add `DataSpec.httpRequestHeaders` to set HTTP request headers when connecting
|
([#6314](https://github.com/google/ExoPlayer/issues/6314)).
|
||||||
to an HTTP source. `DefaultHttpDataSource`, `CronetDataSource` and
|
* AV1 extension:
|
||||||
`OkHttpDataSource` include headers set in the DataSpec when connecting to the
|
* New in this release. The AV1 extension allows use of the
|
||||||
source.
|
[libgav1 software decoder](https://chromium.googlesource.com/codecs/libgav1/)
|
||||||
* Surface information provided by methods `isHardwareAccelerated`,
|
in ExoPlayer. You can read more about playing AV1 videos with ExoPlayer
|
||||||
`isSoftwareOnly` and `isVendor` added in Android 10 in `MediaCodecInfo` class
|
[here](https://medium.com/google-exoplayer/playing-av1-videos-with-exoplayer-a7cb19bedef9).
|
||||||
([#5839](https://github.com/google/ExoPlayer/issues/5839)).
|
|
||||||
* Update `DefaultTrackSelector` to apply a viewport constraint for the default
|
|
||||||
display by default.
|
|
||||||
* Add `PlaybackStatsListener` to collect `PlaybackStats` for playbacks analysis
|
|
||||||
and analytics reporting (TODO: link to developer guide page/blog post).
|
|
||||||
* Assume that encrypted content requires secure decoders in renderer support
|
|
||||||
checks ([#5568](https://github.com/google/ExoPlayer/issues/5568)).
|
|
||||||
* Decoders: Prefer decoders that advertise format support over ones that do not,
|
|
||||||
even if they are listed lower in the `MediaCodecList`.
|
|
||||||
* Add a workaround for broken raw audio decoding on Oppo R9
|
|
||||||
([#5782](https://github.com/google/ExoPlayer/issues/5782)).
|
|
||||||
* Wrap decoder exceptions in a new `DecoderException` class and report as
|
|
||||||
renderer error.
|
|
||||||
* Do not pass the manifest to callbacks of `Player.EventListener` and
|
|
||||||
`SourceInfoRefreshListener` anymore. Instead make it accessible through
|
|
||||||
`Player.getCurrentManifest()` and `Timeline.Window.manifest`. Also rename
|
|
||||||
`SourceInfoRefreshListener` to `MediaSourceCaller`.
|
|
||||||
* Set `compileSdkVersion` to 29 to use Android 10 APIs.
|
|
||||||
* Add `enable` and `disable` methods to `MediaSource` to improve resource
|
|
||||||
management in playlists.
|
|
||||||
* Text selection logic:
|
|
||||||
* Allow to set preferred role flags using
|
|
||||||
`DefaultTrackSelector.ParametersBuilder.setPreferredTextRoleFlags`.
|
|
||||||
* Default text language and role flags to accessibility captioning settings
|
|
||||||
([#5749](https://github.com/google/ExoPlayer/issues/5749)).
|
|
||||||
* Remove `AnalyticsCollector.Factory`. Instances can be created directly and
|
|
||||||
the `Player` set later using `AnalyticsCollector.setPlayer`.
|
|
||||||
* Replace `ExoPlayerFactory` by `SimpleExoPlayer.Builder` and
|
|
||||||
`ExoPlayer.Builder`.
|
|
||||||
* Fix issue where player errors are thrown too early at playlist transitions
|
|
||||||
([#5407](https://github.com/google/ExoPlayer/issues/5407)).
|
|
||||||
* Deprecate `setTag` parameter of `Timeline.getWindow`. Tags will always be set.
|
|
||||||
* Support out-of-band HDR10+ metadata for VP9 in WebM/Matroska.
|
|
||||||
* Fix issue where HLS streams get stuck in infinite buffering state after
|
|
||||||
postroll ad ([#6314](https://github.com/google/ExoPlayer/issues/6314)).
|
|
||||||
* Publish `testutils` module to simplify unit testing with ExoPlayer
|
|
||||||
([#6267](https://github.com/google/ExoPlayer/issues/6267)).
|
|
||||||
* Add `uid` to `Timeline.Window` to uniquely identify window instances.
|
|
||||||
* Fix Dolby Vision fallback to AVC and HEVC.
|
|
||||||
* Add demo app to show how to use the Android 10 `SurfaceControl` API with
|
|
||||||
ExoPlayer ([#677](https://github.com/google/ExoPlayer/issues/677)).
|
|
||||||
* Add automatic `WakeLock` handling to `SimpleExoPlayer` through calling
|
|
||||||
`setEnableWakeLock`, which requires the
|
|
||||||
`android.Manifest.permission#WAKE_LOCK` permission
|
|
||||||
([#5846](https://github.com/google/ExoPlayer/issues/5846)).
|
|
||||||
* VP9 extension:
|
* VP9 extension:
|
||||||
* Rename `VpxVideoSurfaceView` to `VideoDecoderSurfaceView`
|
* Update to use NDK r20.
|
||||||
and move it to the core library.
|
* Rename `VpxVideoSurfaceView` to `VideoDecoderSurfaceView` and move it to the
|
||||||
|
core library.
|
||||||
* Move `LibvpxVideoRenderer.MSG_SET_OUTPUT_BUFFER_RENDERER` to
|
* Move `LibvpxVideoRenderer.MSG_SET_OUTPUT_BUFFER_RENDERER` to
|
||||||
`C.MSG_SET_OUTPUT_BUFFER_RENDERER`.
|
`C.MSG_SET_OUTPUT_BUFFER_RENDERER`.
|
||||||
* Use `VideoDecoderRenderer` as an implementation of
|
* Use `VideoDecoderRenderer` as an implementation of
|
||||||
`VideoDecoderOutputBufferRenderer`, instead of `VideoDecoderSurfaceView`.
|
`VideoDecoderOutputBufferRenderer`, instead of `VideoDecoderSurfaceView`.
|
||||||
* Rename `spherical_view` surface type to `spherical_gl_surface_view`.
|
* Flac extension:
|
||||||
* Add automatic audio becoming noisy handling to `SimpleExoPlayer`,
|
* Update to use NDK r20.
|
||||||
available through `SimpleExoPlayer.setHandleAudioBecomingNoisy`.
|
* Fix build
|
||||||
* Post `AudioFocusManager.onAudioFocusChange` events to eventHandler, avoiding
|
([#6601](https://github.com/google/ExoPlayer/issues/6601).
|
||||||
multithreaded access to the player or audio focus manager.
|
* FFmpeg extension:
|
||||||
* Add `Timeline.Window.isLive` to indicate that a window is a live stream
|
* Update to use NDK r20.
|
||||||
([#2668](https://github.com/google/ExoPlayer/issues/2668) and
|
* Update to use FFmpeg version 4.2. It is necessary to rebuild the native part
|
||||||
[#5973](https://github.com/google/ExoPlayer/issues/5973)).
|
of the extension after this change, following the instructions in the
|
||||||
* Fail more explicitly when local-file Uris contain invalid parts (e.g.
|
extension's readme.
|
||||||
fragment) ([#6470](https://github.com/google/ExoPlayer/issues/6470)).
|
* Opus extension: Update to use NDK r20.
|
||||||
* Add `MediaPeriod.isLoading` to improve `Player.isLoading` state.
|
* GVR extension: This extension is now deprecated.
|
||||||
* Make show and hide player controls accessible for TalkBack in `PlayerView`.
|
* Demo apps (TODO: update links to point to r2.11.0 tag):
|
||||||
* Pass the codec output `MediaFormat` to `VideoFrameMetadataListener`.
|
* Add [SurfaceControl demo app](https://github.com/google/ExoPlayer/tree/dev-v2/demos/surface)
|
||||||
* Deprecate the GVR extension.
|
to show how to use the Android 10 `SurfaceControl` API with ExoPlayer
|
||||||
* Fix the start of audio getting truncated when transitioning to a new
|
([#677](https://github.com/google/ExoPlayer/issues/677)).
|
||||||
item in a playlist of opus streams.
|
* Add support for subtitle files to the
|
||||||
* Fix FLAC extension build
|
[Main demo app](https://github.com/google/ExoPlayer/tree/dev-v2/demos/main)
|
||||||
([#6601](https://github.com/google/ExoPlayer/issues/6601).
|
([#5523](https://github.com/google/ExoPlayer/issues/5523)).
|
||||||
* Update the ffmpeg, flac and opus extension build instructions to use NDK r20.
|
* Remove the IMA demo app. IMA functionality is demonstrated by the
|
||||||
* Update the ffmpeg extension to release 4.2. It is necessary to rebuild the
|
[main demo app](https://github.com/google/ExoPlayer/tree/dev-v2/demos/main).
|
||||||
native part of the extension after this change, following the instructions in
|
* Add basic DRM support to the
|
||||||
the extension's readme.
|
[Cast demo app](https://github.com/google/ExoPlayer/tree/dev-v2/demos/cast).
|
||||||
* Add support for subtitle files to the demo app
|
* TestUtils: Publish the `testutils` module to simplify unit testing with
|
||||||
([#5523](https://github.com/google/ExoPlayer/issues/5523)).
|
ExoPlayer ([#6267](https://github.com/google/ExoPlayer/issues/6267)).
|
||||||
* Handle new signaling for E-AC3 JOC audio in DASH
|
|
||||||
([#6636](https://github.com/google/ExoPlayer/issues/6636)).
|
|
||||||
* Require an end time or duration for SubRip (SRT) and SubStation Alpha
|
|
||||||
(SSA/ASS) subtitles. This applies to both sidecar files & subtitles
|
|
||||||
[embedded in Matroska streams](https://matroska.org/technical/specs/subtitles/index.html).
|
|
||||||
|
|
||||||
### 2.10.7 (2019-11-12) ###
|
### 2.10.7 (2019-11-12) ###
|
||||||
|
|
||||||
@ -121,7 +142,7 @@
|
|||||||
* MediaSession extension: Update shuffle and repeat modes when playback state
|
* MediaSession extension: Update shuffle and repeat modes when playback state
|
||||||
is invalidated ([#6582](https://github.com/google/ExoPlayer/issues/6582)).
|
is invalidated ([#6582](https://github.com/google/ExoPlayer/issues/6582)).
|
||||||
* Fix the start of audio getting truncated when transitioning to a new
|
* Fix the start of audio getting truncated when transitioning to a new
|
||||||
item in a playlist of opus streams.
|
item in a playlist of Opus streams.
|
||||||
|
|
||||||
### 2.10.6 (2019-10-17) ###
|
### 2.10.6 (2019-10-17) ###
|
||||||
|
|
||||||
@ -690,7 +711,7 @@
|
|||||||
and `AnalyticsListener` callbacks
|
and `AnalyticsListener` callbacks
|
||||||
([#4361](https://github.com/google/ExoPlayer/issues/4361) and
|
([#4361](https://github.com/google/ExoPlayer/issues/4361) and
|
||||||
[#4615](https://github.com/google/ExoPlayer/issues/4615)).
|
[#4615](https://github.com/google/ExoPlayer/issues/4615)).
|
||||||
* UI components:
|
* UI:
|
||||||
* Add option to `PlayerView` to show buffering view when playWhenReady is
|
* Add option to `PlayerView` to show buffering view when playWhenReady is
|
||||||
false ([#4304](https://github.com/google/ExoPlayer/issues/4304)).
|
false ([#4304](https://github.com/google/ExoPlayer/issues/4304)).
|
||||||
* Allow any `Drawable` to be used as `PlayerView` default artwork.
|
* Allow any `Drawable` to be used as `PlayerView` default artwork.
|
||||||
@ -846,7 +867,7 @@
|
|||||||
* OkHttp extension: Fix to correctly include response headers in thrown
|
* OkHttp extension: Fix to correctly include response headers in thrown
|
||||||
`InvalidResponseCodeException`s.
|
`InvalidResponseCodeException`s.
|
||||||
* Add possibility to cancel `PlayerMessage`s.
|
* Add possibility to cancel `PlayerMessage`s.
|
||||||
* UI components:
|
* UI:
|
||||||
* Add `PlayerView.setKeepContentOnPlayerReset` to keep the currently displayed
|
* Add `PlayerView.setKeepContentOnPlayerReset` to keep the currently displayed
|
||||||
video frame or media artwork visible when the player is reset
|
video frame or media artwork visible when the player is reset
|
||||||
([#2843](https://github.com/google/ExoPlayer/issues/2843)).
|
([#2843](https://github.com/google/ExoPlayer/issues/2843)).
|
||||||
@ -896,7 +917,7 @@
|
|||||||
* Support live stream clipping with `ClippingMediaSource`.
|
* Support live stream clipping with `ClippingMediaSource`.
|
||||||
* Allow setting tags for all media sources in their factories. The tag of the
|
* Allow setting tags for all media sources in their factories. The tag of the
|
||||||
current window can be retrieved with `Player.getCurrentTag`.
|
current window can be retrieved with `Player.getCurrentTag`.
|
||||||
* UI components:
|
* UI:
|
||||||
* Add support for displaying error messages and a buffering spinner in
|
* Add support for displaying error messages and a buffering spinner in
|
||||||
`PlayerView`.
|
`PlayerView`.
|
||||||
* Add support for listening to `AspectRatioFrameLayout`'s aspect ratio update
|
* Add support for listening to `AspectRatioFrameLayout`'s aspect ratio update
|
||||||
@ -1060,7 +1081,7 @@
|
|||||||
`SsMediaSource.Factory`, and `MergingMediaSource`.
|
`SsMediaSource.Factory`, and `MergingMediaSource`.
|
||||||
* Play out existing buffer before retrying for progressive live streams
|
* Play out existing buffer before retrying for progressive live streams
|
||||||
([#1606](https://github.com/google/ExoPlayer/issues/1606)).
|
([#1606](https://github.com/google/ExoPlayer/issues/1606)).
|
||||||
* UI components:
|
* UI:
|
||||||
* Generalized player and control views to allow them to bind with any
|
* Generalized player and control views to allow them to bind with any
|
||||||
`Player`, and renamed them to `PlayerView` and `PlayerControlView`
|
`Player`, and renamed them to `PlayerView` and `PlayerControlView`
|
||||||
respectively.
|
respectively.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user