- Common Library:
- Fix bug in
SimpleBasePlayerwhere setting a newcurrentMediaItemIndexinStateaftersetPlaylistwithnullMediaMetadatadoes not reevaluate the metadata (#1940).
- Fix bug in
- ExoPlayer:
- Add experimental 'ExoPlayer' pre-warming support for playback using
MediaCodecVideoRenderer. You can configureDefaultRenderersFactorythroughexperimentalSetEnableMediaCodecVideoRendererPrewarmingto provide a secondaryMediaCodecVideoRenderertoExoPlayer. If enabled,ExoPlayerpre-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
DefaultRenderersFactoryadd twoMetadataRendererinstances to enable apps to receive two different schemes of metadata by default. - Initialize
DeviceInfoand device volume asynchronously (if enabled usingsetDeviceVolumeControlEnabled). These values aren't available instantly afterExoPlayer.Builder.build(), andPlayer.Listenernotifies changes throughonDeviceInfoChangedandonDeviceVolumeChanged. - Reevaluate whether the ongoing load of a chunk should be cancelled when playback is paused (#1785).
- Add experimental 'ExoPlayer' pre-warming support for playback using
- 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 by the user of the device. Apps can opt-out of contributing to platform diagnostics for Transformer withTransformer.Builder.setUsePlatformDiagnostics(false). - Split
InAppMuxerintoInAppMp4MuxerandInAppFragmentedMp4Muxer. You useInAppMp4Muxerto produce a non-fragmented MP4 file, whileInAppFragmentedMp4Muxeris for producing a fragmented MP4 file. - Move
Muxerinterface frommedia3-muxertomedia3-transformer. - Add support for transcoding and transmuxing Dolby Vision (profile 8) format.
- Enable support for Android platform diagnostics using
- Extractors:
- Fix handling of NAL units with lengths expressed in 1 or 2 bytes (rather than 4).
- Fix
ArrayIndexOutOfBoundsExceptionin MP4 edit lists when the edit list starts at a non-sync frame with no preceding sync frame (#2062).
- Audio:
- Don't bypass
SonicAudioProcessorwhenSpeedChangingAudioProcessoris configured with default parameters. - Fix underflow in
Sonic#getOutputSize()that could causeDefaultAudioSinkto stall. - Fix
MediaCodecAudioRenderer.getDurationToProgressUs()andDecoderAudioRenderer.getDurationToProgressUs()so that seeks correctly reset the provided durations.
- Don't bypass
- Text:
- TTML: Add support for referencing
tts:originandtts:extentusingstyle(#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).
- Add support for VobSub subtitles (#8260).
- Fix playback hanging when a playlist contains clipped items with CEA-608 or CEA-708 captions.
- Fix
IllegalStateExceptionwhen an SSA file contains a cue with zero duration (start and end time equal) (#2052). - Suppress (and log) subtitle parsing errors when subtitles are muxed into the same container as audio and video (#2052).
- TTML: Add support for referencing
- Muxers:
- Renamed
setSampleCopyEnabled()method tosetSampleCopyingEnabled()in bothMp4Muxer.BuilderandFragmentedMp4Muxer.Builder. Mp4Muxer.addTrack()andFragmentedMp4Muxer.addTrack()now return aninttrack ID instead of aTrackToken.Mp4MuxerandFragmentedMp4Muxerno longer implementMuxerinterface.
- Renamed
- Session:
- Fix bug where calling a
Playermethod on aMediaControllerconnected to a legacy session dropped changes from a pending update.
- Fix bug where calling a
- UI:
- Add
PresentationStatestate holder class and the correspondingrememberPresentationStateComposable tomedia3-ui-compose.
- Add
- HLS Extension:
- Parse
SUPPLEMENTAL-CODECStag from HLS playlist to detect Dolby Vision formats (#1785).
- Parse
- DASH Extension:
- Fix issue when calculating the update interval for ad insertion in multi-period live streams (#1698).
- Parse
scte214:supplementalCodecsattribute from DASH manifest to detect Dolby Vision formats (#1785). - Improve handling of period transitions in live streams where the period contains media samples beyond the declared period duration (#1698).
- Demo app:
- Use
PresentationStateto control the aspect ratio ofPlayerSurfaceComposable. This depends on the ContentScale type and covers it with a shutter-overlay before the first frame is rendered.
- Use
- Remove deprecated symbols:
- Removed
ExoPlayer.VideoComponent,ExoPlayer.AudioComponent,ExoPlayer.TextComponentandExoPlayer.DeviceComponent.
- Removed