Skip to content

chore(deps): bump the android-deps group across 1 directory with 12 updates - #44

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/gradle/android/android-deps-f85d973692
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/gradle/android/android-deps-f85d973692

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Bumps the android-deps group with 12 updates in the /android directory:

Package From To
gradle-wrapper 9.6.1 9.8.0
androidx.core:core-ktx 1.19.0 1.19.1
androidx.compose:compose-bom 2026.06.00 2026.09.00
androidx.navigation:navigation-compose 2.9.8 2.10.2
androidx.media3:media3-exoplayer 1.10.1 1.11.1
androidx.media3:media3-exoplayer-hls 1.10.1 1.11.1
androidx.media3:media3-session 1.10.1 1.11.1
androidx.media3:media3-ui 1.10.1 1.11.1
androidx.media3:media3-exoplayer-hls 1.10.1 1.11.1
androidx.media3:media3-session 1.10.1 1.11.1
androidx.media3:media3-ui 1.10.1 1.11.1
com.squareup.okhttp3:okhttp 5.4.0 5.5.0
com.squareup.okhttp3:logging-interceptor 5.4.0 5.5.0
com.squareup.okhttp3:logging-interceptor 5.4.0 5.5.0
com.android.application 9.2.1 9.4.1
org.jetbrains.kotlin.plugin.compose 2.4.0 2.4.20

Updates gradle-wrapper from 9.6.1 to 9.8.0

Release notes

Sourced from gradle-wrapper's releases.

9.8.0

The Gradle team is excited to announce Gradle 9.8.0.

Here are the highlights of this release:

  • Java 27 support
  • Maven mirror settings reuse
  • Linked problem locations in build output

Read the Release Notes

We would like to thank the following community members for their contributions to this release of Gradle: Aman Gautam, Björn Kautler, Eng Zer Jun, Hashim Khan, Julian Krannich, KBS, Labh R Jethe, Mark Dodgson, Maxim, monkey, nataphon-ktsystems, Paul King, Qiu Tian, rg_sandesh, Roberto Perez Alcolea, Sean, Zongle Wang.

Upgrade instructions

Switch your build to use Gradle 9.8.0 by updating your wrapper:

./gradlew :wrapper --gradle-version=9.8.0 && ./gradlew :wrapper

See the Gradle 9.x upgrade guide to learn about deprecations, breaking changes and other considerations when upgrading.

For Java, Groovy, Kotlin and Android compatibility, see the full compatibility notes.

Reporting problems

If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines. If you're not sure you're encountering a bug, please use the forum.

We hope you will build happiness with Gradle, and we look forward to your feedback via Twitter or on GitHub.

9.8.0 RC3

The Gradle team is excited to announce Gradle 9.8.0 RC3.

Here are the highlights of this release:

... (truncated)

Commits
  • a927be5 Add the Develocity plugin back to the Android smoke tests (#39273)
  • eaee500 Add the Develocity plugin back to the Android smoke tests
  • 189b672 Route everything still hitting Maven Central through the mirror (#39257)
  • 36b1814 Add back mavenCentral to doc snippets
  • 2740c2d Update Gradle wrapper to version 9.8.0-rc-3 (#39264)
  • 2099383 Update Gradle wrapper to version 9.8.0-rc-3
  • c80202f Route everything still hitting Maven Central through the mirror
  • 3f6a534 Fix when a best practice was introduced (#39253)
  • 9efc9ed Fix when a best practice was introduced
  • 459e143 Route integration test dependencies through the repository mirror (#39239)
  • Additional commits viewable in compare view

Updates androidx.core:core-ktx from 1.19.0 to 1.19.1

Updates androidx.compose:compose-bom from 2026.06.00 to 2026.09.00

Updates androidx.navigation:navigation-compose from 2.9.8 to 2.10.2

Updates androidx.media3:media3-exoplayer from 1.10.1 to 1.11.1

Release notes

Sourced from androidx.media3:media3-exoplayer's releases.

1.11.1

  • ExoPlayer:
    • Move the flag to enable/disable HAGC metadata for progressive media from MediaSource.Factory to ExtractorsFactory. The previous setExperimentalEnableHagcPlayback method is removed and replaced by ExtractorsFactory.setParseHagcMetadata. This also resolves an issue where disabling didn't work for Matroska/WebM containers.
    • Fix a playback stall caused when prewarming a non-transitioning secondary renderer.
    • Fix pre-warming issue where the Surface should be returned to the primary renderer when a seek resets and disables both renderers.
    • Fix ArrayIndexOutOfBoundsException when a live timeline refresh moves the default position past a server-side inserted ad that is currently being played (#3348).
    • Fix a scrubbing mode issue where stale video frames could be briefly displayed when seeking with ScrubbingModeParameters.allowSkippingMediaCodecFlush enabled.
  • Extractors:
    • Matroska: Fix issue where Tracks placed after clusters wouldn't result in a seekable timeline (#3377).
  • Audio:
    • Fix buffer size calculation in SilenceSkippingAudioProcessor so that the minimum silence duration is not incorrectly scaled down by the frame size (#3271).
    • Fix 8-bit PCM handling in PcmAudioUtil to treat samples as unsigned as defined by Android (#3271).
    • Fix offload issue in which playback could stall during pre-roll or gapless transitions due to limited hardware buffer sizes.
    • Fix bug in DefaultAudioSink where release count doesn't decrease when playback thread is no longer alive (#3338).
  • Session:
    • Fix NullPointerException when an in-process MediaController is released from a Player.Listener callback (#3375).
    • Fix deadlock on the main thread when a legacy MediaBrowser connects to a service returning an asynchronous result from onGetLibraryRoot() or onConnectAsync() (#3393).
  • HLS extension:
    • Fix calculation of content resume offset when the target segment for snapping is not yet in the playlist (#3322).
    • Fix an issue where a fully consumed HlsMediaChunk retries loading on receiving EOFException from the extractor (#3350).
  • DASH extension:
    • Fix incorrect sample timestamp calculation for image tracks with a presentationTimeOffset (#3334).
  • Decoder extensions (FFmpeg, VP9, AV1, etc.):
    • Opus: Fix memory corruption when multiple OpusDecoder instances are initialized concurrently.
    • MPEG-H: Fix memory leak, truncation of non-ASCII characters, and potential native crash under low-memory conditions when sending commands to the MpeghUiManager (#3365).

1.11.0

  • Common library:
    • Add Format.channelMask to explicitly represent the audio channel mask, and a new Util.getAudioTrackChannelConfig(Format) overload to safely resolve it.
    • Upgrade Kotlin from 2.0.20 to 2.2.0.
  • ExoPlayer:
    • Fix a timing-dependent concurrency bug that could cause an IllegalStateException or IndexOutOfBoundsException in ExoPlayer.
    • Relax ad group count checks in AdsMediaSource to allow the ad group count to decrease when an ad group is fully processed (hasUnplayedAds() is false), accommodating dynamic ad group resizing during reset workflows.
    • Add getFlags() and FLAG_STRICT_DURATION to SampleStream to allow streams to report flags, and update renderers to check these flags dynamically.
    • Fall back to the frame rate estimator in MediaCodecVideoRenderer and to the codec output format in MediaCodecAudioRenderer to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.
    • Remove clipping of content for client-side inserted ads in the core player. Instead, AdsMediaSource takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.
    • Mark tracks with a well-formed but unrecognized codec profile or level as supported=NO_EXCEEDS_CAPABILITIES instead of supported=YES (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.
    • Add DefaultPreloadManager.SimpleRankingDataComparator, which is a RankingDataComparator that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its compare(Integer, Integer) method if a more fine-tuned comparison logic is needed. The custom SimpleRankingDataComparator can be injected via a new constructor of DefaultPreloadManager.Builder.
    • Reduce the OOM risk of DefaultLoadControl.prioritizeTimeOverSizeThresholds by falling back to buffer byte size limits if available heap memory seems tight.
    • Align handling of still images when MediaItem.imageDurationUs is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).
    • Add MediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter) to plumb BandwidthMeter to MediaSource. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use BandwidthMeter.getTransferListener() to get parity to the old method.
    • In DefaultBandwidthMeter, add support for a custom InitialBitrateSupplier. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of DefaultBandwidthMeter and on network type changes. The supplier can be set via DefaultBandwidthMeter.Builder.setInitialBitrateSupplier().
    • Enable dynamic scheduling by default. ExoPlayer playback work loop will run dynamically as opposed to on a static interval.
    • Remove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.
    • In DefaultBandwidthMeter, optimize getInitialBitrateCountryGroupAssignment to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.
    • Fix AudioTrack initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (#3207).
    • Fix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.
    • Add experimental ExoPlayer.Builder.enablePerStreamMediaProgression() to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming "stuck" with very short content (#3122).
    • Fix race condition related to audio session id usage where the initial audio session id auto-generated by ExoPlayer would be used instead of the value set by setAudioSessionId (#3241).

... (truncated)

Changelog

Sourced from androidx.media3:media3-exoplayer's changelog.

1.11.1 (2026-09-10)

This release includes the following changes since the 1.11.0 release:

  • ExoPlayer:
    • Move the flag to enable/disable HAGC metadata for progressive media from MediaSource.Factory to ExtractorsFactory. The previous setExperimentalEnableHagcPlayback method is removed and replaced by ExtractorsFactory.setParseHagcMetadata. This also resolves an issue where disabling didn't work for Matroska/WebM containers.
    • Fix a playback stall caused when prewarming a non-transitioning secondary renderer.
    • Fix pre-warming issue where the Surface should be returned to the primary renderer when a seek resets and disables both renderers.
    • Fix ArrayIndexOutOfBoundsException when a live timeline refresh moves the default position past a server-side inserted ad that is currently being played (#3348).
    • Fix a scrubbing mode issue where stale video frames could be briefly displayed when seeking with ScrubbingModeParameters.allowSkippingMediaCodecFlush enabled.
  • Extractors:
    • Matroska: Fix issue where Tracks placed after clusters wouldn't result in a seekable timeline (#3377).
  • Audio:
    • Fix buffer size calculation in SilenceSkippingAudioProcessor so that the minimum silence duration is not incorrectly scaled down by the frame size (#3271).
    • Fix 8-bit PCM handling in PcmAudioUtil to treat samples as unsigned as defined by Android (#3271).
    • Fix offload issue in which playback could stall during pre-roll or gapless transitions due to limited hardware buffer sizes.
    • Fix bug in DefaultAudioSink where release count doesn't decrease when playback thread is no longer alive (#3338).
  • Session:
    • Fix NullPointerException when an in-process MediaController is released from a Player.Listener callback (#3375).
    • Fix deadlock on the main thread when a legacy MediaBrowser connects to a service returning an asynchronous result from onGetLibraryRoot() or onConnectAsync() (#3393).
  • HLS extension:
    • Fix calculation of content resume offset when the target segment for snapping is not yet in the playlist (#3322).
    • Fix an issue where a fully consumed HlsMediaChunk retries loading on

... (truncated)

Commits
  • 8c6678b Bump version to 1.11.1
  • 4b610b1 Update release notes for 1.11.1
  • e9757e6 Fix deadlock when legacy MediaBrowser connects to async root or session
  • 9b8000d Merge pull request #3271 from nift4:oddmath
  • 6ada45c Add end-to-end test for ITU-T T.35 track muxing
  • d23ba39 Normalize non-positive frame rates in MediaFormatUtil
  • 383e770 Generalize useInputBuffer to useBuffer
  • 71e4112 MPEG-H: Fix UI manager command encoding and memory leak
  • eb2965c Matroska: Fix seekable timeline with Tracks after Clusters
  • a827bd5 Fix incorrect render of stale frames after a seek with skipped flush.
  • Additional commits viewable in compare view

Updates androidx.media3:media3-exoplayer-hls from 1.10.1 to 1.11.1

Release notes

Sourced from androidx.media3:media3-exoplayer-hls's releases.

1.11.1

  • ExoPlayer:
    • Move the flag to enable/disable HAGC metadata for progressive media from MediaSource.Factory to ExtractorsFactory. The previous setExperimentalEnableHagcPlayback method is removed and replaced by ExtractorsFactory.setParseHagcMetadata. This also resolves an issue where disabling didn't work for Matroska/WebM containers.
    • Fix a playback stall caused when prewarming a non-transitioning secondary renderer.
    • Fix pre-warming issue where the Surface should be returned to the primary renderer when a seek resets and disables both renderers.
    • Fix ArrayIndexOutOfBoundsException when a live timeline refresh moves the default position past a server-side inserted ad that is currently being played (#3348).
    • Fix a scrubbing mode issue where stale video frames could be briefly displayed when seeking with ScrubbingModeParameters.allowSkippingMediaCodecFlush enabled.
  • Extractors:
    • Matroska: Fix issue where Tracks placed after clusters wouldn't result in a seekable timeline (#3377).
  • Audio:
    • Fix buffer size calculation in SilenceSkippingAudioProcessor so that the minimum silence duration is not incorrectly scaled down by the frame size (#3271).
    • Fix 8-bit PCM handling in PcmAudioUtil to treat samples as unsigned as defined by Android (#3271).
    • Fix offload issue in which playback could stall during pre-roll or gapless transitions due to limited hardware buffer sizes.
    • Fix bug in DefaultAudioSink where release count doesn't decrease when playback thread is no longer alive (#3338).
  • Session:
    • Fix NullPointerException when an in-process MediaController is released from a Player.Listener callback (#3375).
    • Fix deadlock on the main thread when a legacy MediaBrowser connects to a service returning an asynchronous result from onGetLibraryRoot() or onConnectAsync() (#3393).
  • HLS extension:
    • Fix calculation of content resume offset when the target segment for snapping is not yet in the playlist (#3322).
    • Fix an issue where a fully consumed HlsMediaChunk retries loading on receiving EOFException from the extractor (#3350).
  • DASH extension:
    • Fix incorrect sample timestamp calculation for image tracks with a presentationTimeOffset (#3334).
  • Decoder extensions (FFmpeg, VP9, AV1, etc.):
    • Opus: Fix memory corruption when multiple OpusDecoder instances are initialized concurrently.
    • MPEG-H: Fix memory leak, truncation of non-ASCII characters, and potential native crash under low-memory conditions when sending commands to the MpeghUiManager (#3365).

1.11.0

  • Common library:
    • Add Format.channelMask to explicitly represent the audio channel mask, and a new Util.getAudioTrackChannelConfig(Format) overload to safely resolve it.
    • Upgrade Kotlin from 2.0.20 to 2.2.0.
  • ExoPlayer:
    • Fix a timing-dependent concurrency bug that could cause an IllegalStateException or IndexOutOfBoundsException in ExoPlayer.
    • Relax ad group count checks in AdsMediaSource to allow the ad group count to decrease when an ad group is fully processed (hasUnplayedAds() is false), accommodating dynamic ad group resizing during reset workflows.
    • Add getFlags() and FLAG_STRICT_DURATION to SampleStream to allow streams to report flags, and update renderers to check these flags dynamically.
    • Fall back to the frame rate estimator in MediaCodecVideoRenderer and to the codec output format in MediaCodecAudioRenderer to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.
    • Remove clipping of content for client-side inserted ads in the core player. Instead, AdsMediaSource takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.
    • Mark tracks with a well-formed but unrecognized codec profile or level as supported=NO_EXCEEDS_CAPABILITIES instead of supported=YES (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.
    • Add DefaultPreloadManager.SimpleRankingDataComparator, which is a RankingDataComparator that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its compare(Integer, Integer) method if a more fine-tuned comparison logic is needed. The custom SimpleRankingDataComparator can be injected via a new constructor of DefaultPreloadManager.Builder.
    • Reduce the OOM risk of DefaultLoadControl.prioritizeTimeOverSizeThresholds by falling back to buffer byte size limits if available heap memory seems tight.
    • Align handling of still images when MediaItem.imageDurationUs is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).
    • Add MediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter) to plumb BandwidthMeter to MediaSource. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use BandwidthMeter.getTransferListener() to get parity to the old method.
    • In DefaultBandwidthMeter, add support for a custom InitialBitrateSupplier. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of DefaultBandwidthMeter and on network type changes. The supplier can be set via DefaultBandwidthMeter.Builder.setInitialBitrateSupplier().
    • Enable dynamic scheduling by default. ExoPlayer playback work loop will run dynamically as opposed to on a static interval.
    • Remove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.
    • In DefaultBandwidthMeter, optimize getInitialBitrateCountryGroupAssignment to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.
    • Fix AudioTrack initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (#3207).
    • Fix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.
    • Add experimental ExoPlayer.Builder.enablePerStreamMediaProgression() to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming "stuck" with very short content (#3122).
    • Fix race condition related to audio session id usage where the initial audio session id auto-generated by ExoPlayer would be used instead of the value set by setAudioSessionId (#3241).

... (truncated)

Changelog

Sourced from androidx.media3:media3-exoplayer-hls's changelog.

1.11.1 (2026-09-10)

This release includes the following changes since the 1.11.0 release:

  • ExoPlayer:
    • Move the flag to enable/disable HAGC metadata for progressive media from MediaSource.Factory to ExtractorsFactory. The previous setExperimentalEnableHagcPlayback method is removed and replaced by ExtractorsFactory.setParseHagcMetadata. This also resolves an issue where disabling didn't work for Matroska/WebM containers.
    • Fix a playback stall caused when prewarming a non-transitioning secondary renderer.
    • Fix pre-warming issue where the Surface should be returned to the primary renderer when a seek resets and disables both renderers.
    • Fix ArrayIndexOutOfBoundsException when a live timeline refresh moves the default position past a server-side inserted ad that is currently being played (#3348).
    • Fix a scrubbing mode issue where stale video frames could be briefly displayed when seeking with ScrubbingModeParameters.allowSkippingMediaCodecFlush enabled.
  • Extractors:
    • Matroska: Fix issue where Tracks placed after clusters wouldn't result in a seekable timeline (#3377).
  • Audio:
    • Fix buffer size calculation in SilenceSkippingAudioProcessor so that the minimum silence duration is not incorrectly scaled down by the frame size (#3271).
    • Fix 8-bit PCM handling in PcmAudioUtil to treat samples as unsigned as defined by Android (#3271).
    • Fix offload issue in which playback could stall during pre-roll or gapless transitions due to limited hardware buffer sizes.
    • Fix bug in DefaultAudioSink where release count doesn't decrease when playback thread is no longer alive (#3338).
  • Session:
    • Fix NullPointerException when an in-process MediaController is released from a Player.Listener callback (#3375).
    • Fix deadlock on the main thread when a legacy MediaBrowser connects to a service returning an asynchronous result from onGetLibraryRoot() or onConnectAsync() (#3393).
  • HLS extension:
    • Fix calculation of content resume offset when the target segment for snapping is not yet in the playlist (#3322).
    • Fix an issue where a fully consumed HlsMediaChunk retries loading on

... (truncated)

Commits
  • 8c6678b Bump version to 1.11.1
  • 4b610b1 Update release notes for 1.11.1
  • e9757e6 Fix deadlock when legacy MediaBrowser connects to async root or session
  • 9b8000d Merge pull request #3271 from nift4:oddmath
  • 6ada45c Add end-to-end test for ITU-T T.35 track muxing
  • d23ba39 Normalize non-positive frame rates in MediaFormatUtil
  • 383e770 Generalize useInputBuffer to useBuffer
  • 71e4112 MPEG-H: Fix UI manager command encoding and memory leak
  • eb2965c Matroska: Fix seekable timeline with Tracks after Clusters
  • a827bd5 Fix incorrect render of stale frames after a seek with skipped flush.
  • Additional commits viewable in compare view

Updates androidx.media3:media3-session from 1.10.1 to 1.11.1

Release notes

Sourced from androidx.media3:media3-session's releases.

1.11.1

  • ExoPlayer:
    • Move the flag to enable/disable HAGC metadata for progressive media from MediaSource.Factory to ExtractorsFactory. The previous setExperimentalEnableHagcPlayback method is removed and replaced by ExtractorsFactory.setParseHagcMetadata. This also resolves an issue where disabling didn't work for Matroska/WebM containers.
    • Fix a playback stall caused when prewarming a non-transitioning secondary renderer.
    • Fix pre-warming issue where the Surface should be returned to the primary renderer when a seek resets and disables both renderers.
    • Fix ArrayIndexOutOfBoundsException when a live timeline refresh moves the default position past a server-side inserted ad that is currently being played (#3348).
    • Fix a scrubbing mode issue where stale video frames could be briefly displayed when seeking with ScrubbingModeParameters.allowSkippingMediaCodecFlush enabled.
  • Extractors:
    • Matroska: Fix issue where Tracks placed after clusters wouldn't result in a seekable timeline (#3377).
  • Audio:
    • Fix buffer size calculation in SilenceSkippingAudioProcessor so that the minimum silence duration is not incorrectly scaled down by the frame size (#3271).
    • Fix 8-bit PCM handling in PcmAudioUtil to treat samples as unsigned as defined by Android (#3271).
    • Fix offload issue in which playback could stall during pre-roll or gapless transitions due to limited hardware buffer sizes.
    • Fix bug in DefaultAudioSink where release count doesn't decrease when playback thread is no longer alive (#3338).
  • Session:
    • Fix NullPointerException when an in-process MediaController is released from a Player.Listener callback (#3375).
    • Fix deadlock on the main thread when a legacy MediaBrowser connects to a service returning an asynchronous result from onGetLibraryRoot() or onConnectAsync() (#3393).
  • HLS extension:
    • Fix calculation of content resume offset when the target segment for snapping is not yet in the playlist (#3322).
    • Fix an issue where a fully consumed HlsMediaChunk retries loading on receiving EOFException from the extractor (#3350).
  • DASH extension:
    • Fix incorrect sample timestamp calculation for image tracks with a presentationTimeOffset (#3334).
  • Decoder extensions (FFmpeg, VP9, AV1, etc.):
    • Opus: Fix memory corruption when multiple OpusDecoder instances are initialized concurrently.
    • MPEG-H: Fix memory leak, truncation of non-ASCII characters, and potential native crash under low-memory conditions when sending commands to the MpeghUiManager (#3365).

1.11.0

  • Common library:
    • Add Format.channelMask to explicitly represent the audio channel mask, and a new Util.getAudioTrackChannelConfig(Format) overload to safely resolve it.
    • Upgrade Kotlin from 2.0.20 to 2.2.0.
  • ExoPlayer:
    • Fix a timing-dependent concurrency bug that could cause an IllegalStateException or IndexOutOfBoundsException in ExoPlayer.
    • Relax ad group count checks in AdsMediaSource to allow the ad group count to decrease when an ad group is fully processed (hasUnplayedAds() is false), accommodating dynamic ad group resizing during reset workflows.
    • Add getFlags() and FLAG_STRICT_DURATION to SampleStream to allow streams to report flags, and update renderers to check these flags dynamically.
    • Fall back to the frame rate estimator in MediaCodecVideoRenderer and to the codec output format in MediaCodecAudioRenderer to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.
    • Remove clipping of content for client-side inserted ads in the core player. Instead, AdsMediaSource takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.
    • Mark tracks with a well-formed but unrecognized codec profile or level as supported=NO_EXCEEDS_CAPABILITIES instead of supported=YES (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.
    • Add DefaultPreloadManager.SimpleRankingDataComparator, which is a RankingDataComparator that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its compare(Integer, Integer) method if a more fine-tuned comparison logic is needed. The custom SimpleRankingDataComparator can be injected via a new constructor of DefaultPreloadManager.Builder.
    • Reduce the OOM risk of DefaultLoadControl.prioritizeTimeOverSizeThresholds by falling back to buffer byte size limits if available heap memory seems tight.
    • Align handling of still images when MediaItem.imageDurationUs is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).
    • Add MediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter) to plumb BandwidthMeter to MediaSource. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use BandwidthMeter.getTransferListener() to get parity to the old method.
    • In DefaultBandwidthMeter, add support for a custom InitialBitrateSupplier. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of DefaultBandwidthMeter and on network type changes. The supplier can be set via DefaultBandwidthMeter.Builder.setInitialBitrateSupplier().
    • Enable dynamic scheduling by default. ExoPlayer playback work loop will run dynamically as opposed to on a static interval.
    • Remove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.
    • In DefaultBandwidthMeter, optimize getInitialBitrateCountryGroupAssignment to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.
    • Fix AudioTrack initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (#3207).
    • Fix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.
    • Add experimental ExoPlayer.Builder.enablePerStreamMediaProgression() to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming "stuck" with very short content (#3122).
    • Fix race condition related to audio session id usage where the initial audio session id auto-generated by ExoPlayer would be used instead of the value set by setAudioSessionId (#3241).

... (truncated)

Changelog

Sourced from androidx.media3:media3-session's changelog.

1.11.1 (2026-09-10)

This release includes the following changes since the 1.11.0 release:

  • ExoPlayer:
    • Move the flag to enable/disable HAGC metadata for progressive media from MediaSource.Factory to ExtractorsFactory. The previous setExperimentalEnableHagcPlayback method is removed and replaced by ExtractorsFactory.setParseHagcMetadata. This also resolves an issue where disabling didn't work for Matroska/WebM containers.
    • Fix a playback stall caused when prewarming a non-transitioning secondary renderer.
    • Fix pre-warming issue where the Surface should be returned to the primary renderer when a seek resets and disables both renderers.
    • Fix ArrayIndexOutOfBoundsException when a live timeline refresh moves the default position past a server-side inserted ad that is currently being played (#3348).
    • Fix a scrubbing mode issue where stale video frames could be briefly displayed when seeking with ScrubbingModeParameters.allowSkippingMediaCodecFlush enabled.
  • Extractors:
    • Matroska: Fix issue where Tracks placed after clusters wouldn't result in a seekable timeline (#3377).
  • Audio:
    • Fix buffer size calculation in SilenceSkippingAudioProcessor so that the minimum silence duration is not incorrectly scaled down by the frame size (#3271).
    • Fix 8-bit PCM handling in PcmAudioUtil to treat samples as unsigned as defined by Android (#3271).
    • Fix offload issue in which playback could stall during pre-roll or gapless transitions due to limited hardware buffer sizes.
    • Fix bug in DefaultAudioSink where release count doesn't decrease when playback thread is no longer alive (#3338).
  • Session:
    • Fix NullPointerException when an in-process MediaController is released from a Player.Listener callback (#3375).
    • Fix deadlock on the main thread when a legacy MediaBrowser connects to a service returning an asynchronous result from onGetLibraryRoot() or onConnectAsync() (#3393).
  • HLS extension:
    • Fix calculation of content resume offset when the target segment for snapping is not yet in the playlist (#3322).
    • Fix an issue where a fully consumed HlsMediaChunk retries loading on

... (truncated)

Commits
  • 8c6678b Bump version to 1.11.1
  • 4b610b1 Update release notes for 1.11.1
  • e9757e6 Fix deadlock when legacy MediaBrowser connects to async root or session
  • 9b8000d Merge pull request #3271 from nift4:oddmath
  • 6ada45c Add end-to-end test for ITU-T T.35 track muxing
  • d23ba39 Normalize non-positive frame rates in MediaFormatUtil
  • 383e770 Generalize useInputBuffer to useBuffer
  • 71e4112 MPEG-H: Fix UI manager command encoding and memory leak
  • eb2965c Matroska: Fix seekable timeline with Tracks after Clusters
  • a827bd5 Fix incorrect render of stale frames after a seek with skipped flush.
  • Additional commits viewable in compare view

Updates androidx.media3:media3-ui from 1.10.1 to 1.11.1

Release notes

Sourced from androidx.media3:media3-ui's releases.

1.11.1

  • ExoPlayer:
    • Move the flag to enable/disable HAGC metadata for progressive media from MediaSource.Factory to ExtractorsFactory. The previous setExperimentalEnableHagcPlayback method is removed and replaced by ExtractorsFactory.setParseHagcMetadata. This also resolves an issue where disabling didn't work for Matroska/WebM containers.
    • Fix a playback stall caused when prewarming a non-transitioning secondary renderer.
    • Fix pre-warming issue where the Surface should be returned to the primary renderer when a seek resets and disables both renderers.
    • Fix ArrayIndexOutOfBoundsException when a live timeline refresh moves the default position past a server-side inserted ad that is currently being played (#3348).
    • Fix a scrubbing mode issue where stale video frames could be briefly displayed when seeking with ScrubbingModeParameters.allowSkippingMediaCodecFlush enabled.
  • Extractors:
    • Matroska: Fix issue where Tracks placed after clusters wouldn't result in a seekable timeline (#3377).
  • Audio:
    • Fix buffer size calculation in SilenceSkippingAudioProcessor so that the minimum silence duration is not incorrectly scaled down by the frame size (#3271).
    • Fix 8-bit PCM handling in PcmAudioUtil to treat samples as unsigned as defined by Android (#3271).
    • Fix offload issue in which playback could stall during pre-roll or gapless transitions due to limited hardware buffer sizes.
    • Fix bug in DefaultAudioSink where release count doesn't decrease when playback thread is no longer alive (#3338).
  • Session:
    • Fix NullPointerException when an in-process MediaController is released from a Player.Listener callback (#3375).
    • Fix deadlock on the main thread when a legacy MediaBrowser connects to a service returning an asynchronous result from onGetLibraryRoot() or onConnectAsync() (#3393).
  • HLS extension:
    • Fix calculation of content resume offset when the target segment for snapping is not yet in the playlist (#3322).
    • Fix an issue where a fully consumed HlsMediaChunk retries loading on receiving EOFException from the extractor (#3350).
  • DASH extension:
    • Fix incorrect sample timestamp calculation for image tracks with a presentationTimeOffset (#3334).
  • Decoder extensions (FFmpeg, VP9, AV1, etc.):
    • Opus: Fix memory corruption when multiple OpusDecoder instances are initialized concurrently.
    • MPEG-H: Fix memory leak, truncation of non-ASCII characters, and potential native crash under low-memory conditions when sending commands to the MpeghUiManager (#3365).

1.11.0

  • Common library:
    • Add Format.channelMask to explicitly represent the audio channel mask, and a new Util.getAudioTrackChannelConfig(Format) overload to safely resolve it.
    • Upgrade Kotlin from 2.0.20 to 2.2.0.
  • ExoPlayer:
    • Fix a timing-dependent concurrency bug that could cause an IllegalStateException or IndexOutOfBoundsException in ExoPlayer.
    • Relax ad group count checks in AdsMediaSource to allow the ad group count to decrease when an ad group is fully processed (hasUnplayedAds() is false), accommodating dynamic ad group resizing during reset workflows.
    • Add getFlags() and FLAG_STRICT_DURATION to SampleStream to allow streams to report flags, and update renderers to check these flags dynamically.
    • Fall back to the frame rate estimator in MediaCodecVideoRenderer and to the codec output format in MediaCodecAudioRenderer to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.
    • Remove clipping of content for client-side inserted ads in the core player. Instead, AdsMediaSource takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.
    • Mark tracks with a well-formed but unrecognized codec profile or level as supported=NO_EXCEEDS_CAPABILITIES instead of supported=YES (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.
    • Add DefaultPreloadManager.SimpleRankingDataComparator, which is a RankingDataComparator that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its compare(Integer, Integer) method if a more fine-tuned comparison logic is needed. The custom SimpleRankingDataComparator can be injected via a new constructor of DefaultPreloadManager.Builder.
    • Reduce the OOM risk of DefaultLoadControl.prioritizeTimeOverSizeThresholds by falling back to buffer byte size limits if available heap memory seems tight.
    • Align handling of still images when MediaItem.imageDurationUs is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).
    • Add MediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter) to plumb BandwidthMeter to MediaSource. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use BandwidthMeter.getTransferListener() to get parity to the old method.
    • In DefaultBandwidthMeter, add support for a custom InitialBitrateSupplier. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of DefaultBandwidthMeter and on network type changes. The supplier can be set via DefaultBandwidthMeter.Builder.setInitialBitrateSupplier().
    • Enable dynamic scheduling by default. ExoPlayer playback work loop will run dynamically as opposed to on a static interval.
    • Remove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.
    • In DefaultBandwidthMeter, optimize getInitialBitrateCountryGroupAssignment to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.
    • Fix AudioTrack initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (#3207).
    • Fix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.
    • Add experimental ExoPlayer.Builder.enablePerStreamMediaProgression() to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming "stuck" with very short content (#3122).
    • Fix race condition related to audio session id usage where the initial audio session id auto-generated by ExoPlayer would be used instead of the value set by setAudioSessionId (#3241).

... (truncated)

Changelog

Sourced from androidx.media3:media3-ui's changelog.

1.11.1 (2026-09-10)

This release includes the following changes since the 1.11.0 release:

  • ExoPlayer:
    • Move the flag to enable/disable HAGC metadata for progressive media from MediaSource.Factory to ExtractorsFactory. The previous setExperimentalEnableHagcPlayback method is removed and replaced by ExtractorsFactory.setParseHagcMetadata. This also resolves an issue where disabling didn't work for Matroska/WebM containers.
    • Fix a playback stall caused when prewarming a non-transitioning secondary renderer.
    • Fix pre-warming issue where the Surface should be returned to the primary renderer when a seek resets and disables both renderers.
    • Fix ArrayIndexOutOfBoundsException when a live timeline refresh moves the default position past a server-side inserted ad that is currently being played (#3348).
    • Fix a scrubbing mode issue where stale video frames could be briefly displayed when seeking with ScrubbingModeParameters.allowSkippingMediaCodecFlush enabled.
  • Extractors:
    • Matroska: Fix issue where Tracks placed after clusters wouldn't result in a seekable timeline (#3377).
  • Audio:
    • Fix buffer size calculation in SilenceSkippingAudioProcessor so that the minimum silence duration is not incorrectly scaled down by the frame size (#3271).
    • Fix 8-bit PCM handling in PcmAudioUtil to treat samples as unsigned as defined by Android (#3271).
    • Fix offload issue in which playback could stall during pre-roll or gapless transitions due to limited hardware buffer sizes.
    • Fix bug in DefaultAudioSink where release count doesn't decrease when playback thread is no longer alive (#3338).
  • Session:
    • Fix NullPointerException when an in-process MediaController is released from a Player.Listener callback (#3375).
    • Fix deadlock on the main thread when a legacy MediaBrowser connects to a service returning an asynchronous result from onGetLibraryRoot() or onConnectAsync() (#3393).
  • HLS extension:
    • Fix calculation of content resume offset when the target segment for snapping is not yet in the playlist (#3322).
    • Fix an issue where a fully consumed HlsMediaChunk retries loading on

... (truncated)

Commits
  • 8c6678b Bump version to 1.11.1
  • 4b610b1 Update release notes for 1.11.1
  • e9757e6 Fix deadlock when legacy MediaBrowser connects to async root or session
  • 9b8000d Merge pull request #3271 from nift4:oddmath
  • 6ada45c Add end-to-end test for ITU-T T.35 track muxing
  • d23ba39 Normalize non-positive frame rates in MediaFormatUtil
  • 383e770 Generalize useInputBuffer to useBuffer
  • 71e4112 MPEG-H: Fix UI manager command encoding and memory leak
  • eb2965c Matroska: Fix seekable timeline with Tracks...

    Description has been truncated

…pdates

Bumps the android-deps group with 12 updates in the /android directory:

| Package | From | To |
| --- | --- | --- |
| [gradle-wrapper](https://github.com/gradle/gradle) | `9.6.1` | `9.8.0` |
| androidx.core:core-ktx | `1.19.0` | `1.19.1` |
| androidx.compose:compose-bom | `2026.06.00` | `2026.09.00` |
| androidx.navigation:navigation-compose | `2.9.8` | `2.10.2` |
| [androidx.media3:media3-exoplayer](https://github.com/androidx/media) | `1.10.1` | `1.11.1` |
| [androidx.media3:media3-exoplayer-hls](https://github.com/androidx/media) | `1.10.1` | `1.11.1` |
| [androidx.media3:media3-session](https://github.com/androidx/media) | `1.10.1` | `1.11.1` |
| [androidx.media3:media3-ui](https://github.com/androidx/media) | `1.10.1` | `1.11.1` |
| [androidx.media3:media3-exoplayer-hls](https://github.com/androidx/media) | `1.10.1` | `1.11.1` |
| [androidx.media3:media3-session](https://github.com/androidx/media) | `1.10.1` | `1.11.1` |
| [androidx.media3:media3-ui](https://github.com/androidx/media) | `1.10.1` | `1.11.1` |
| [com.squareup.okhttp3:okhttp](https://github.com/lysine-dev/okhttp) | `5.4.0` | `5.5.0` |
| [com.squareup.okhttp3:logging-interceptor](https://github.com/lysine-dev/okhttp) | `5.4.0` | `5.5.0` |
| [com.squareup.okhttp3:logging-interceptor](https://github.com/lysine-dev/okhttp) | `5.4.0` | `5.5.0` |
| com.android.application | `9.2.1` | `9.4.1` |
| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.4.0` | `2.4.20` |



Updates `gradle-wrapper` from 9.6.1 to 9.8.0
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](gradle/gradle@v9.6.1...v9.8.0)

Updates `androidx.core:core-ktx` from 1.19.0 to 1.19.1

Updates `androidx.compose:compose-bom` from 2026.06.00 to 2026.09.00

Updates `androidx.navigation:navigation-compose` from 2.9.8 to 2.10.2

Updates `androidx.media3:media3-exoplayer` from 1.10.1 to 1.11.1
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.10.1...1.11.1)

Updates `androidx.media3:media3-exoplayer-hls` from 1.10.1 to 1.11.1
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.10.1...1.11.1)

Updates `androidx.media3:media3-session` from 1.10.1 to 1.11.1
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.10.1...1.11.1)

Updates `androidx.media3:media3-ui` from 1.10.1 to 1.11.1
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.10.1...1.11.1)

Updates `androidx.media3:media3-exoplayer-hls` from 1.10.1 to 1.11.1
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.10.1...1.11.1)

Updates `androidx.media3:media3-session` from 1.10.1 to 1.11.1
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.10.1...1.11.1)

Updates `androidx.media3:media3-ui` from 1.10.1 to 1.11.1
- [Release notes](https://github.com/androidx/media/releases)
- [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md)
- [Commits](androidx/media@1.10.1...1.11.1)

Updates `com.squareup.okhttp3:okhttp` from 5.4.0 to 5.5.0
- [Changelog](https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md)
- [Commits](lysine-dev/okhttp@parent-5.4.0...parent-5.5.0)

Updates `com.squareup.okhttp3:logging-interceptor` from 5.4.0 to 5.5.0
- [Changelog](https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md)
- [Commits](lysine-dev/okhttp@parent-5.4.0...parent-5.5.0)

Updates `com.squareup.okhttp3:logging-interceptor` from 5.4.0 to 5.5.0
- [Changelog](https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md)
- [Commits](lysine-dev/okhttp@parent-5.4.0...parent-5.5.0)

Updates `com.android.application` from 9.2.1 to 9.4.1

Updates `org.jetbrains.kotlin.plugin.compose` from 2.4.0 to 2.4.20
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](JetBrains/kotlin@v2.4.0...v2.4.20)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: androidx.core:core-ktx
  dependency-version: 1.19.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: android-deps
- dependency-name: androidx.compose:compose-bom
  dependency-version: 2026.09.00
  dependency-type: direct:production
  dependency-group: android-deps
- dependency-name: androidx.navigation:navigation-compose
  dependency-version: 2.10.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: androidx.media3:media3-exoplayer
  dependency-version: 1.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: androidx.media3:media3-exoplayer-hls
  dependency-version: 1.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: androidx.media3:media3-session
  dependency-version: 1.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: androidx.media3:media3-ui
  dependency-version: 1.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: androidx.media3:media3-exoplayer-hls
  dependency-version: 1.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: androidx.media3:media3-session
  dependency-version: 1.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: androidx.media3:media3-ui
  dependency-version: 1.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: com.squareup.okhttp3:okhttp
  dependency-version: 5.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: com.squareup.okhttp3:logging-interceptor
  dependency-version: 5.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: com.squareup.okhttp3:logging-interceptor
  dependency-version: 5.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: com.android.application
  dependency-version: 9.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: android-deps
- dependency-name: org.jetbrains.kotlin.plugin.compose
  dependency-version: 2.4.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: android-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github

dependabot Bot commented on behalf of github Sep 28, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: dependencies. Please create it before Dependabot can add it to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants