This release includes 1 breaking change for platform teams planning a safe upgrade.
Published 4mo
Media Servers
✓ No known CVEs patched
✓ No known CVEs patched in this version
Topics
android
exoplayer
java
media3
media3-exoplayer
media3-transformer
+1 more
mediaplayer
Summary
AI summaryExoPlayer now dynamically throttles work after audio start, fixes multiple playback and resource leaks, Extractors add MP3 LAME ReplayGain parsing, and Audio drops legacy AC-4 profiles.
Full changelog
- Common Library:
- Support date-time strings with only hours in the timezone offset (#2929).
- ExoPlayer:
- Allow dynamic scheduling to slow
doSomeWorkinterval only after audio starts to support smoother A/V sync at beginning of playback. - Fix bug in
DefaultLoadErrorHandlingPolicywhereFileNotFoundExceptionand similar exception types were retried multiple times. - Fix bug with dynamic scheduling where the calculated time for the next
doSomeWorkwas mistakenly reduced by the elapsed time of the current iteration ofdoSomeWork. Addressing this hopefully extends CPU idle time and saves power. - Fix issue where some playbacks of Dolby Vision files fail when attempting to use a fallback AVC or HEVC codec.
- Fix bug where loading continues after playback ended when removing the currently playing item from a playlist (#2873).
- Avoid leaking
MediaIteminstances when repeatedly usingExoPlayer.replaceMediaItemon the same item (#2993). - Prevent potential ANRs caused by emergency wake lock releases (#2979).
- Allow dynamic scheduling to slow
- Extractors:
- MP3: Parse LAME ReplayGain data (#2840).
- Audio:
- Correctly remove support for
AC4Profile22and other legacy profiles when assessing AC-4 decoder support in Automotive scenarios (#2609).
- Correctly remove support for
- Video:
- Discard video codecs on devices below API 30 when the content frame rate changes to avoid stuttering playback (#2941).
- Text:
- VobSub: Fix some missing subtitles by correctly handling SPUs that either contain only a single control sequence, or have critical info split across multiple control sequences (#2935).
- IMA extension:
- Bug fix: Corrected an issue where the ad MIME type did not match the MIME type provided in the IMA LOADED event. The fix now maps the ad MIME type using the ad pod index and ad position.
- Add a null check before accessing result of
getAdsManager()andAdEvent.getAd().
- Session:
- Fix bug where stopping a
MediaControllerconnected to a platform session crashed the app if stop happened during ad playback (#2948). - Add additional verifications on
extrasBundleinstances in various classes to guard against malformedBundleinstances sent from other processes. - Fix issue where missing commands for
COMMAND_SEEK_NEXTorCOMMAND_SEEK_BACKcan cause gaps in the system media notification (#2976). - Move bitmap scaling for notification icon off the main thread (#2829).
- Fix bug where author, writer and composer were not used as a fallback when converting from legacy
MediaMetadataCompatandMediaDescriptionCompat(#3018).
- Fix bug where stopping a
- Downloads:
- Fix potential infinite loops when a
PriorityTooLowExceptionis handled bySegmentDownloader(for DASH, HLS and SmoothStreaming). Custom overrides ofSegmentDownloaderusing the protectedexecutemethod need to provide their task wrapped in aSupplierso it can be recreated (#2931).
- Fix potential infinite loops when a
- HLS extension:
- Pass the raw asset list JSON document to
Listener.onAssetListLoadCompletedcallback. This is a breaking change in an unstable API that requires apps that implement this callback to add an additional argument of typeJSONObject(#2950).
- Pass the raw asset list JSON document to
- RTSP extension:
- Correctly handle RTP Packets with timestamps that wrap around (#2930).
- Decoder extensions (FFmpeg, VP9, AV1, etc.):
- Fix potential
NullPointerExceptionthat can occur when seeking prior to processing the first video frame (#2965).
- Fix potential
- Cast extension:
- Fix bug preventing the
RemoteCastPlayertimeline from updating correctly when replacing the playlist.
- Fix bug preventing the
Breaking Changes
- HLS extension: `Listener.onAssetListLoadCompleted` now requires an additional `JSONObject` argument (unstable API break).
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About androidx/media
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]