Skip to content

Bump media3 from 1.8.0 to 1.11.0 - #15

Open
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/gradle/media3-1.11.0
Open

Bump media3 from 1.8.0 to 1.11.0#15
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/gradle/media3-1.11.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 10, 2026

Copy link
Copy Markdown
Contributor

Bumps media3 from 1.8.0 to 1.11.0.
Updates androidx.media3:media3-datasource-okhttp from 1.8.0 to 1.11.0

Release notes

Sourced from androidx.media3:media3-datasource-okhttp's releases.

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).
    • Add experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via DefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false).
    • Add Format.selectionPriority representing the relative preference of the Format in track selection (#3236).
    • Fix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.
  • CompositionPlayer:
    • Fix an issue where TrackSelector instances were not being released.
  • Transformer:
    • Fix an issue where ExportResult.fileSizeBytes may be over-reported.
  • Track selection:
    • Expose BaseTrackSelection.DEFAULT_FORMAT_COMPARATOR and add AdaptiveTrackSelection.Factory.setTrackFormatComparator to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.
    • Fix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.
  • Extractors:
    • MP4, MP3, and FLAC: Add FLAG_DISABLE_ARTWORK_METADATA to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (#2077). This can also be enabled centrally via DefaultExtractorsFactory.setDisableArtworkMetadata.
    • MP4: Add support for extracting ITU-T T.35 (it35) timed metadata tracks.
    • MP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as Chapter entries within the track's Metadata, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (#2803).
    • WAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (#3090).
    • Matroska: Use codec bitstream metadata to populate accurate ColorInfo.
    • MP4: Add support for seeking in fragmented MP4 files using the mfra box when a sidx box is not present. To enable this, provide FLAG_READ_MFRA_FOR_SEEK_MAP to the FragmentedMp4Extractor, which is now done by default in DefaultExtractorsFactory (#3088).
    • Ignore av1C data with unsupported version.
    • MP4: Add support for big-endian floating point PCM in fpcm boxes.
    • Matroska: Parse chapter info to Chapter entries in a track's Metadata.
    • MPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (#3147).
    • MP4: Prevent infinite loops and out-of-bounds reads when parsing empty ilst metadata tag items (#3191).
    • MPEG-TS: Ensure the last frame is rendered for streams where the last PES packet has a known length (#3206).
    • MP3: Fix bitrate reporting for files with Xing and VBRI header.
    • Matroska: Handle tracks defined in the last cluster (#3250).
    • Matroska: Add support for ALAC (#3268).

... (truncated)

Changelog

Sourced from androidx.media3:media3-datasource-okhttp's changelog.

1.11.0 (2026-08-05)

This release includes the following changes since the 1.10.1 release:

  • 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

... (truncated)

Commits
  • 2bc2078 Merge branch 'release' into release-3.11.0
  • e156aec Update RELEASENOTES.md for the Media3 1.11.0 stable release
  • 458b232 Update Media3 library version to 1.11.0
  • a51f7e9 Update release notes for 1.11.0-rc01
  • 1c24154 Bump version number for 1.11.0-rc01
  • fc38c2c Fix unexpected onMediaItemTransition event on seek within same item
  • bb3d992 Gate detached surface workaround on vendor API level
  • b333163 Catch ForegroundServiceStartNotAllowedException in stopSelfSafely.
  • 66d8d7a Move workarounds disabling logic to DashHostedTest.
  • b220203 Fix content resume offset calculation for asset list interstitials
  • Additional commits viewable in compare view

Updates androidx.media3:media3-exoplayer from 1.8.0 to 1.11.0

Release notes

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

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).
    • Add experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via DefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false).
    • Add Format.selectionPriority representing the relative preference of the Format in track selection (#3236).
    • Fix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.
  • CompositionPlayer:
    • Fix an issue where TrackSelector instances were not being released.
  • Transformer:
    • Fix an issue where ExportResult.fileSizeBytes may be over-reported.
  • Track selection:
    • Expose BaseTrackSelection.DEFAULT_FORMAT_COMPARATOR and add AdaptiveTrackSelection.Factory.setTrackFormatComparator to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.
    • Fix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.
  • Extractors:
    • MP4, MP3, and FLAC: Add FLAG_DISABLE_ARTWORK_METADATA to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (#2077). This can also be enabled centrally via DefaultExtractorsFactory.setDisableArtworkMetadata.
    • MP4: Add support for extracting ITU-T T.35 (it35) timed metadata tracks.
    • MP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as Chapter entries within the track's Metadata, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (#2803).
    • WAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (#3090).
    • Matroska: Use codec bitstream metadata to populate accurate ColorInfo.
    • MP4: Add support for seeking in fragmented MP4 files using the mfra box when a sidx box is not present. To enable this, provide FLAG_READ_MFRA_FOR_SEEK_MAP to the FragmentedMp4Extractor, which is now done by default in DefaultExtractorsFactory (#3088).
    • Ignore av1C data with unsupported version.
    • MP4: Add support for big-endian floating point PCM in fpcm boxes.
    • Matroska: Parse chapter info to Chapter entries in a track's Metadata.
    • MPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (#3147).
    • MP4: Prevent infinite loops and out-of-bounds reads when parsing empty ilst metadata tag items (#3191).
    • MPEG-TS: Ensure the last frame is rendered for streams where the last PES packet has a known length (#3206).
    • MP3: Fix bitrate reporting for files with Xing and VBRI header.
    • Matroska: Handle tracks defined in the last cluster (#3250).
    • Matroska: Add support for ALAC (#3268).

... (truncated)

Changelog

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

1.11.0 (2026-08-05)

This release includes the following changes since the 1.10.1 release:

  • 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

... (truncated)

Commits
  • 2bc2078 Merge branch 'release' into release-3.11.0
  • e156aec Update RELEASENOTES.md for the Media3 1.11.0 stable release
  • 458b232 Update Media3 library version to 1.11.0
  • a51f7e9 Update release notes for 1.11.0-rc01
  • 1c24154 Bump version number for 1.11.0-rc01
  • fc38c2c Fix unexpected onMediaItemTransition event on seek within same item
  • bb3d992 Gate detached surface workaround on vendor API level
  • b333163 Catch ForegroundServiceStartNotAllowedException in stopSelfSafely.
  • 66d8d7a Move workarounds disabling logic to DashHostedTest.
  • b220203 Fix content resume offset calculation for asset list interstitials
  • Additional commits viewable in compare view

Updates androidx.media3:media3-session from 1.8.0 to 1.11.0

Release notes

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

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).
    • Add experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via DefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false).
    • Add Format.selectionPriority representing the relative preference of the Format in track selection (#3236).
    • Fix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.
  • CompositionPlayer:
    • Fix an issue where TrackSelector instances were not being released.
  • Transformer:
    • Fix an issue where ExportResult.fileSizeBytes may be over-reported.
  • Track selection:
    • Expose BaseTrackSelection.DEFAULT_FORMAT_COMPARATOR and add AdaptiveTrackSelection.Factory.setTrackFormatComparator to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.
    • Fix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.
  • Extractors:
    • MP4, MP3, and FLAC: Add FLAG_DISABLE_ARTWORK_METADATA to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (#2077). This can also be enabled centrally via DefaultExtractorsFactory.setDisableArtworkMetadata.
    • MP4: Add support for extracting ITU-T T.35 (it35) timed metadata tracks.
    • MP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as Chapter entries within the track's Metadata, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (#2803).
    • WAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (#3090).
    • Matroska: Use codec bitstream metadata to populate accurate ColorInfo.
    • MP4: Add support for seeking in fragmented MP4 files using the mfra box when a sidx box is not present. To enable this, provide FLAG_READ_MFRA_FOR_SEEK_MAP to the FragmentedMp4Extractor, which is now done by default in DefaultExtractorsFactory (#3088).
    • Ignore av1C data with unsupported version.
    • MP4: Add support for big-endian floating point PCM in fpcm boxes.
    • Matroska: Parse chapter info to Chapter entries in a track's Metadata.
    • MPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (#3147).
    • MP4: Prevent infinite loops and out-of-bounds reads when parsing empty ilst metadata tag items (#3191).
    • MPEG-TS: Ensure the last frame is rendered for streams where the last PES packet has a known length (#3206).
    • MP3: Fix bitrate reporting for files with Xing and VBRI header.
    • Matroska: Handle tracks defined in the last cluster (#3250).
    • Matroska: Add support for ALAC (#3268).

... (truncated)

Changelog

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

1.11.0 (2026-08-05)

This release includes the following changes since the 1.10.1 release:

  • 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

... (truncated)

Commits
  • 2bc2078 Merge branch 'release' into release-3.11.0
  • e156aec Update RELEASENOTES.md for the Media3 1.11.0 stable release
  • 458b232 Update Media3 library version to 1.11.0
  • a51f7e9 Update release notes for 1.11.0-rc01
  • 1c24154 Bump version number for 1.11.0-rc01
  • fc38c2c Fix unexpected onMediaItemTransition event on seek within same item
  • bb3d992 Gate detached surface workaround on vendor API level
  • b333163 Catch ForegroundServiceStartNotAllowedException in stopSelfSafely.
  • 66d8d7a Move workarounds disabling logic to DashHostedTest.
  • b220203 Fix content resume offset calculation for asset list interstitials
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps `media3` from 1.8.0 to 1.11.0.

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

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

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

---
updated-dependencies:
- dependency-name: androidx.media3:media3-datasource-okhttp
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.media3:media3-exoplayer
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.media3:media3-session
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file java Pull requests that update java code labels Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file java Pull requests that update java code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants