Skip to content

Bump media3 from 1.10.1 to 1.11.0 - #5723

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

Bump media3 from 1.10.1 to 1.11.0#5723
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/gradle/media3-1.11.0

Conversation

@dependabot

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

Copy link
Copy Markdown
Contributor

Bumps media3 from 1.10.1 to 1.11.0.
Updates androidx.media3:media3-cast from 1.10.1 to 1.11.0

Release notes

Sourced from androidx.media3:media3-cast'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-cast'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-common from 1.10.1 to 1.11.0

Release notes

Sourced from androidx.media3:media3-common'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-common'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-datasource from 1.10.1 to 1.11.0

Release notes

Sourced from androidx.media3:media3-datasource'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'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-datasource-okhttp from 1.10.1 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.10.1 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...

      Description has been truncated

Bumps `media3` from 1.10.1 to 1.11.0.

Updates `androidx.media3:media3-cast` from 1.10.1 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.10.1...1.11.0)

Updates `androidx.media3:media3-common` from 1.10.1 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.10.1...1.11.0)

Updates `androidx.media3:media3-datasource` from 1.10.1 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.10.1...1.11.0)

Updates `androidx.media3:media3-datasource-okhttp` from 1.10.1 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.10.1...1.11.0)

Updates `androidx.media3:media3-exoplayer` from 1.10.1 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.10.1...1.11.0)

Updates `androidx.media3:media3-exoplayer-hls` from 1.10.1 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.10.1...1.11.0)

Updates `androidx.media3:media3-extractor` from 1.10.1 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.10.1...1.11.0)

Updates `androidx.media3:media3-session` from 1.10.1 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.10.1...1.11.0)

Updates `androidx.media3:media3-ui` from 1.10.1 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.10.1...1.11.0)

Updates `androidx.media3:media3-ui-compose` from 1.10.1 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.10.1...1.11.0)

---
updated-dependencies:
- dependency-name: androidx.media3:media3-cast
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.media3:media3-common
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.media3:media3-datasource
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- 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-exoplayer-hls
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.media3:media3-extractor
  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
- dependency-name: androidx.media3:media3-ui
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.media3:media3-ui-compose
  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 [Area] Dependencies Pull requests that update a dependency file [Type] Tech Debt Involving upgrades or refactoring to maintain or enhance the codebase. labels Aug 12, 2026
@dependabot
dependabot Bot requested a review from a team as a code owner August 12, 2026 06:04
@dependabot
dependabot Bot requested review from sztomek and removed request for a team August 12, 2026 06:04
@dependabot dependabot Bot added [Type] Tech Debt Involving upgrades or refactoring to maintain or enhance the codebase. [Area] Dependencies Pull requests that update a dependency file labels Aug 12, 2026
@dangermattic

Copy link
Copy Markdown
Collaborator
1 Warning
鈿狅笍 PR is not assigned to a milestone.

Generated by 馃毇 Danger

@wpmobilebot

Copy link
Copy Markdown
Collaborator

Project manifest changes for app

The following changes in the app's merged AndroidManifest.xml file were detected (build variant: release):

--- ./build/reports/diff_manifest/app/release/base_manifest.txt	2026-08-12 06:06:38.169200390 +0000
+++ ./build/reports/diff_manifest/app/release/head_manifest.txt	2026-08-12 06:06:44.899254205 +0000
@@ -1055,6 +1055,25 @@
             <intent-filter>
                 <action android:name="au.com.shiftyjelly.pocketcasts.ACTION_REVAMPED_NOTIFICATION_OPENED" />
             </intent-filter>
+        </activity> <!-- TODO: b/510644544 - Remove this workaround once minSdk is 38 -->
+        <activity
+            android:name="androidx.media3.session.BluetoothValidationActivity"
+            android:excludeFromRecents="true"
+            android:exported="true"
+            android:noHistory="true"
+            android:permission="android.permission.BLUETOOTH_PRIVILEGED"
+            android:theme="@android:style/Theme.NoDisplay" >
+            <intent-filter>
+
+                <!-- Omit CATEGORY_DEFAULT to avoid listing this app as a generic audio app. -->
+                <action android:name="android.intent.action.VIEW" />
+
+                <data android:scheme="content" />
+                <data android:host="media" />
+                <!-- Satisfies the probe used in Bluetooths's MediaPlayerList.java on API 36 and 37. -->
+                <data android:pathPrefix="/internal/audio/media/" />
+                <data android:mimeType="audio/*" />
+            </intent-filter>
         </activity>
 
         <receiver

Go to https://buildkite.com/automattic/pocket-casts-android/builds/18287/canvas?sid=019ff492-d618-44d6-8fb5-f06a6e0b9a2f, click on the Artifacts tab and audit the files.

@wpmobilebot

Copy link
Copy Markdown
Collaborator

Project dependencies changes

list
! Upgraded Dependencies
androidx.media3:media3-cast:1.11.0, (changed from 1.10.1)
androidx.media3:media3-common:1.11.0, (changed from 1.10.1)
androidx.media3:media3-common-ktx:1.11.0, (changed from 1.10.1)
androidx.media3:media3-container:1.11.0, (changed from 1.10.1)
androidx.media3:media3-database:1.11.0, (changed from 1.10.1)
androidx.media3:media3-datasource:1.11.0, (changed from 1.10.1)
androidx.media3:media3-datasource-okhttp:1.11.0, (changed from 1.10.1)
androidx.media3:media3-decoder:1.11.0, (changed from 1.10.1)
androidx.media3:media3-exoplayer:1.11.0, (changed from 1.10.1)
androidx.media3:media3-exoplayer-hls:1.11.0, (changed from 1.10.1)
androidx.media3:media3-extractor:1.11.0, (changed from 1.10.1)
androidx.media3:media3-session:1.11.0, (changed from 1.10.1)
androidx.media3:media3-ui:1.11.0, (changed from 1.10.1)
androidx.media3:media3-ui-compose:1.11.0, (changed from 1.10.1)
tree
-+--- androidx.media3:media3-extractor:1.10.1
-|    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
-|    +--- androidx.media3:media3-decoder:1.10.1
-|    |    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
-|    |    \--- androidx.media3:media3-common:1.10.1
-|    |         +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
-|    |         +--- org.jetbrains.kotlin:kotlin-bom:1.8.0 -> 1.8.22 (*)
-|    |         +--- com.google.guava:guava:33.3.1-android -> 33.6.0-android (*)
-|    |         +--- androidx.annotation:annotation-experimental:1.3.1 -> 1.5.1 (*)
-|    |         +--- androidx.media3:media3-cast:1.10.1 (c)
-|    |         +--- androidx.media3:media3-container:1.10.1 (c)
-|    |         +--- androidx.media3:media3-datasource:1.10.1 (c)
-|    |         +--- androidx.media3:media3-datasource-okhttp:1.10.1 (c)
-|    |         +--- androidx.media3:media3-decoder:1.10.1 (c)
-|    |         +--- androidx.media3:media3-exoplayer:1.10.1 (c)
-|    |         +--- androidx.media3:media3-exoplayer-hls:1.10.1 (c)
-|    |         +--- androidx.media3:media3-extractor:1.10.1 (c)
-|    |         +--- androidx.media3:media3-session:1.10.1 (c)
-|    |         +--- androidx.media3:media3-ui:1.10.1 (c)
-|    |         +--- androidx.media3:media3-ui-compose:1.10.1 (c)
-|    |         +--- androidx.media3:media3-common-ktx:1.10.1 (c)
-|    |         \--- androidx.media3:media3-database:1.10.1 (c)
-|    +--- androidx.media3:media3-common:1.10.1 (*)
-|    \--- androidx.media3:media3-container:1.10.1
-|         +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
-|         \--- androidx.media3:media3-common:1.10.1 (*)
++--- androidx.media3:media3-extractor:1.11.0
+|    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
+|    +--- androidx.media3:media3-decoder:1.11.0
+|    |    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
+|    |    \--- androidx.media3:media3-common:1.11.0
+|    |         +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
+|    |         +--- com.google.guava:guava:33.3.1-android -> 33.6.0-android (*)
+|    |         +--- androidx.annotation:annotation-experimental:1.3.1 -> 1.5.1 (*)
+|    |         +--- androidx.media3:media3-cast:1.11.0 (c)
+|    |         +--- androidx.media3:media3-common:1.11.0 (c)
+|    |         +--- androidx.media3:media3-container:1.11.0 (c)
+|    |         +--- androidx.media3:media3-datasource:1.11.0 (c)
+|    |         +--- androidx.media3:media3-datasource-okhttp:1.11.0 (c)
+|    |         +--- androidx.media3:media3-decoder:1.11.0 (c)
+|    |         +--- androidx.media3:media3-exoplayer:1.11.0 (c)
+|    |         +--- androidx.media3:media3-exoplayer-hls:1.11.0 (c)
+|    |         +--- androidx.media3:media3-extractor:1.11.0 (c)
+|    |         +--- androidx.media3:media3-session:1.11.0 (c)
+|    |         +--- androidx.media3:media3-ui:1.11.0 (c)
+|    |         +--- androidx.media3:media3-ui-compose:1.11.0 (c)
+|    |         +--- androidx.media3:media3-common-ktx:1.11.0 (c)
+|    |         \--- androidx.media3:media3-database:1.11.0 (c)
+|    +--- androidx.media3:media3-common:1.11.0 (*)
+|    \--- androidx.media3:media3-container:1.11.0
+|         +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
+|         \--- androidx.media3:media3-common:1.11.0 (*)
 +--- project ':modules:features:account'
 |    \--- project ':modules:features:search'
 |         +--- project ':modules:services:analytics'
 |         |    \--- project ':modules:services:model'
-|         |         \--- androidx.media3:media3-extractor:1.10.1 (*)
+|         |         \--- androidx.media3:media3-extractor:1.11.0 (*)
 |         +--- project ':modules:services:repositories'
-|         |    +--- androidx.media3:media3-datasource:1.10.1
-|         |    |    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
-|         |    |    +--- androidx.exifinterface:exifinterface:1.3.6 -> 1.4.2 (*)
-|         |    |    +--- androidx.media3:media3-common:1.10.1 (*)
-|         |    |    \--- androidx.media3:media3-database:1.10.1
-|         |    |         +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
-|         |    |         \--- androidx.media3:media3-common:1.10.1 (*)
+|         |    +--- androidx.media3:media3-datasource:1.11.0
+|         |    |    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
+|         |    |    +--- androidx.exifinterface:exifinterface:1.3.6 -> 1.4.2 (*)
+|         |    |    +--- androidx.media3:media3-common:1.11.0 (*)
+|         |    |    \--- androidx.media3:media3-database:1.11.0
+|         |    |         +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
+|         |    |         \--- androidx.media3:media3-common:1.11.0 (*)
-|         |    +--- androidx.media3:media3-exoplayer:1.10.1
-|         |    |    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
-|         |    |    +--- androidx.exifinterface:exifinterface:1.3.6 -> 1.4.2 (*)
-|         |    |    +--- androidx.media3:media3-common:1.10.1 (*)
-|         |    |    +--- androidx.media3:media3-container:1.10.1 (*)
-|         |    |    +--- androidx.media3:media3-datasource:1.10.1 (*)
-|         |    |    +--- androidx.media3:media3-decoder:1.10.1 (*)
-|         |    |    +--- androidx.media3:media3-extractor:1.10.1 (*)
-|         |    |    +--- androidx.media3:media3-database:1.10.1 (*)
-|         |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.3.21 (*)
+|         |    +--- androidx.media3:media3-exoplayer:1.11.0
+|         |    |    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
+|         |    |    +--- androidx.exifinterface:exifinterface:1.3.6 -> 1.4.2 (*)
+|         |    |    +--- androidx.media3:media3-common:1.11.0 (*)
+|         |    |    +--- androidx.media3:media3-container:1.11.0 (*)
+|         |    |    +--- androidx.media3:media3-datasource:1.11.0 (*)
+|         |    |    +--- androidx.media3:media3-decoder:1.11.0 (*)
+|         |    |    +--- androidx.media3:media3-extractor:1.11.0 (*)
+|         |    |    \--- androidx.media3:media3-database:1.11.0 (*)
-|         |    +--- androidx.media3:media3-extractor:1.10.1 (*)
+|         |    +--- androidx.media3:media3-extractor:1.11.0 (*)
-|         |    +--- androidx.media3:media3-session:1.10.1
-|         |    |    +--- androidx.media3:media3-datasource:1.10.1 (*)
-|         |    |    +--- androidx.collection:collection:1.2.0 -> 1.5.0 (*)
-|         |    |    +--- androidx.concurrent:concurrent-futures:1.2.0 (*)
-|         |    |    +--- androidx.media:media:1.7.0 (*)
-|         |    |    +--- androidx.core:core:1.8.0 -> 1.19.0 (*)
-|         |    |    +--- androidx.media3:media3-common:1.10.1 (*)
-|         |    |    \--- androidx.lifecycle:lifecycle-service:2.5.1 -> 2.11.0 (*)
+|         |    +--- androidx.media3:media3-session:1.11.0
+|         |    |    +--- androidx.media3:media3-datasource:1.11.0 (*)
+|         |    |    +--- androidx.collection:collection:1.2.0 -> 1.5.0 (*)
+|         |    |    +--- androidx.concurrent:concurrent-futures:1.2.0 (*)
+|         |    |    +--- androidx.media:media:1.7.0 (*)
+|         |    |    +--- androidx.core:core:1.9.0 -> 1.19.0 (*)
+|         |    |    +--- androidx.media3:media3-common:1.11.0 (*)
+|         |    |    +--- androidx.lifecycle:lifecycle-service:2.8.0 -> 2.11.0 (*)
+|         |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.10 -> 2.3.21 (*)
-|         |    +--- androidx.media3:media3-datasource-okhttp:1.10.1
-|         |    |    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
-|         |    |    +--- androidx.media3:media3-common:1.10.1 (*)
-|         |    |    +--- androidx.media3:media3-datasource:1.10.1 (*)
-|         |    |    \--- com.squareup.okhttp3:okhttp:4.12.0 -> 5.4.0 (*)
+|         |    +--- androidx.media3:media3-datasource-okhttp:1.11.0
+|         |    |    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
+|         |    |    +--- androidx.media3:media3-common:1.11.0 (*)
+|         |    |    +--- androidx.media3:media3-datasource:1.11.0 (*)
+|         |    |    +--- com.squareup.okhttp3:okhttp:4.12.0 -> 5.4.0 (*)
+|         |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.10 -> 2.3.21 (*)
-|         |    +--- androidx.media3:media3-exoplayer-hls:1.10.1
-|         |    |    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
-|         |    |    \--- androidx.media3:media3-exoplayer:1.10.1 (*)
+|         |    +--- androidx.media3:media3-exoplayer-hls:1.11.0
+|         |    |    +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
+|         |    |    +--- androidx.concurrent:concurrent-futures:1.2.0 (*)
+|         |    |    \--- androidx.media3:media3-exoplayer:1.11.0 (*)
-|         |    \--- androidx.media3:media3-ui:1.10.1
-|         |         +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
-|         |         +--- androidx.recyclerview:recyclerview:1.3.0 -> 1.4.0 (*)
-|         |         \--- androidx.media3:media3-common:1.10.1 (*)
+|         |    \--- androidx.media3:media3-ui:1.11.0
+|         |         +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
+|         |         +--- androidx.recyclerview:recyclerview:1.3.0 -> 1.4.0 (*)
+|         |         +--- androidx.media3:media3-common:1.11.0 (*)
+|         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.10 -> 2.3.21 (*)
 |         \--- project ':modules:services:ui'
-|              \--- androidx.media3:media3-cast:1.10.1
-|                   +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
-|                   +--- androidx.appcompat:appcompat:1.6.1 -> 1.7.1 (*)
-|                   +--- androidx.mediarouter:mediarouter:1.8.1 (*)
-|                   +--- androidx.compose:compose-bom:2024.12.01 -> 2026.05.01 (*)
-|                   +--- androidx.compose.material3:material3:1.3.1 -> 1.4.0 (*)
-|                   +--- com.google.android.gms:play-services-cast-framework:22.1.0 -> 22.3.1 (*)
-|                   +--- androidx.media3:media3-common:1.10.1 (*)
-|                   +--- androidx.media3:media3-exoplayer:1.10.1 (*)
-|                   \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.3.21 (*)
+|              \--- androidx.media3:media3-cast:1.11.0
+|                   +--- androidx.annotation:annotation:1.6.0 -> 1.10.0 (*)
+|                   +--- androidx.appcompat:appcompat:1.6.1 -> 1.7.1 (*)
+|                   +--- androidx.mediarouter:mediarouter:1.8.1 (*)
+|                   +--- androidx.compose:compose-bom:2026.05.00 -> 2026.05.01 (*)
+|                   +--- androidx.compose.material3:material3 -> 1.4.0 (*)
+|                   +--- com.google.android.gms:play-services-cast-framework:22.3.1 (*)
+|                   +--- androidx.media3:media3-common:1.11.0 (*)
+|                   +--- androidx.media3:media3-exoplayer:1.11.0 (*)
+|                   \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.10 -> 2.3.21 (*)
 +--- project ':modules:features:discover'
 |    \--- project ':modules:features:podcasts'
 |         \--- project ':modules:features:player'
-|              +--- androidx.media3:media3-ui:1.10.1 (*)
+|              +--- androidx.media3:media3-ui:1.11.0 (*)
-|              +--- androidx.media3:media3-exoplayer:1.10.1 (*)
+|              +--- androidx.media3:media3-exoplayer:1.11.0 (*)
-|              +--- androidx.media3:media3-extractor:1.10.1 (*)
+|              +--- androidx.media3:media3-extractor:1.11.0 (*)
 |              \--- project ':modules:features:reimagine'
-|                   \--- androidx.media3:media3-exoplayer:1.10.1 (*)
+|                   \--- androidx.media3:media3-exoplayer:1.11.0 (*)
 +--- project ':modules:features:endofyear'
-|    \--- androidx.media3:media3-ui-compose:1.10.1
-|         +--- androidx.media3:media3-common:1.10.1 (*)
-|         +--- androidx.media3:media3-common-ktx:1.10.1
-|         |    +--- androidx.core:core:1.8.0 -> 1.19.0 (*)
-|         |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*)
-|         |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -> 1.11.0 (*)
-|         |    +--- androidx.media3:media3-common:1.10.1 (*)
-|         |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.3.21 (*)
-|         +--- androidx.compose:compose-bom:2024.12.01 -> 2026.05.01 (*)
-|         +--- androidx.compose.foundation:foundation:1.7.6 -> 1.11.2 (*)
-|         \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.20 -> 2.3.21 (*)
+|    \--- androidx.media3:media3-ui-compose:1.11.0
+|         +--- androidx.media3:media3-common:1.11.0 (*)
+|         +--- androidx.media3:media3-common-ktx:1.11.0
+|         |    +--- androidx.core:core:1.9.0 -> 1.19.0 (*)
+|         |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 -> 1.11.0 (*)
+|         |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 -> 1.11.0 (*)
+|         |    +--- androidx.media3:media3-common:1.11.0 (*)
+|         |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.10 -> 2.3.21 (*)
+|         +--- androidx.compose:compose-bom:2026.05.00 -> 2026.05.01 (*)
+|         +--- androidx.compose.foundation:foundation -> 1.11.2 (*)
+|         \--- org.jetbrains.kotlin:kotlin-stdlib:2.2.10 -> 2.3.21 (*)
 \--- project ':modules:features:profile'
-     +--- androidx.media3:media3-exoplayer:1.10.1 (*)
+     +--- androidx.media3:media3-exoplayer:1.11.0 (*)
-     +--- androidx.media3:media3-datasource:1.10.1 (*)
+     +--- androidx.media3:media3-datasource:1.11.0 (*)
-     \--- androidx.media3:media3-extractor:1.10.1 (*)
+     \--- androidx.media3:media3-extractor:1.11.0 (*)

@wpmobilebot

Copy link
Copy Markdown
Collaborator

Project manifest changes for wear

The following changes in the wear's merged AndroidManifest.xml file were detected (build variant: release):

--- ./build/reports/diff_manifest/wear/release/base_manifest.txt	2026-08-12 06:06:51.593565934 +0000
+++ ./build/reports/diff_manifest/wear/release/head_manifest.txt	2026-08-12 06:06:55.729547486 +0000
@@ -287,6 +287,25 @@
             <intent-filter>
                 <action android:name="au.com.shiftyjelly.pocketcasts.ACTION_REVAMPED_NOTIFICATION_OPENED" />
             </intent-filter>
+        </activity> <!-- TODO: b/510644544 - Remove this workaround once minSdk is 38 -->
+        <activity
+            android:name="androidx.media3.session.BluetoothValidationActivity"
+            android:excludeFromRecents="true"
+            android:exported="true"
+            android:noHistory="true"
+            android:permission="android.permission.BLUETOOTH_PRIVILEGED"
+            android:theme="@android:style/Theme.NoDisplay" >
+            <intent-filter>
+
+                <!-- Omit CATEGORY_DEFAULT to avoid listing this app as a generic audio app. -->
+                <action android:name="android.intent.action.VIEW" />
+
+                <data android:scheme="content" />
+                <data android:host="media" />
+                <!-- Satisfies the probe used in Bluetooths's MediaPlayerList.java on API 36 and 37. -->
+                <data android:pathPrefix="/internal/audio/media/" />
+                <data android:mimeType="audio/*" />
+            </intent-filter>
         </activity>
 
         <receiver

Go to https://buildkite.com/automattic/pocket-casts-android/builds/18287/canvas?sid=019ff492-d618-44d6-8fb5-f06a6e0b9a2f, click on the Artifacts tab and audit the files.

@wpmobilebot

Copy link
Copy Markdown
Collaborator

Project manifest changes for automotive

The following changes in the automotive's merged AndroidManifest.xml file were detected (build variant: release):

--- ./build/reports/diff_manifest/automotive/release/base_manifest.txt	2026-08-12 06:07:01.490488242 +0000
+++ ./build/reports/diff_manifest/automotive/release/head_manifest.txt	2026-08-12 06:07:05.219578203 +0000
@@ -241,6 +241,25 @@
             <intent-filter>
                 <action android:name="au.com.shiftyjelly.pocketcasts.ACTION_REVAMPED_NOTIFICATION_OPENED" />
             </intent-filter>
+        </activity> <!-- TODO: b/510644544 - Remove this workaround once minSdk is 38 -->
+        <activity
+            android:name="androidx.media3.session.BluetoothValidationActivity"
+            android:excludeFromRecents="true"
+            android:exported="true"
+            android:noHistory="true"
+            android:permission="android.permission.BLUETOOTH_PRIVILEGED"
+            android:theme="@android:style/Theme.NoDisplay" >
+            <intent-filter>
+
+                <!-- Omit CATEGORY_DEFAULT to avoid listing this app as a generic audio app. -->
+                <action android:name="android.intent.action.VIEW" />
+
+                <data android:scheme="content" />
+                <data android:host="media" />
+                <!-- Satisfies the probe used in Bluetooths's MediaPlayerList.java on API 36 and 37. -->
+                <data android:pathPrefix="/internal/audio/media/" />
+                <data android:mimeType="audio/*" />
+            </intent-filter>
         </activity>
 
         <receiver

Go to https://buildkite.com/automattic/pocket-casts-android/builds/18287/canvas?sid=019ff492-d618-44d6-8fb5-f06a6e0b9a2f, click on the Artifacts tab and audit the files.

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

Labels

[Area] Dependencies Pull requests that update a dependency file [Type] Tech Debt Involving upgrades or refactoring to maintain or enhance the codebase.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants