- Common Library:
- Upgrade
androidx.annotation:annotation-experimentalto1.3.1. This also introduces a transitive dependency on the Kotlin standard library frommedia3-common. Apps can downgrade to remove this dependency if they want. Fixes https://issuetracker.google.com/251172715. - Move
ExoPlayer.setAudioAttributesto thePlayerinterface.
- Upgrade
- ExoPlayer:
- Add additional fields to Common Media Client Data (CMCD) logging: next object request (
nor) and next range request (nrr)(#8699). - Add functionality to transmit Common Media Client Data (CMCD) data using query parameters (#553).
- Fix
ConcurrentModificationExceptioninExperimentalBandwidthMeter(#612). - Add
MediaPeriodIdparameter toCompositeMediaSource.getMediaTimeForChildMediaTime. - Support
ClippingMediaSource(and other sources with period/window time offsets) inConcatenatingMediaSource2(#11226). - Change
BaseRenderer.onStreamChanged()to also receive aMediaPeriodIdargument.
- Add additional fields to Common Media Client Data (CMCD) logging: next object request (
- Transformer:
- Changed
frameRateanddurationUsparameters ofSampleConsumer.queueInputBitmaptoTimestampIterator.
- Changed
- Extractors:
- Add
BmpExtractor. - Add
WebpExtractor. - Add
HeifExtractor. - Add QuickTime classic
support toMp4Extractor.
- Add
- Audio:
- Add support for Opus gapless metadata during offload playback.
- Allow renderer recovery by disabling offload if failed at first write (#627).
- Enable Offload Scheduling by default for audio-only offloaded playback.
- Delete
ExoPlayer.experimentalSetOffloadSchedulingEnabledandAudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged. - Renamed
onExperimentalSleepingForOffloadChangedasonSleepingForOffloadChangedandonExperimentalOffloadedPlaybackasonOffloadedPlayback. - Move audio offload mode related
TrackSelectionParametersinterfaces
and definitions to an innerAudioOffloadPreferencesclass.
- Effect:
- Changed
frameRateanddurationUsparameters ofVideoFrameProcessor.queueInputBitmaptoTimestampIterator.
- Changed
- IMA extension:
- Fix bug where a multi-period DASH live stream that is not the first item in a playlist can throw an exception (#571).
- Release StreamManager before calling
AdsLoader.destroy() - Bump IMA SDK version to 3.31.0.
- Session:
- Set the notifications foreground service behavior to
FOREGROUND_SERVICE_IMMEDIATEinDefaultMediaNotificationProvider(#167). - Use only
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()above API 31 to avoid problems with deprecated API on Samsung devices (#167). - Use the media notification controller as proxy to set available commands and custom layout used to populate the notification and the platform session.
- Convert media button events that are received by
MediaSessionService.onStartCommand()within Media3 instead of routing them to the platform session and back to Media3. With this, the caller controller is always the media notification controller and apps can easily recognize calls coming from the notification in the same way on all supported API levels. - Fix bug where
MediaController.getCurrentPosition()is not advancing when connected to a legacyMediaSessionCompat. - Add
MediaLibrarySession.getSubscribedControllers(mediaId)for convenience. - Override
MediaLibrarySession.Callback.onSubscribe()to assert the availability of the parent Id for which the controller subscribes. If successful, the subscription is accepted andnotifyChildrenChanged()is called immediately to inform the browser (#561).
- Set the notifications foreground service behavior to
- RTSP Extension:
- Leanback extension:
- Fix bug where disabling a surface can cause an
ArithmeticExceptionin Leanback code (#617).
- Fix bug where disabling a surface can cause an