- ExoPlayer:
- Add
Format.selectionPriorityrepresenting the relative preference of theFormatin track selection (#3236).
- Add
- Track Selection:
- Fix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.
- Extractors:
- Audio:
- Remove fallback path of EAC3-JOC to EAC3 for playback on Google Pixel devices as their standard EAC3 decoders cannot decode EAC3-JOC streams (#3257).
- Video:
- Fix bug in
VideoFrameReleaseHelperwhere display changes could trigger redundantChoreographercallbacks and excessive CPU wakeups on the main thread.
- Fix bug in
- Session:
- Fix double-downscaling of artwork in
MediaSessionwhen the image size is close to the platform limit, resolving blurriness in notifications (#3134). - Fix
ForegroundServiceStartNotAllowedExceptioncrash inMediaNotificationManagerwhen an asynchronous artwork bitmap load callback attempts to start the foreground service while the app is in the background (#3270). - Fix an issue where
PositionInfoobjects received by aMediaControllerwere missing their originalTimelineUIDs. The session now reliably translates and propagates these UIDs during state updates.
- Fix double-downscaling of artwork in
- UI:
- Fix shutter suppression bug in
PlayerViewand ComposePresentationStatethat caused crashes on timelines that do not support period UID lookup (#3264).
- Fix shutter suppression bug in
- HLS extension:
- DASH extension:
- Add support for parsing multiple
Locationelements from the manifest (MPD) and performing location fallback inDashMediaSourcewhen manifest loads fail.
- Add support for parsing multiple
- Decoder extensions (FFmpeg, VP9, AV1, etc.):
- Add monochrome video support to bundled dav1d JNI.
- Cast extension:
- Add
MediaRouteButtonStateandrememberMediaRouteButtonStateto support observing the visibility state of the media route picker, and addstateparameter toMediaRouteButton(3172). - Fix bug where
RemoteCastPlayercould get permanently stuck in a track-masking state after a track selection, causing it to ignore subsequent track updates from the Cast receiver (#3237). - Fix bug where
DefaultMediaItemConverterthrows aNullPointerExceptionwhen trying to join a cast session started from a non-Media3 sender. - Prevent
CastPlayerfrom transferringMediaItemsthat are not playable when changing the active player (#3199).
- Add
- Test Utilities:
- Add
setPlaybackLoopertoTestExoPlayerBuilder.
- Add
- Remove deprecated symbols:
- Remove
androidx.media3.common.C.generateAudioSessionIdV21. Useandroidx.media3.common.util.Util.generateAudioSessionIdinstead.
- Remove