mirror of
https://github.com/androidx/media.git
synced 2025-04-29 22:36:54 +08:00
Update release notes for 1.6.0
PiperOrigin-RevId: 738443368 (cherry picked from commit a37e906a0a44e166a75a1d75b12c39685b0a5806)
This commit is contained in:
parent
7c0fb628ac
commit
df3b138391
498
RELEASENOTES.md
498
RELEASENOTES.md
@ -2,284 +2,46 @@
|
||||
|
||||
## 1.6
|
||||
|
||||
### 1.6.0-rc02 (2025-03-18)
|
||||
|
||||
This release includes the following changes since
|
||||
[1.6.0-rc01 release](#160-rc01-2025-03-12):
|
||||
|
||||
* Extractors:
|
||||
* FLAC: Add support for 32-bit FLAC files. Previously these would fail to
|
||||
play with `IllegalStateException: Playback stuck buffering and not
|
||||
loading` ([#2197](https://github.com/androidx/media/issues/2197)).
|
||||
* Audio:
|
||||
* Add support for float PCM to `ChannelMappingAudioProcessor`.
|
||||
* Add support for float PCM to `TrimmingAudioProcessor`.
|
||||
* Video:
|
||||
* Fix issue where a player without a surface was ready immediately and
|
||||
very slow decoding any pending frames
|
||||
([#1973](https://github.com/androidx/media/issues/1973)).
|
||||
* Exclude Xiaomi and OPPO devices from detached surface mode to avoid
|
||||
screen flickering
|
||||
([#2059](https://github.com/androidx/media/issues/2059)).
|
||||
* Session:
|
||||
* Fix bug where a stale notification stays visible when the playlist is
|
||||
cleared ([#2211](https://github.com/androidx/media/issues/2211)).
|
||||
* UI:
|
||||
* Add `PlaybackSpeedState` class and the corresponding
|
||||
`rememberPlaybackSpeedState` Composable to `media3-ui-compose` module.
|
||||
* DASH extension:
|
||||
* Fix issue where adaptation sets marked with `adaptation-set-switching`
|
||||
but different languages or role flags are merged together
|
||||
([#2222](https://github.com/androidx/media/issues/2222)).
|
||||
* HLS extension:
|
||||
* Loosen the condition for seeking to sync positions in an HLS stream
|
||||
([#2209](https://github.com/androidx/media/issues/2209)).
|
||||
|
||||
### 1.6.0-rc01 (2025-03-12)
|
||||
|
||||
This release includes the following changes since
|
||||
[1.6.0-beta01 release](#160-beta01-2025-02-26):
|
||||
|
||||
* Common Library:
|
||||
* Change `SimpleBasePlayer.State` access from protected to public to make
|
||||
it easier to handle updates in other classes
|
||||
([#2128](https://github.com/androidx/media/issues/2128)).
|
||||
* ExoPlayer:
|
||||
* Fix a bug where `ExoPlayer.isLoading()` remains `true` while it has
|
||||
transitioned to `STATE_IDLE` or `STATE_ENDED`
|
||||
([#2133](https://github.com/androidx/media/issues/2133)).
|
||||
* Add `lastRebufferRealtimeMs` to `LoadControl.Parameter`
|
||||
([#2113](https://github.com/androidx/media/pull/2113)).
|
||||
* Extractors:
|
||||
* Fix issue where TS streams can get stuck on some devices
|
||||
([#2069](https://github.com/androidx/media/issues/2069)).
|
||||
* Text:
|
||||
* Fix handling of multi-byte UTF-8 characters in WebVTT files using CR
|
||||
line endings ([#2167](https://github.com/androidx/media/issues/2167)).
|
||||
* DRM:
|
||||
* Fix `MediaCodec$CryptoException: Operation not supported in this
|
||||
configuration` error when playing ClearKey content on API < 27 devices
|
||||
([#1732](https://github.com/androidx/media/issues/1732)).
|
||||
* Muxers:
|
||||
* Fix a bug in `FragmentedMp4Muxer` that creates a lot of fragments when
|
||||
only audio track is written.
|
||||
* Downloads:
|
||||
* Fix bug in `CacheWriter` that leaves data sources open and cache areas
|
||||
locked in case the data source throws an `Exception` other than
|
||||
`IOException`
|
||||
([#9760](https://github.com/google/ExoPlayer/issues/9760)).
|
||||
* MIDI extension:
|
||||
* Plumb custom `AudioSink` and `AudioRendererEventListener` instances into
|
||||
`MidiRenderer`.
|
||||
* Cast extension:
|
||||
* Bump the `play-services-cast-framework` dependency to 21.5.0 to fix a
|
||||
`FLAG_MUTABLE` crash in apps targeting API 34+ on devices with Google
|
||||
Play services installed but disabled
|
||||
([#2178](https://github.com/androidx/media/issues/2178)).
|
||||
|
||||
### 1.6.0-beta01 (2025-02-26)
|
||||
### 1.6.0 (2025-03-26)
|
||||
|
||||
This release includes the following changes since the
|
||||
[1.6.0-alpha03 release](#160-alpha03-2025-02-06):
|
||||
[1.5.1 release](#151-2024-12-19):
|
||||
|
||||
* Common Library:
|
||||
* Add `AudioManagerCompat` and `AudioFocusRequestCompat` to replace the
|
||||
equivalent classes in `androidx.media`.
|
||||
* Upgrade Kotlin from 1.9.20 to 2.0.20 and use Compose Compiler Gradle
|
||||
plugin. Upgrade KotlinX Coroutines library from 1.8.1 to 1.9.0.
|
||||
* ExoPlayer:
|
||||
* Initial audio session id is no longer immediately available after
|
||||
creating the player. You can use
|
||||
`AnalyticsListener.onAudioSessionIdChanged` to listen to the initial
|
||||
update if required.
|
||||
* Transformer:
|
||||
* Add `MediaProjectionAssetLoader`, which provides media from a
|
||||
`MediaProjection` for screen recording, and add support for screen
|
||||
recording to the Transformer demo app.
|
||||
* Add `#getInputFormat()` to `Codec` interface.
|
||||
* Shift the responsibility to release the `GlObjectsProvider` onto the
|
||||
caller in `DefaultVideoFrameProcessor` and `DefaultVideoCompositor` when
|
||||
possible.
|
||||
* Video:
|
||||
* Add experimental `ExoPlayer` API to drop late `MediaCodecVideoRenderer`
|
||||
decoder input buffers that are not depended on. Enable it with
|
||||
`DefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUs`.
|
||||
* Session:
|
||||
* Keep foreground service state for an additional 10 minutes when playback
|
||||
pauses, stops or fails. This allows users to resume playback within this
|
||||
timeout without risking foreground service restrictions on various
|
||||
devices. Note that simply calling `player.pause()` can no longer be used
|
||||
to stop the foreground service before `stopSelf()` when overriding
|
||||
`onTaskRemoved`, use `MediaSessionService.pauseAllPlayersAndStopSelf()`
|
||||
instead.
|
||||
* Make `MediaSession.setSessionActivity(PendingIntent)` accept null
|
||||
([#2109](https://github.com/androidx/media/issues/2109)).
|
||||
* Keep notification visible when playback enters an error or stopped
|
||||
state. The notification is only removed if the playlist is cleared or
|
||||
the player is released.
|
||||
* Improve handling of Android platform MediaSession actions ACTION_PLAY
|
||||
and ACTION_PAUSE to only set one of them according to the available
|
||||
commands and also accept if only one of them is set.
|
||||
* Remove deprecated symbols:
|
||||
* Removed the following deprecated `DownloadHelper` methods:
|
||||
* Constructor `DownloadHelper(MediaItem, @Nullable MediaSource,
|
||||
TrackSelectionParameters, RendererCapabilities[])`, use
|
||||
`DownloadHelper(MediaItem, @Nullable MediaSource,
|
||||
TrackSelectionParameters, RendererCapabilitiesList)` instead.
|
||||
* `getRendererCapabilities(RenderersFactory)`, equivalent
|
||||
functionality can be achieved by creating a
|
||||
`DefaultRendererCapabilitiesList` with a `RenderersFactory`, and
|
||||
calling `DefaultRendererCapabilitiesList.getRendererCapabilities()`.
|
||||
* Removed
|
||||
`PlayerNotificationManager.setMediaSessionToken(MediaSessionCompat)`
|
||||
method. Use
|
||||
`PlayerNotificationManager.setMediaSessionToken(MediaSession.Token)` and
|
||||
pass in `(MediaSession.Token) compatToken.getToken()`instead.
|
||||
|
||||
### 1.6.0-alpha03 (2025-02-06)
|
||||
|
||||
This release includes the following changes since the
|
||||
[1.6.0-alpha02 release](#160-alpha02-2025-01-30):
|
||||
|
||||
* ExoPlayer:
|
||||
* Add option to `ClippingMediaSource` to allow clipping in unseekable
|
||||
media.
|
||||
* Fix bug where seeking with pre-warming could block following media item
|
||||
transition.
|
||||
* Audio:
|
||||
* Make `androidx.media3.common.audio.SonicAudioProcessor` final.
|
||||
* Video:
|
||||
* Change `MediaCodecVideoRenderer.shouldUsePlaceholderSurface` to
|
||||
protected so that applications can override to block usage of
|
||||
placeholder surfaces
|
||||
([#1905](https://github.com/androidx/media/pull/1905)).
|
||||
* Add experimental `ExoPlayer` AV1 sample dependency parsing to speed up
|
||||
seeking. Enable it with the new
|
||||
`DefaultRenderersFactory.experimentalSetParseAv1SampleDependencies` API.
|
||||
* Muxers:
|
||||
* Disable `Mp4Muxer` sample batching and copying by default.
|
||||
* Remove deprecated symbols:
|
||||
* Removed `androidx.media3.exoplayer.audio.SonicAudioProcessor`.
|
||||
|
||||
### 1.6.0-alpha02 (2025-01-30)
|
||||
|
||||
This release includes the following changes since the
|
||||
[1.6.0-alpha01 release](#160-alpha01-2024-12-20):
|
||||
|
||||
* Common Library:
|
||||
* Remove `Format.toBundle(boolean excludeMetadata)` method, use
|
||||
`Format.toBundle()` instead.
|
||||
* Fix bug in `SimpleBasePlayer` where setting a new
|
||||
`currentMediaItemIndex` in `State` after `setPlaylist` with `null`
|
||||
`MediaMetadata` does not reevaluate the metadata
|
||||
([#1940](https://github.com/androidx/media/issues/1940)).
|
||||
* Change `SimpleBasePlayer.State` access from protected to public to make
|
||||
it easier to handle updates in other classes
|
||||
([#2128](https://github.com/androidx/media/issues/2128)).
|
||||
* ExoPlayer:
|
||||
* Add `MediaExtractorCompat`, a new class that provides equivalent
|
||||
features to platform `MediaExtractor`.
|
||||
* Add experimental 'ExoPlayer' pre-warming support for playback using
|
||||
`MediaCodecVideoRenderer`. You can configure `DefaultRenderersFactory`
|
||||
through `experimentalSetEnableMediaCodecVideoRendererPrewarming` to
|
||||
provide a secondary `MediaCodecVideoRenderer` to `ExoPlayer`. If
|
||||
enabled, `ExoPlayer` pre-processes the video of consecutive media items
|
||||
during playback to reduce media item transition latency.
|
||||
* Fix issue where additional decode-only frames may be displayed in quick
|
||||
succession when transitioning to content media after a mid-roll ad.
|
||||
* Make `DefaultRenderersFactory` add two `MetadataRenderer` instances to
|
||||
enable apps to receive two different schemes of metadata by default.
|
||||
* Reduce default values for `bufferForPlaybackMs` and
|
||||
`bufferForPlaybackAfterRebufferMs` in `DefaultLoadControl` to 1000 and
|
||||
2000 ms respectively.
|
||||
* Initialize `DeviceInfo` and device volume asynchronously (if enabled
|
||||
using `setDeviceVolumeControlEnabled`). These values aren't available
|
||||
instantly after `ExoPlayer.Builder.build()`, and `Player.Listener`
|
||||
notifies changes through `onDeviceInfoChanged` and
|
||||
`onDeviceVolumeChanged`.
|
||||
* Reevaluate whether the ongoing load of a chunk should be cancelled when
|
||||
playback is paused
|
||||
([#1785](https://github.com/androidx/media/pull/1785)).
|
||||
* Transformer:
|
||||
* Enable support for Android platform diagnostics using
|
||||
`MediaMetricsManager`. Transformer forwards editing events and
|
||||
performance data to the platform, which helps to provide system
|
||||
performance and debugging information on the device. This data may also
|
||||
be collected by Google
|
||||
[if sharing usage and diagnostics data is enabled](https://support.google.com/accounts/answer/6078260)
|
||||
by the user of the device. Apps can opt-out of contributing to platform
|
||||
diagnostics for Transformer with
|
||||
`Transformer.Builder.setUsePlatformDiagnostics(false)`.
|
||||
* Split `InAppMuxer` into `InAppMp4Muxer` and `InAppFragmentedMp4Muxer`.
|
||||
You use `InAppMp4Muxer` to produce a non-fragmented MP4 file, while
|
||||
`InAppFragmentedMp4Muxer` is for producing a fragmented MP4 file.
|
||||
* Move `Muxer` interface from `media3-muxer` to `media3-transformer`.
|
||||
* Add support for transcoding and transmuxing Dolby Vision (profile 8)
|
||||
format.
|
||||
* Extractors:
|
||||
* Fix handling of NAL units with lengths expressed in 1 or 2 bytes (rather
|
||||
than 4).
|
||||
* Fix `ArrayIndexOutOfBoundsException` in MP4 edit lists when the edit
|
||||
list starts at a non-sync frame with no preceding sync frame
|
||||
([#2062](https://github.com/androidx/media/issues/2062)).
|
||||
* Audio:
|
||||
* Don't bypass `SonicAudioProcessor` when `SpeedChangingAudioProcessor` is
|
||||
configured with default parameters.
|
||||
* Fix underflow in `Sonic#getOutputSize()` that could cause
|
||||
`DefaultAudioSink` to stall.
|
||||
* Fix `MediaCodecAudioRenderer.getDurationToProgressUs()` and
|
||||
`DecoderAudioRenderer.getDurationToProgressUs()` so that seeks correctly
|
||||
reset the provided durations.
|
||||
* Text:
|
||||
* TTML: Add support for referencing `tts:origin` and `tts:extent` using
|
||||
`style` ([#2953](https://github.com/google/ExoPlayer/issues/2953)).
|
||||
* Restrict WebVTT and SubRip timestamps to exactly 3 decimal places.
|
||||
Previously we incorrectly parsed any number of decimal places but always
|
||||
assumed the value was in milliseconds, leading to incorrect timestamps
|
||||
([#1997](https://github.com/androidx/media/issues/1997)).
|
||||
* Add support for VobSub subtitles
|
||||
([#8260](https://github.com/google/ExoPlayer/issues/8260)).
|
||||
* Fix playback hanging when a playlist contains clipped items with CEA-608
|
||||
or CEA-708 captions.
|
||||
* Fix `IllegalStateException` when an SSA file contains a cue with zero
|
||||
duration (start and end time equal)
|
||||
([#2052](https://github.com/androidx/media/issues/2052)).
|
||||
* Suppress (and log) subtitle parsing errors when subtitles are muxed into
|
||||
the same container as audio and video
|
||||
([#2052](https://github.com/androidx/media/issues/2052)).
|
||||
* Muxers:
|
||||
* Renamed `setSampleCopyEnabled()` method to `setSampleCopyingEnabled()`
|
||||
in both `Mp4Muxer.Builder` and `FragmentedMp4Muxer.Builder`.
|
||||
* `Mp4Muxer.addTrack()` and `FragmentedMp4Muxer.addTrack()` now return an
|
||||
`int` track ID instead of a `TrackToken`.
|
||||
* `Mp4Muxer` and `FragmentedMp4Muxer` no longer implement `Muxer`
|
||||
interface.
|
||||
* Session:
|
||||
* Fix bug where calling a `Player` method on a `MediaController` connected
|
||||
to a legacy session dropped changes from a pending update.
|
||||
* UI:
|
||||
* Add `PresentationState` state holder class and the corresponding
|
||||
`rememberPresentationState` Composable to `media3-ui-compose`.
|
||||
* HLS extension:
|
||||
* Parse `SUPPLEMENTAL-CODECS` tag from HLS playlist to detect Dolby Vision
|
||||
formats ([#1785](https://github.com/androidx/media/pull/1785)).
|
||||
* DASH extension:
|
||||
* Fix issue when calculating the update interval for ad insertion in
|
||||
multi-period live streams
|
||||
([#1698](https://github.com/androidx/media/issues/1698)).
|
||||
* Parse `scte214:supplementalCodecs` attribute from DASH manifest to
|
||||
detect Dolby Vision formats
|
||||
([#1785](https://github.com/androidx/media/pull/1785)).
|
||||
* Improve handling of period transitions in live streams where the period
|
||||
contains media samples beyond the declared period duration
|
||||
([#1698](https://github.com/androidx/media/issues/1698)).
|
||||
* Demo app:
|
||||
* Use `PresentationState` to control the aspect ratio of `PlayerSurface`
|
||||
Composable. This depends on the ContentScale type and covers it with a
|
||||
shutter-overlay before the first frame is rendered.
|
||||
* Remove deprecated symbols:
|
||||
* Removed `ExoPlayer.VideoComponent`, `ExoPlayer.AudioComponent`,
|
||||
`ExoPlayer.TextComponent` and `ExoPlayer.DeviceComponent`.
|
||||
|
||||
### 1.6.0-alpha01 (2024-12-20)
|
||||
|
||||
This release includes the following changes since the
|
||||
[1.5.1 release](#151-2024-12-19):
|
||||
|
||||
* Common Library:
|
||||
* Remove `Format.toBundle(boolean excludeMetadata)` method, use
|
||||
`Format.toBundle()` instead.
|
||||
* Add `AudioManagerCompat` and `AudioFocusRequestCompat` to replace the
|
||||
equivalent classes in `androidx.media`.
|
||||
* ExoPlayer:
|
||||
* Initial audio session id is no longer immediately available after
|
||||
creating the player. You can use
|
||||
`AnalyticsListener.onAudioSessionIdChanged` to listen to the initial
|
||||
update if required.
|
||||
* Consider language when selecting a video track. By default, select a
|
||||
'main' video track that matches the language of the selected audio
|
||||
track, if available. Explicit video language preferences can be
|
||||
@ -293,11 +55,6 @@ This release includes the following changes since the
|
||||
with durations that don't match the actual content could cause frame
|
||||
freezes at the end of the item
|
||||
([#1698](https://github.com/androidx/media/issues/1698)).
|
||||
* Reduce default values for `bufferForPlaybackMs` and
|
||||
`bufferForPlaybackAfterRebufferMs` in `DefaultLoadControl` to 1000 and
|
||||
2000 ms respectively.
|
||||
* Add `MediaExtractorCompat`, a new class that provides equivalent
|
||||
features to platform `MediaExtractor`.
|
||||
* Move `BasePreloadManager.Listener` to a top-level
|
||||
`PreloadManagerListener`.
|
||||
* `RenderersFactory.createSecondaryRenderer` can be implemented to provide
|
||||
@ -312,29 +69,121 @@ This release includes the following changes since the
|
||||
* Change `AdsMediaSource` to allow the `AdPlaybackStates` to grow by
|
||||
appending ad groups. Invalid modifications are detected and throw an
|
||||
exception.
|
||||
* Fix issue where additional decode-only frames may be displayed in quick
|
||||
succession when transitioning to content media after a mid-roll ad.
|
||||
* Make `DefaultRenderersFactory` add two `MetadataRenderer` instances to
|
||||
enable apps to receive two different schemes of metadata by default.
|
||||
* Reevaluate whether the ongoing load of a chunk should be cancelled when
|
||||
playback is paused
|
||||
([#1785](https://github.com/androidx/media/pull/1785)).
|
||||
* Add option to `ClippingMediaSource` to allow clipping in unseekable
|
||||
media.
|
||||
* Fix bug where seeking with pre-warming could block following media item
|
||||
transition.
|
||||
* Fix a bug where `ExoPlayer.isLoading()` remains `true` while it has
|
||||
transitioned to `STATE_IDLE` or `STATE_ENDED`
|
||||
([#2133](https://github.com/androidx/media/issues/2133)).
|
||||
* Add `lastRebufferRealtimeMs` to `LoadControl.Parameter`
|
||||
([#2113](https://github.com/androidx/media/pull/2113)).
|
||||
* Transformer:
|
||||
* Update parameters of `VideoFrameProcessor.registerInputStream` and
|
||||
`VideoFrameProcessor.Listener.onInputStreamRegistered` to use `Format`.
|
||||
* Add support for transmuxing into alternative backward compatible
|
||||
formats.
|
||||
* Add support for transcoding and transmuxing Dolby Vision (profile 8)
|
||||
format.
|
||||
* Update parameters of `VideoFrameProcessor.registerInputStream` and
|
||||
`VideoFrameProcessor.Listener.onInputStreamRegistered` to use `Format`.
|
||||
* Generate HDR static metadata when using `DefaultEncoderFactory`.
|
||||
* Enable support for Android platform diagnostics using
|
||||
`MediaMetricsManager`. Transformer forwards editing events and
|
||||
performance data to the platform, which helps to provide system
|
||||
performance and debugging information on the device. This data may also
|
||||
be collected by Google
|
||||
[if sharing usage and diagnostics data is enabled](https://support.google.com/accounts/answer/6078260)
|
||||
by the user of the device. Apps can opt-out of contributing to platform
|
||||
diagnostics for Transformer with
|
||||
`Transformer.Builder.setUsePlatformDiagnostics(false)`.
|
||||
* Split `InAppMuxer` into `InAppMp4Muxer` and `InAppFragmentedMp4Muxer`.
|
||||
You use `InAppMp4Muxer` to produce a non-fragmented MP4 file, while
|
||||
`InAppFragmentedMp4Muxer` is for producing a fragmented MP4 file.
|
||||
* Move `Muxer` interface from `media3-muxer` to `media3-transformer`.
|
||||
* Add `MediaProjectionAssetLoader`, which provides media from a
|
||||
`MediaProjection` for screen recording, and add support for screen
|
||||
recording to the Transformer demo app.
|
||||
* Add `#getInputFormat()` to `Codec` interface.
|
||||
* Shift the responsibility to release the `GlObjectsProvider` onto the
|
||||
caller in `DefaultVideoFrameProcessor` and `DefaultVideoCompositor` when
|
||||
possible.
|
||||
* Extractors:
|
||||
* AVI: Fix handling of files with constant bitrate compressed audio where
|
||||
the stream header stores the number of bytes instead of the number of
|
||||
chunks.
|
||||
* Fix handling of NAL units with lengths expressed in 1 or 2 bytes (rather
|
||||
than 4).
|
||||
* Fix `ArrayIndexOutOfBoundsException` in MP4 edit lists when the edit
|
||||
list starts at a non-sync frame with no preceding sync frame
|
||||
([#2062](https://github.com/androidx/media/issues/2062)).
|
||||
* Fix issue where TS streams can get stuck on some devices
|
||||
([#2069](https://github.com/androidx/media/issues/2069)).
|
||||
* FLAC: Add support for 32-bit FLAC files. Previously these would fail to
|
||||
play with `IllegalStateException: Playback stuck buffering and not
|
||||
loading` ([#2197](https://github.com/androidx/media/issues/2197)).
|
||||
* Audio:
|
||||
* Fix `onAudioPositionAdvancing` to be called when playback resumes
|
||||
(previously it was called when playback was paused).
|
||||
* Don't bypass `SonicAudioProcessor` when `SpeedChangingAudioProcessor` is
|
||||
configured with default parameters.
|
||||
* Fix underflow in `Sonic#getOutputSize()` that could cause
|
||||
`DefaultAudioSink` to stall.
|
||||
* Fix `MediaCodecAudioRenderer.getDurationToProgressUs()` and
|
||||
`DecoderAudioRenderer.getDurationToProgressUs()` so that seeks correctly
|
||||
reset the provided durations.
|
||||
* Make `androidx.media3.common.audio.SonicAudioProcessor` final.
|
||||
* Add support for float PCM to `ChannelMappingAudioProcessor` and
|
||||
`TrimmingAudioProcessor`.
|
||||
* Video:
|
||||
* Fix `MediaCodecVideoRenderer` such that when without a `Surface`, the
|
||||
renderer skips just-early frames only if the
|
||||
`VideoFrameReleaseControl.getFrameReleaseAction` is not
|
||||
`FRAME_RELEASE_TRY_AGAIN_LATER`.
|
||||
* Change `MediaCodecVideoRenderer.shouldUsePlaceholderSurface` to
|
||||
protected so that applications can override to block usage of
|
||||
placeholder surfaces
|
||||
([#1905](https://github.com/androidx/media/pull/1905)).
|
||||
* Add experimental `ExoPlayer` AV1 sample dependency parsing to speed up
|
||||
seeking. Enable it with the new
|
||||
`DefaultRenderersFactory.experimentalSetParseAv1SampleDependencies` API.
|
||||
* Add experimental `ExoPlayer` API to drop late `MediaCodecVideoRenderer`
|
||||
decoder input buffers that are not depended on. Enable it with
|
||||
`DefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUs`.
|
||||
* Fix issue where a player without a surface was ready immediately and
|
||||
very slow decoding any pending frames
|
||||
([#1973](https://github.com/androidx/media/issues/1973)).
|
||||
* Exclude Xiaomi and OPPO devices from detached surface mode to avoid
|
||||
screen flickering
|
||||
([#2059](https://github.com/androidx/media/issues/2059)).
|
||||
* Text:
|
||||
* Add support for VobSub subtitles
|
||||
([#8260](https://github.com/google/ExoPlayer/issues/8260)).
|
||||
* Stop eagerly loading all subtitle files configured with
|
||||
`MediaItem.Builder.setSubtitleConfigurations`, and instead only load one
|
||||
if it is selected by track selection
|
||||
([#1721](https://github.com/androidx/media/issues/1721)).
|
||||
* TTML: Add support for referencing `tts:origin` and `tts:extent` using
|
||||
`style` ([#2953](https://github.com/google/ExoPlayer/issues/2953)).
|
||||
* Restrict WebVTT and SubRip timestamps to exactly 3 decimal places.
|
||||
Previously we incorrectly parsed any number of decimal places but always
|
||||
assumed the value was in milliseconds, leading to incorrect timestamps
|
||||
([#1997](https://github.com/androidx/media/issues/1997)).
|
||||
* Fix playback hanging when a playlist contains clipped items with CEA-608
|
||||
or CEA-708 captions.
|
||||
* Fix `IllegalStateException` when an SSA file contains a cue with zero
|
||||
duration (start and end time equal)
|
||||
([#2052](https://github.com/androidx/media/issues/2052)).
|
||||
* Suppress (and log) subtitle parsing errors when subtitles are muxed into
|
||||
the same container as audio and video
|
||||
([#2052](https://github.com/androidx/media/issues/2052)).
|
||||
* Fix handling of multi-byte UTF-8 characters in WebVTT files using CR
|
||||
line endings ([#2167](https://github.com/androidx/media/issues/2167)).
|
||||
* DRM:
|
||||
* Fix `MediaCodec$CryptoException: Operation not supported in this
|
||||
configuration` error when playing ClearKey content on API < 27 devices
|
||||
([#1732](https://github.com/androidx/media/issues/1732)).
|
||||
* Effect:
|
||||
* Moved the functionality of `OverlaySettings` into
|
||||
`StaticOverlaySettings`. `OverlaySettings` can be subclassed to allow
|
||||
@ -342,17 +191,48 @@ This release includes the following changes since the
|
||||
* Muxers:
|
||||
* Moved `MuxerException` out of `Muxer` interface to avoid a very long
|
||||
fully qualified name.
|
||||
* Renamed `setSampleCopyEnabled()` method to `setSampleCopyingEnabled()`
|
||||
in both `Mp4Muxer.Builder` and `FragmentedMp4Muxer.Builder`.
|
||||
* `Mp4Muxer.addTrack()` and `FragmentedMp4Muxer.addTrack()` now return an
|
||||
`int` track ID instead of a `TrackToken`.
|
||||
* `Mp4Muxer` and `FragmentedMp4Muxer` no longer implement `Muxer`
|
||||
interface.
|
||||
* Disable `Mp4Muxer` sample batching and copying by default.
|
||||
* Fix a bug in `FragmentedMp4Muxer` that creates a lot of fragments when
|
||||
only audio track is written.
|
||||
* Session:
|
||||
* Keep foreground service state for an additional 10 minutes when playback
|
||||
pauses, stops or fails. This allows users to resume playback within this
|
||||
timeout without risking foreground service restrictions on various
|
||||
devices. Note that simply calling `player.pause()` can no longer be used
|
||||
to stop the foreground service before `stopSelf()` when overriding
|
||||
`onTaskRemoved`, use `MediaSessionService.pauseAllPlayersAndStopSelf()`
|
||||
instead.
|
||||
* Keep notification visible when playback enters an error or stopped
|
||||
state. The notification is only removed if the playlist is cleared or
|
||||
the player is released.
|
||||
* Improve handling of Android platform MediaSession actions ACTION_PLAY
|
||||
and ACTION_PAUSE to only set one of them according to the available
|
||||
commands and also accept if only one of them is set.
|
||||
* Add `Context` as a parameter to
|
||||
`MediaButtonReceiver.shouldStartForegroundService`
|
||||
([#1887](https://github.com/androidx/media/issues/1887)).
|
||||
* Fix bug where calling a `Player` method on a `MediaController` connected
|
||||
to a legacy session dropped changes from a pending update.
|
||||
* Make `MediaSession.setSessionActivity(PendingIntent)` accept null
|
||||
([#2109](https://github.com/androidx/media/issues/2109)).
|
||||
* Fix bug where a stale notification stays visible when the playlist is
|
||||
cleared ([#2211](https://github.com/androidx/media/issues/2211)).
|
||||
* UI:
|
||||
* Add `PlayerSurface` Composable to `media3-ui-compose` module.
|
||||
* Add `PlayPauseButtonState`, `NextButtonState`, `PreviousButtonState`,
|
||||
`RepeatButtonState`, `ShuffleButtonState` classes and the corresponding
|
||||
`rememberPlayPauseButtonState`, `rememberNextButtonState`,
|
||||
`rememberPreviousButtonState`, `rememberRepeatButtonState`,
|
||||
`rememberShuffleButtonState` Composables to `media3-ui-compose` module.
|
||||
* Add state holders and composables to the `media3-ui-compose` module for
|
||||
`PlayerSurface`, `PresentationState`, `PlayPauseButtonState`,
|
||||
`NextButtonState`, `PreviousButtonState`, `RepeatButtonState`,
|
||||
`ShuffleButtonState` and `PlaybackSpeedState`.
|
||||
* Downloads:
|
||||
* Fix bug in `CacheWriter` that leaves data sources open and cache areas
|
||||
locked in case the data source throws an `Exception` other than
|
||||
`IOException`
|
||||
([#9760](https://github.com/google/ExoPlayer/issues/9760)).
|
||||
* HLS extension:
|
||||
* Add a first version of `HlsInterstitialsAdsLoader`. The ads loader reads
|
||||
the HLS interstitials of an HLS media playlist and maps them to the
|
||||
@ -361,19 +241,40 @@ This release includes the following changes since the
|
||||
* Add `HlsInterstitialsAdsLoader.AdsMediaSourceFactory`. Apps can use it
|
||||
to create `AdsMediaSource` instances that use an
|
||||
`HlsInterstitialsAdsLoader` in a convenient and safe way.
|
||||
* Parse `SUPPLEMENTAL-CODECS` tag from HLS playlist to detect Dolby Vision
|
||||
formats ([#1785](https://github.com/androidx/media/pull/1785)).
|
||||
* Loosen the condition for seeking to sync positions in an HLS stream
|
||||
([#2209](https://github.com/androidx/media/issues/2209)).
|
||||
* DASH extension:
|
||||
* Add AC-4 Level-4 format support for DASH
|
||||
([#1898](https://github.com/androidx/media/pull/1898)).
|
||||
* Fix issue when calculating the update interval for ad insertion in
|
||||
multi-period live streams
|
||||
([#1698](https://github.com/androidx/media/issues/1698)).
|
||||
* Parse `scte214:supplementalCodecs` attribute from DASH manifest to
|
||||
detect Dolby Vision formats
|
||||
([#1785](https://github.com/androidx/media/pull/1785)).
|
||||
* Improve handling of period transitions in live streams where the period
|
||||
contains media samples beyond the declared period duration
|
||||
([#1698](https://github.com/androidx/media/issues/1698)).
|
||||
* Fix issue where adaptation sets marked with `adaptation-set-switching`
|
||||
but different languages or role flags are merged together
|
||||
([#2222](https://github.com/androidx/media/issues/2222)).
|
||||
* Decoder extensions (FFmpeg, VP9, AV1, etc.):
|
||||
* Add the MPEG-H decoder module which uses the native MPEG-H decoder
|
||||
module to decode MPEG-H audio
|
||||
([#1826](https://github.com/androidx/media/pull/1826)).
|
||||
* MIDI extension:
|
||||
* Plumb custom `AudioSink` and `AudioRendererEventListener` instances into
|
||||
`MidiRenderer`.
|
||||
* Cast extension:
|
||||
* Bump the `play-services-cast-framework` dependency to 21.5.0 to fix a
|
||||
`FLAG_MUTABLE` crash in apps targeting API 34+ on devices with Google
|
||||
Play services installed but disabled
|
||||
([#2178](https://github.com/androidx/media/issues/2178)).
|
||||
* Demo app:
|
||||
* Add `MinimalControls` (`PlayPauseButton`, `NextButton`,
|
||||
`PreviousButton`) and `ExtraControls` (`RepeatButton`, `ShuffleButton`)
|
||||
Composable UI elements to `demo-compose` utilizing
|
||||
`PlayPauseButtonState`, `NextButtonState`, `PreviousButtonState`,
|
||||
`RepeatButtonState`, `ShuffleButtonState`.
|
||||
* Extend `demo-compose` with additional buttons and enhance
|
||||
`PlayerSurface` integration with scaling and shutter support.
|
||||
* Remove deprecated symbols:
|
||||
* Remove deprecated `AudioMixer.create()` method. Use
|
||||
`DefaultAudioMixer.Factory().create()` instead.
|
||||
@ -427,6 +328,47 @@ This release includes the following changes since the
|
||||
`BaseGlShaderProgram` instead.
|
||||
* Remove `Transformer.flattenForSlowMotion`. Use
|
||||
`EditedMediaItem.flattenForSlowMotion` instead.
|
||||
* Removed `ExoPlayer.VideoComponent`, `ExoPlayer.AudioComponent`,
|
||||
`ExoPlayer.TextComponent` and `ExoPlayer.DeviceComponent`.
|
||||
* Removed `androidx.media3.exoplayer.audio.SonicAudioProcessor`.
|
||||
* Removed the following deprecated `DownloadHelper` methods:
|
||||
* Constructor `DownloadHelper(MediaItem, @Nullable MediaSource,
|
||||
TrackSelectionParameters, RendererCapabilities[])`, use
|
||||
`DownloadHelper(MediaItem, @Nullable MediaSource,
|
||||
TrackSelectionParameters, RendererCapabilitiesList)` instead.
|
||||
* `getRendererCapabilities(RenderersFactory)`, equivalent
|
||||
functionality can be achieved by creating a
|
||||
`DefaultRendererCapabilitiesList` with a `RenderersFactory`, and
|
||||
calling `DefaultRendererCapabilitiesList.getRendererCapabilities()`.
|
||||
* Removed
|
||||
`PlayerNotificationManager.setMediaSessionToken(MediaSessionCompat)`
|
||||
method. Use
|
||||
`PlayerNotificationManager.setMediaSessionToken(MediaSession.Token)` and
|
||||
pass in `(MediaSession.Token) compatToken.getToken()` instead.
|
||||
|
||||
### 1.6.0-rc02 (2025-03-18)
|
||||
|
||||
Use the 1.6.0 [stable version](#160-2025-03-26).
|
||||
|
||||
### 1.6.0-rc01 (2025-03-12)
|
||||
|
||||
Use the 1.6.0 [stable version](#160-2025-03-26).
|
||||
|
||||
### 1.6.0-beta01 (2025-02-26)
|
||||
|
||||
Use the 1.6.0 [stable version](#160-2025-03-26).
|
||||
|
||||
### 1.6.0-alpha03 (2025-02-06)
|
||||
|
||||
Use the 1.6.0 [stable version](#160-2025-03-26).
|
||||
|
||||
### 1.6.0-alpha02 (2025-01-30)
|
||||
|
||||
Use the 1.6.0 [stable version](#160-2025-03-26).
|
||||
|
||||
### 1.6.0-alpha01 (2024-12-20)
|
||||
|
||||
Use the 1.6.0 [stable version](#160-2025-03-26).
|
||||
|
||||
## 1.5
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user