提交 7fb166ba 编写于 作者: O olly 提交者: Oliver Woodman

Finalize release notes for 2.13.0

PiperOrigin-RevId: 355621265
上级 045048f6
# Release notes
### dev-v2 (not yet released)
* New release notes go here!
### 2.13.0 (not yet released - targeted for 2021-02-TBD)
### 2.13.0 (2021-02-04)
* Core library:
* Remove long deprecated symbols:
* `AdaptiveMediaSourceEventListener`. Use `MediaSourceEventListener`
instead.
* `DashMediaSource.Factory.setMinLoadableRetryCount(int)`. Use
`DashMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)`
instead.
* `DefaultAnalyticsListener`. Use `AnalyticsListener` directly
instead.
* `DefaultLoadControl` constructors. Use `DefaultLoadControl.Builder`
instead.
* `DrmInitData.get(UUID)`. Use `DrmInitData.get(int)` and
`DrmInitData.SchemeData.matches(UUID)` instead.
* `ExtractorsMediaSource.Factory.setMinLoadableRetryCount(int)`. Use
`ExtractorsMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)`
instead.
* `FixedTrackSelection.Factory`. If you need to disable adaptive
selection in `DefaultTrackSelector`, enable the
`DefaultTrackSelector.Parameters.forceHighestSupportedBitrate` flag.
* `HlsMediaSource.Factory.setMinLoadableRetryCount(int)`. Use
`HlsMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)`
instead.
* `MappedTrackInfo.getTrackFormatSupport(int, int, int)`. Use
`MappedTrackInfo.getTrackSupport(int, int, int)`.
* `MappedTrackInfo.getTrackTypeRendererSupport(int)`. Use
`MappedTrackInfo.getTypeSupport(int)`.
* `MappedTrackInfo.getUnassociatedTrackGroups()`. Use
`MappedTrackInfo.getUnmappedTrackGroups()`.
* `MappedTrackInfo.length` - Use `MappedTrackInfo.getRendererCount()`
instead.
* `Player.DefaultEventListener.onTimelineChanged(Timeline, Object)`.
Use `Player.EventListener.onTimelineChanged(Timeline, int)` instead.
* `Player.setAudioAttributes(AudioAttributes)`. Use
`Player.AudioComponent.setAudioAttributes(AudioAttributes, boolean)`
instead.
* `PlayerView.setDefaultArtwork(Bitmap)`. Use
`PlayerView.setDefaultArtwork(Drawable)` instead.
* `PlayerView.setShowBuffering(boolean)`. Use
`PlayerView.setShowBuffering(int)` instead.
* `SimpleExoPlayer.clearMetadataOutput(MetadataOutput)`. Use
`SimpleExoPlayer.removeMetadataOutput(MetadataOutput)` instead.
* `SimpleExoPlayer.clearTextOutput(TextOutput)`. Use
`SimpleExoPlayer.removeTextOutput(TextOutput)` instead.
* `SimpleExoPlayer.clearVideoListener()`. Use
`SimpleExoPlayer.removeVideoListener(VideoListener)` instead.
* `SimpleExoPlayer.getAudioStreamType()`. Use
`SimpleExoPlayer.getAudioAttributes()` instead.
* `SimpleExoPlayer.setAudioDebugListener(AudioRendererEventListener)`.
Use `SimpleExoPlayer.addAnalyticsListener(AnalyticsListener)`
instead.
* `SimpleExoPlayer.setAudioStreamType(int)`. Use
`SimpleExoPlayer.setAudioAttributes(AudioAttributes)` instead.
* `SimpleExoPlayer.setMetadataOutput(MetadataOutput)`. Use
`SimpleExoPlayer.addMetadataOutput(MetadataOutput)` instead. If your
application is calling `SimpleExoPlayer.setMetadataOutput(null)`,
make sure to replace this call with
`SimpleExoPlayer.removeMetadataOutput(MetadataOutput)`.
* `SimpleExoPlayer.setPlaybackParams(PlaybackParams)`. Use
`SimpleExoPlayer.setPlaybackParameters(PlaybackParameters)` instead.
* `SimpleExoPlayer.setTextOutput(TextOutput)`. Use
`SimpleExoPlayer.addTextOutput(TextOutput)` instead. If your
application is calling `SimpleExoPlayer.setTextOutput(null)`, make
sure to replace this call with
`SimpleExoPlayer.removeTextOutput(TextOutput)`.
* `SimpleExoPlayer.setVideoDebugListener(VideoRendererEventListener)`.
Use `SimpleExoPlayer.addAnalyticsListener(AnalyticsListener)`
instead.
* `SimpleExoPlayer.setVideoListener(VideoListener)`. Use
`SimpleExoPlayer.addVideoListener(VideoListener)` instead. If your
application is calling `SimpleExoPlayer.setVideoListener(null)`,
make sure to replace this call with
`SimpleExoPlayer.removeVideoListener(VideoListener)`.
* `SimpleExoPlayer.VideoListener`. Use
`com.google.android.exoplayer2.video.VideoListener` instead.
* `SingleSampleMediaSource.EventListener` and constructors. Use
`MediaSourceEventListener` and `SingleSampleMediaSource.Factory`
* `SimpleExoPlayer.addVideoDebugListener`,
`SimpleExoPlayer.removeVideoDebugListener`,
`SimpleExoPlayer.addAudioDebugListener` and
`SimpleExoPlayer.removeAudioDebugListener`. Use
`SimpleExoPlayer.addAnalyticsListener` and
`SimpleExoPlayer.removeAnalyticsListener` instead.
* `AdaptiveMediaSourceEventListener`. Use `MediaSourceEventListener`
instead.
* `SingleSampleMediaSource.Factory.setMinLoadableRetryCount(int)`. Use
`SingleSampleMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)`
instead.
* `SsMediaSource.Factory.setMinLoadableRetryCount(int)`. Use
`SsMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)`
instead.
* Add a `LivePlaybackSpeedControl` component to control the playback speed
during live playbacks. This allows the player to stay close to the
configured live offset. A configurable default implementation
`DefaultLivePlaybackSpeedControl` is added to `ExoPlayer` and
`SimpleExoPlayer` by default.
* Add `LiveConfiguration` to `MediaItem` to allow media-specific live
offset and live playback speed settings. The same settings can be set
for all `MediaItems` in `DefaultMediaSourceFactory`.
* Add `targetLiveOffsetUs` parameter to `LoadControl.shouldStartPlayback`.
* Verify correct thread usage in `SimpleExoPlayer` by default. Opt-out is
still possible until the next major release using
`setThrowsWhenUsingWrongThread(false)`
([#4463](https://github.com/google/ExoPlayer/issues/4463)).
* Add a getter and callback for static metadata to the player
* Add `Player.getCurrentStaticMetadata` and
`EventListener.onStaticMetadataChanged` to expose static metadata
belonging to the currently playing stream
([#7266](https://github.com/google/ExoPlayer/issues/7266)).
* Time out on release to prevent ANRs if the underlying platform call is
* Add `PlayerMessage.setLooper` and deprecate `PlayerMessage.setHandler`.
* Add option to `MergingMediaSource` to clip the durations of all sources
to have the same length
([#8422](https://github.com/google/ExoPlayer/issues/8422)).
* Remove `Player.setVideoDecoderOutputBufferRenderer` from Player API. Use
`setVideoSurfaceView` and `clearVideoSurfaceView` instead.
* Default `SingleSampleMediaSource.treatLoadErrorsAsEndOfStream` to `true`
so that errors loading external subtitle files do not cause playback
to fail ([#8430](https://github.com/google/ExoPlayer/issues/8430)). A
warning will be logged by `SingleSampleMediaPeriod` whenever a load
error is treated as though the end of the stream has been reached.
* Time out on release to prevent ANRs if an underlying platform call is
stuck ([#4352](https://github.com/google/ExoPlayer/issues/4352)).
* Time out when detaching a surface to prevent ANRs if the underlying
platform call is stuck
([#5887](https://github.com/google/ExoPlayer/issues/5887)).
* Fix bug where `AnalyticsListener` callbacks can arrive in the wrong
* Fix bug where `AnalyticsListener` callbacks could arrive in the wrong
order ([#8048](https://github.com/google/ExoPlayer/issues/8048)).
* Add `onEvents` callback to `Player.EventListener` and
`AnalyticsListener` to notify when all simultaneous state changes have
been handled and the values reported through callbacks are again
completely consistent with the values obtained from the `Player`
getters.
* Deprecate `HttpDataSource.Factory.getDefaultRequestProperties` and add
`HttpDataSource.Factory.setDefaultRequestProperties` instead.
* Add `DefaultHttpDataSource.Factory` and deprecate
`DefaultHttpDataSourceFactory`.
* Add option to `MergingMediaSource` to clip the durations of all sources
to have the same length
([#8422](https://github.com/google/ExoPlayer/issues/8422)).
* Remove `ExoPlaybackException.OutOfMemoryError`.
* Remove `setVideoDecoderOutputBufferRenderer` from Player API. Clients
should use `setOutputSurface` directly instead.
* Default `SingleSampleMediaSource.treatLoadErrorsAsEndOfStream` to `true`
([#8430](https://github.com/google/ExoPlayer/issues/8430)).
* Remove `setVideoDecoderOutputBufferRenderer` from Player API. Use
`setVideoSurfaceView` and `clearVideoSurfaceView` instead.
* Replace `PlayerMessage.setHandler` with `PlayerMessage.setLooper`.
* Log a warning when `SingleSampleMediaPeriod` transforms a load error
into end-of-stream.
* Transformer:
* Add a library to transform media inputs. The available transformations
are:
* Configuration of output container format.
* Removal of audio or video tracks.
* Slow motion flattening.
* Media transformation:
* Add a new `transformer` module for converting media streams. The
initially available transformations are changing the container format,
removing tracks, and slow motion flattening.
* Low latency live streaming:
* Support low-latency DASH (also known as ULL-CMAF) and Apple's
low-latency HLS extension.
* Add `LiveConfiguration` to `MediaItem` to define live offset and
playback speed adjustment parameters. The same parameters can be set on
`DefaultMediaSourceFactory` to apply for all `MediaItems`.
* Add `LivePlaybackSpeedControl` to control playback speed adjustments
during live playbacks. Such adjustments allow the player to stay close
to the live offset. `DefaultLivePlaybackSpeedControl` is provided as a
default implementation.
* Add `targetLiveOffsetUs` parameter to `LoadControl.shouldStartPlayback`.
* Extractors:
* Populate codecs string for H.264/AVC in MP4, Matroska and FLV streams to
allow decoder capability checks based on codec profile/level
allow decoder capability checks based on codec profile and level
([#8393](https://github.com/google/ExoPlayer/issues/8393)).
* Populate codecs string for H.265/HEVC in MP4, Matroska and MPEG-TS
streams to allow decoder capability checks based on codec profile/level
([#8393](https://github.com/google/ExoPlayer/issues/8393)).
* Handle sample size mismatches between raw audio `stsd` information and
`stsz` fixed sample size in MP4 extractors.
streams to allow decoder capability checks based on codec profile and
level ([#8393](https://github.com/google/ExoPlayer/issues/8393)).
* Add support for playing JPEG motion photos
([#5405](https://github.com/google/ExoPlayer/issues/5405)).
* Handle sample size mismatches between raw audio `stsd` information and
`stsz` fixed sample size in MP4 extractors.
* Fix Vorbis private codec data parsing in the Matroska extractor
([#8496](https://github.com/google/ExoPlayer/issues/8496)).
* Track selection:
* Move `Player.getTrackSelector` to the `ExoPlayer` interface.
* Allow parallel adaptation for video and audio
* Move the mutable parts of `TrackSelection` into an `ExoTrackSelection`
subclass.
* Allow parallel adaptation of video and audio
([#5111](https://github.com/google/ExoPlayer/issues/5111)).
* Simplify enabling tunneling with `DefaultTrackSelector`.
`ParametersBuilder.setTunnelingAudioSessionId` has been replaced with
`ParametersBuilder.setTunnelingEnabled`. The player's audio session ID
will be used, and so a tunneling specific ID is no longer needed.
* Add option to specify multiple preferred audio or text languages.
* Add option to specify preferred MIME type(s) for video and audio
([#8320](https://github.com/google/ExoPlayer/issues/8320)).
* Add option to specify preferred audio role flags.
* Add additional configuration parameters to `DefaultTrackSelector`.
`DefaultTrackSelector.ParametersBuilder` now includes:
* `setPreferredVideoMimeType`, `setPreferredVideoMimeTypes`,
`setPreferredAudioMimeType` and `setPreferredAudioMimeTypes` for
specifying preferred video and audio MIME type(s)
([#8320](https://github.com/google/ExoPlayer/issues/8320)).
* `setPreferredAudioLanguages` and `setPreferredTextLanguages` for
specifying multiple preferred audio and text languages.
* `setPreferredAudioRoleFlags` for specifying preferred audio role
flags.
* Forward `Timeline` and `MediaPeriodId` to `TrackSelection.Factory`.
* In order to make it immutable, `TrackSelection` in the `Player` API now
only contains methods related to static selection. The rest of the
methods have been moved to the child class `ExoTrackSelection` which is
used by all ExoPlayer components.
* DASH:
* Support low-latency DASH playback (`availabilityTimeOffset` and
`ServiceDescription` tags)
......@@ -189,31 +91,34 @@
* Support low-latency HLS playback (`EXT-X-PART` and preload hints)
([#5011](https://github.com/google/ExoPlayer/issues/5011)).
* UI:
* Improve `StyledPlayerControlView` button animations.
* Miscellaneous fixes for `StyledPlayerControlView` in minimal mode.
* Show overflow button in `StyledPlayerControlView` only when there is not
enough space.
* Update StyledPlayer's control overlay scrim from 30% opacity to 60%
opacity for Accessibility requirements.
* Switch `StyledPlayerControlView` button controls to borderless ripples.
* DRM:
* Fix playback failure when switching from PlayReady protected content to
Widevine or Clearkey protected content in a playlist.
* Add `ExoMediaDrm.KeyRequest.getRequestType`
([#7847](https://github.com/google/ExoPlayer/issues/7847)).
* Drop key & provision responses if `DefaultDrmSession` is released while
waiting for the response. This prevents these (harmless) log messages:
* Drop key and provision responses if `DefaultDrmSession` is released
while waiting for the response. This prevents harmless log messages of
the form:
`IllegalStateException: sending message to a Handler on a dead thread`
([#8328](https://github.com/google/ExoPlayer/issues/8328)).
* Allow apps to fully customize DRM behaviour per-`MediaItem` by passing a
`DrmSessionManagerProvider` to `MediaSourceFactory`
* Allow apps to fully customize DRM behaviour for each `MediaItem` by
passing a `DrmSessionManagerProvider` to `MediaSourceFactory`
([#8466](https://github.com/google/ExoPlayer/issues/8466)).
* Analytics:
* Add an `onEvents` callback to `Player.EventListener` and
`AnalyticsListener`. When one or more player states change
simultaneously, `onEvents` is called once after all of the callbacks
associated with the individual state changes.
* Pass a `DecoderReuseEvaluation` to `AnalyticsListener`'s
`onVideoInputFormatChanged` and `onAudioInputFormatChanged` methods. The
`DecoderReuseEvaluation` indicates whether it was possible to re-use an
existing decoder instance for the new format, and if not then the
reasons why.
* Video:
* Fall back to AVC/HEVC decoders for Dolby Vision streams with level 10
to 13 ([#8530](https://github.com/google/ExoPlayer/issues/8530)).
* Fix VP9 format capability checks on API level 23 and earlier. The
platform does not correctly report the VP9 level supported by the
decoder in this case, so we estimate it based on the decoder's maximum
......@@ -234,14 +139,19 @@
* Create E-AC3 JOC passthrough `AudioTrack` instances using the maximum
supported channel count (instead of assuming 6 channels) from API 29.
* Text:
* Add support for the SSA `primaryColour` style attribute
([#8435](https://github.com/google/ExoPlayer/issues/8435)).
* Fix CEA-708 sequence number discontinuity handling
([#1807](https://github.com/google/ExoPlayer/issues/1807)).
* Fix CEA-708 handling of unexpectedly small packets
([#1807](https://github.com/google/ExoPlayer/issues/1807)).
* Add support for the SSA `primaryColour` style attribute
([#8435](https://github.com/google/ExoPlayer/issues/8435)).
* Data sources:
* Use the user agent of the underlying network stack by default.
* For `HttpDataSource` implementations, default to using the user agent of
the underlying network stack.
* Deprecate `HttpDataSource.Factory.getDefaultRequestProperties`.
`HttpDataSource.Factory.setDefaultRequestProperties` instead.
* Add `DefaultHttpDataSource.Factory` and deprecate
`DefaultHttpDataSourceFactory`.
* Metadata retriever:
* Parse Google Photos HEIC and JPEG motion photo metadata.
* IMA extension:
......@@ -249,8 +159,8 @@
([#3750](https://github.com/google/ExoPlayer/issues/3750)).
* Add `ImaAdsLoader.Builder.setEnableContinuousPlayback` for setting
whether to request ads for continuous playback.
* Upgrade IMA SDK dependency to 3.22.0, bringing in a fix for leaking the
ad view group ([#7344](https://github.com/google/ExoPlayer/issues/7344),
* Upgrade IMA SDK dependency to 3.22.0. This fixes leaking of the ad view
group ([#7344](https://github.com/google/ExoPlayer/issues/7344),
[#8339](https://github.com/google/ExoPlayer/issues/8339)).
* Fix a bug that could cause the next content position played after a seek
to snap back to the cue point of the preceding ad, rather than the
......@@ -276,6 +186,91 @@
* Support `setPlaybackSpeed(float)` and disable it by default. Use
`MediaSessionConnector.setEnabledPlaybackActions(long)` to enable
([#8229](https://github.com/google/ExoPlayer/issues/8229)).
* Remove deprecated symbols:
* `AdaptiveMediaSourceEventListener`. Use `MediaSourceEventListener`
instead.
* `DashMediaSource.Factory.setMinLoadableRetryCount(int)`. Use
`DashMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)`
instead.
* `DefaultAnalyticsListener`. Use `AnalyticsListener` instead.
* `DefaultLoadControl` constructors. Use `DefaultLoadControl.Builder`
instead.
* `DrmInitData.get(UUID)`. Use `DrmInitData.get(int)` and
`DrmInitData.SchemeData.matches(UUID)` instead.
* `ExtractorsMediaSource.Factory.setMinLoadableRetryCount(int)`. Use
`ExtractorsMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)`
instead.
* `FixedTrackSelection.Factory`. If you need to disable adaptive
selection in `DefaultTrackSelector`, enable the
`DefaultTrackSelector.Parameters.forceHighestSupportedBitrate` flag.
* `HlsMediaSource.Factory.setMinLoadableRetryCount(int)`. Use
`HlsMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)`
instead.
* `MappedTrackInfo.getTrackFormatSupport(int, int, int)`. Use
`MappedTrackInfo.getTrackSupport(int, int, int)` instead.
* `MappedTrackInfo.getTrackTypeRendererSupport(int)`. Use
`MappedTrackInfo.getTypeSupport(int)` instead.
* `MappedTrackInfo.getUnassociatedTrackGroups()`. Use
`MappedTrackInfo.getUnmappedTrackGroups()` instead.
* `MappedTrackInfo.length`. Use `MappedTrackInfo.getRendererCount()`
instead.
* `Player.DefaultEventListener.onTimelineChanged(Timeline, Object)`.
Use `Player.EventListener.onTimelineChanged(Timeline, int)` instead.
* `Player.setAudioAttributes(AudioAttributes)`. Use
`Player.AudioComponent.setAudioAttributes(AudioAttributes, boolean)`
instead.
* `PlayerView.setDefaultArtwork(Bitmap)`. Use
`PlayerView.setDefaultArtwork(Drawable)` instead.
* `PlayerView.setShowBuffering(boolean)`. Use
`PlayerView.setShowBuffering(int)` instead.
* `SimpleExoPlayer.clearMetadataOutput(MetadataOutput)`. Use
`SimpleExoPlayer.removeMetadataOutput(MetadataOutput)` instead.
* `SimpleExoPlayer.clearTextOutput(TextOutput)`. Use
`SimpleExoPlayer.removeTextOutput(TextOutput)` instead.
* `SimpleExoPlayer.clearVideoListener()`. Use
`SimpleExoPlayer.removeVideoListener(VideoListener)` instead.
* `SimpleExoPlayer.getAudioStreamType()`. Use
`SimpleExoPlayer.getAudioAttributes()` instead.
* `SimpleExoPlayer.setAudioDebugListener(AudioRendererEventListener)`.
Use `SimpleExoPlayer.addAnalyticsListener(AnalyticsListener)` instead.
* `SimpleExoPlayer.setAudioStreamType(int)`. Use
`SimpleExoPlayer.setAudioAttributes(AudioAttributes)` instead.
* `SimpleExoPlayer.setMetadataOutput(MetadataOutput)`. Use
`SimpleExoPlayer.addMetadataOutput(MetadataOutput)` instead. If your
application is calling `SimpleExoPlayer.setMetadataOutput(null)`, make
sure to replace this call with a call to
`SimpleExoPlayer.removeMetadataOutput(MetadataOutput)`.
* `SimpleExoPlayer.setPlaybackParams(PlaybackParams)`. Use
`SimpleExoPlayer.setPlaybackParameters(PlaybackParameters)` instead.
* `SimpleExoPlayer.setTextOutput(TextOutput)`. Use
`SimpleExoPlayer.addTextOutput(TextOutput)` instead. If your
application is calling `SimpleExoPlayer.setTextOutput(null)`, make sure
to replace this call with a call to
`SimpleExoPlayer.removeTextOutput(TextOutput)`.
* `SimpleExoPlayer.setVideoDebugListener(VideoRendererEventListener)`.
Use `SimpleExoPlayer.addAnalyticsListener(AnalyticsListener)` instead.
* `SimpleExoPlayer.setVideoListener(VideoListener)`. Use
`SimpleExoPlayer.addVideoListener(VideoListener)` instead. If your
application is calling `SimpleExoPlayer.setVideoListener(null)`, make
sure to replace this call with a call to
`SimpleExoPlayer.removeVideoListener(VideoListener)`.
* `SimpleExoPlayer.VideoListener`. Use
`com.google.android.exoplayer2.video.VideoListener` instead.
* `SingleSampleMediaSource.EventListener` and constructors. Use
`MediaSourceEventListener` and `SingleSampleMediaSource.Factory`
instead.
* `SimpleExoPlayer.addVideoDebugListener`,
`SimpleExoPlayer.removeVideoDebugListener`,
`SimpleExoPlayer.addAudioDebugListener` and
`SimpleExoPlayer.removeAudioDebugListener`. Use
`SimpleExoPlayer.addAnalyticsListener` and
`SimpleExoPlayer.removeAnalyticsListener` instead.
* `SingleSampleMediaSource.Factory.setMinLoadableRetryCount(int)`. Use
`SingleSampleMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)`
instead.
* `SsMediaSource.Factory.setMinLoadableRetryCount(int)`. Use
`SsMediaSource.Factory.setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)`
instead.
### 2.12.3 (2021-01-13) ###
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册