Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: flutter/packages
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 471bfd305f4e
Choose a base ref
...
head repository: flutter/packages
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 3dc682deffb4
Choose a head ref
  • 2 commits
  • 16 files changed
  • 2 contributors

Commits on Jun 30, 2025

  1. [dependabot]: Bump exoplayer_version from 1.4.1 to 1.5.1 in /packages…

    …/video_player/video_player_android/android (#8414)
    
    Bumps `exoplayer_version` from 1.4.1 to 1.5.1.
    Updates `androidx.media3:media3-exoplayer` from 1.4.1 to 1.5.1
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/releases">androidx.media3:media3-exoplayer's releases</a>.</em></p>
    <blockquote>
    <h2>1.5.1</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#150-2024-11-27">1.5.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (<a href="https://redirect.github.com/androidx/media/issues/1641">#1641</a>).</li>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Don't stop playback early when a <code>VBRI</code> frame's table of contents doesn't cover all the MP3 data in a file (<a href="https://redirect.github.com/androidx/media/issues/1904">#1904</a>).</li>
    </ul>
    </li>
    <li>Video:
    <ul>
    <li>Rollback of using <code>MediaCodecAdapter</code> supplied pixel aspect ratio values when provided while processing <code>onOutputFormatChanged</code> (<a href="https://redirect.github.com/androidx/media/pull/1371">#1371</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>Fix bug in <code>ReplacingCuesResolver.discardCuesBeforeTimeUs</code> where the cue active at <code>timeUs</code> (started before but not yet ended) was incorrectly discarded (<a href="https://redirect.github.com/androidx/media/issues/1939">#1939</a>).</li>
    </ul>
    </li>
    <li>Metadata:
    <ul>
    <li>Extract disc/track numbering and genre from Vorbis comments into <code>MediaMetadata</code> (<a href="https://redirect.github.com/androidx/media/issues/1958">#1958</a>).</li>
    </ul>
    </li>
    </ul>
    <h2>1.5.0</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#141-2024-08-23">1.4.1 release</a>:</p>
    <ul>
    <li>Common Library:
    <ul>
    <li>Add <code>ForwardingSimpleBasePlayer</code> that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (<a href="https://redirect.github.com/androidx/media/issues/1183">#1183</a>).</li>
    <li>Replace <code>SimpleBasePlayer.State.playlist</code> by <code>getPlaylist()</code> method.</li>
    <li>Add override for <code>SimpleBasePlayer.State.Builder.setPlaylist()</code> to directly specify a <code>Timeline</code> and current <code>Tracks</code> and <code>Metadata</code> instead of building a playlist structure.</li>
    <li>Increase <code>minSdk</code> to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.</li>
    <li>Add <code>androidx.media3:media3-common-ktx</code> artifact which provides Kotlin-specific functionality built on top of the Common library</li>
    <li>Add <code>Player.listen</code> suspending extension function to spin a coroutine to listen to <code>Player.Events</code> to the <code>media3-common-ktx</code> library.</li>
    <li>Remove <code>@DoNotInline</code> annotations from manually out-of-lined inner classes designed to avoid <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/build/android/docs/class_verification_failures.md">runtime class verification failures</a>. Recent versions of <a href="https://developer.android.com/build/shrink-code">R8</a> now automatically out-of-line calls like these to avoid the runtime failures (so the manual out-of-lining is no longer required). All Gradle users of the library must already be a using a version of the Android Gradle Plugin that uses a version of R8 which does this, <a href="https://issuetracker.google.com/345472586#comment7">due to <code>compileSdk = 35</code></a>. Users of the library with non-Gradle build systems will need to ensure their R8-equivalent shrinking/obfuscating step does a similar automatic out-of-lining process in order to avoid runtime class verification failures. This change has <a href="http://r.android.com/3156141">already been done in other AndroidX libraries</a>.</li>
    </ul>
    </li>
    <li>ExoPlayer:
    <ul>
    <li><code>MediaCodecRenderer.onProcessedStreamChange()</code> can now be called for every media item. Previously it was not called for the first one. Use <code>MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()</code> to enable this.</li>
    <li>Add <code>PreloadMediaSource.PreloadControl.onPreloadError</code> to allow <code>PreloadMediaSource.PreloadControl</code> implementations to take actions when error occurs.</li>
    <li>Add <code>BasePreloadManager.Listener</code> to propagate preload events to apps.</li>
    <li>Allow changing SNTP client timeout and retry alternative addresses on timeout (<a href="https://redirect.github.com/androidx/media/issues/1540">#1540</a>).</li>
    <li>Remove <code>MediaCodecAdapter.Configuration.flags</code> as the field was always zero.</li>
    <li>Allow the user to select the built-in speaker for playback on Wear OS API 35+ (where the device advertises support for this).</li>
    <li>Defer the blocking call to <code>Context.getSystemService(Context.AUDIO_SERVICE)</code> until audio focus handling is enabled. This ensures the blocking call isn't done if audio focus handling is not enabled (<a href="https://redirect.github.com/androidx/media/pull/1616">#1616</a>).</li>
    <li>Allow playback regardless of buffered duration when loading fails (<a href="https://redirect.github.com/androidx/media/issues/1571">#1571</a>).</li>
    <li>Add <code>AnalyticsListener.onRendererReadyChanged()</code> to signal when individual renderers allow playback to be ready.</li>
    <li>Fix <code>MediaCodec.CryptoException</code> sometimes being reported as an &quot;unexpected runtime error&quot; when <code>MediaCodec</code> is operated in asynchronous mode (default behaviour on API 31+).</li>
    <li>Pass <code>bufferedDurationUs</code> instead of <code>bufferedPositionUs</code> with <code>PreloadMediaSource.PreloadControl.onContinueLoadingRequested()</code>. Also changes <code>DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS</code> to <code>DefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS</code>, apps then need to pass a value representing a specific duration from the default start position for which the corresponding media source has to be preloaded with this IntDef, instead of a position.</li>
    <li>Add <code>ForwardingRenderer</code> implementation that forwards all method calls to another renderer (<a href="https://redirect.github.com/androidx/media/pull/1703">1703</a>).</li>
    <li>Add playlist preloading for the next item in the playlist. Apps can enable preloading by calling <code>ExoPlayer.setPreloadConfiguration(PreloadConfiguration)</code> accordingly. By default preloading is disabled. When opted-in and to not interfere with playback, <code>DefaultLoadControl</code> restricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementing <code>LoadControl.shouldContinuePreloading()</code> accordingly (like when overriding this method in <code>DefaultLoadControl</code>). The default implementation of <code>LoadControl</code> disables preloading in case an app is using a custom implementation of <code>LoadControl</code>.</li>
    <li>Add method <code>MediaSourceEventListener.EventDispatcher.dispatchEvent()</code> to allow invoking events of subclass listeners (<a href="https://redirect.github.com/androidx/media/pull/1736">1736</a>).</li>
    <li>Add <code>DefaultPreloadManager.Builder</code> that builds the <code>DefaultPreloadManager</code> and <code>ExoPlayer</code> instances with consistently shared configurations.</li>
    <li>Remove <code>Renderer[]</code> parameter from <code>LoadControl.onTracksSelected()</code> as <code>DefaultLoadControl</code> implementation can retrieve the stream types from <code>ExoTrackSelection[]</code>.</li>
    <li>Deprecated <code>DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])</code> and marked method as final to prevent overrides. The new <code>DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])</code> should be used instead.</li>
    <li>Report <code>MediaSourceEventListener</code> events from secondary sources in <code>MergingMediaSource</code>. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added with <code>MediaItem.LocalConfiguration.subtitleConfigurations</code>), which may appear as duplicate load events emitted from <code>AnalyticsListener</code>.</li>
    <li>Prevent subtitle &amp; metadata errors from completely stopping playback. Instead the problematic track is disabled and playback of the remaining tracks continues (<a href="https://redirect.github.com/google/ExoPlayer/issues/1722">#1722</a>).
    <ul>
    <li>In new subtitle handling (during extraction), associated parse (e.g. invalid subtitle data) and load errors (e.g. HTTP 404) are emitted via <code>onLoadError</code> callbacks.</li>
    <li>In legacy subtitle handling (during rendering), only associated load errors are emitted via <code>onLoadError</code> callbacks while parse errors are silently ignored (this is pre-existing behaviour).</li>
    </ul>
    </li>
    <li>Fix bug where playlist items or periods in multi-period DASH streams with durations that don't match the actual content could cause frame freezes at the end of the item (<a href="https://redirect.github.com/androidx/media/issues/1698">#1698</a>).</li>
    <li>Add a setter to <code>SntpClient</code> to set the max elapsed time since the last update after which the client is re-initialized (<a href="https://redirect.github.com/androidx/media/pull/1794">#1794</a>).</li>
    </ul>
    </li>
    <li>Transformer:</li>
    </ul>
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/blob/release/RELEASENOTES.md">androidx.media3:media3-exoplayer's changelog</a>.</em></p>
    <blockquote>
    <h3>1.5.1 (2024-12-19)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#150-2024-11-27">1.5.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Disable use of asynchronous decryption in MediaCodec to avoid reported
    codec timeout issues with this platform API
    (<a href="https://redirect.github.com/androidx/media/issues/1641">#1641</a>).</li>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Don't stop playback early when a <code>VBRI</code> frame's table of contents
    doesn't cover all the MP3 data in a file
    (<a href="https://redirect.github.com/androidx/media/issues/1904">#1904</a>).</li>
    </ul>
    </li>
    <li>Video:
    <ul>
    <li>Rollback of using <code>MediaCodecAdapter</code> supplied pixel aspect ratio values
    when provided while processing <code>onOutputFormatChanged</code>
    (<a href="https://redirect.github.com/androidx/media/pull/1371">#1371</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>Fix bug in <code>ReplacingCuesResolver.discardCuesBeforeTimeUs</code> where the cue
    active at <code>timeUs</code> (started before but not yet ended) was incorrectly
    discarded (<a href="https://redirect.github.com/androidx/media/issues/1939">#1939</a>).</li>
    </ul>
    </li>
    <li>Metadata:
    <ul>
    <li>Extract disc/track numbering and genre from Vorbis comments into
    <code>MediaMetadata</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1958">#1958</a>).</li>
    </ul>
    </li>
    </ul>
    <h3>1.5.0 (2024-11-27)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#141-2024-08-23">1.4.1 release</a>:</p>
    <ul>
    <li>Common Library:
    <ul>
    <li>Add <code>ForwardingSimpleBasePlayer</code> that allows forwarding to another
    player with small adjustments while ensuring full consistency and
    listener handling
    (<a href="https://redirect.github.com/androidx/media/issues/1183">#1183</a>).</li>
    <li>Replace <code>SimpleBasePlayer.State.playlist</code> by <code>getPlaylist()</code> method.</li>
    <li>Add override for <code>SimpleBasePlayer.State.Builder.setPlaylist()</code> to
    directly specify a <code>Timeline</code> and current <code>Tracks</code> and <code>Metadata</code>
    instead of building a playlist structure.</li>
    <li>Increase <code>minSdk</code> to 21 (Android Lollipop). This is aligned with all
    other AndroidX libraries.</li>
    <li>Add <code>androidx.media3:media3-common-ktx</code> artifact which provides
    Kotlin-specific functionality built on top of the Common library</li>
    <li>Add <code>Player.listen</code> suspending extension function to spin a coroutine to
    listen to <code>Player.Events</code> to the <code>media3-common-ktx</code> library.</li>
    <li>Remove <code>@DoNotInline</code> annotations from manually out-of-lined inner
    classes designed to avoid
    <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/build/android/docs/class_verification_failures.md">runtime class verification failures</a>.
    Recent versions of <a href="https://developer.android.com/build/shrink-code">R8</a></li>
    </ul>
    </li>
    </ul>
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a href="https://github.com/androidx/media/commit/76088cd6af7f263aba238b7a48d64bd4f060cb8b"><code>76088cd</code></a> Bump Media3 version to 1.5.1</li>
    <li><a href="https://github.com/androidx/media/commit/7ae9ddf1662b7174a2d82eb14a0f07fc5d7a3e95"><code>7ae9ddf</code></a> Update release notes for Media3 1.5.1 release</li>
    <li><a href="https://github.com/androidx/media/commit/e4e59cd929af4d80b84d9a392ae82cb4aa07cf0b"><code>e4e59cd</code></a> Switch default of async crypto mode to disabled</li>
    <li><a href="https://github.com/androidx/media/commit/508a4258a32c4f03ae69721a0609075d9d817b77"><code>508a425</code></a> Switch play FGS exemption to use custom action instead of commands</li>
    <li><a href="https://github.com/androidx/media/commit/52f976179622c764794859195dbecd6bea4104a4"><code>52f9761</code></a> Don't check codec's profile for MV-HEVC video.</li>
    <li><a href="https://github.com/androidx/media/commit/de91ebc6ae101cdd4c9e4246cb6840a7962aa38b"><code>de91ebc</code></a> Add vorbis comment support for track/disc numbering fields, and genre</li>
    <li><a href="https://github.com/androidx/media/commit/5d9badcb502aebc57027ba407959344b55731e9d"><code>5d9badc</code></a> Fix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue</li>
    <li><a href="https://github.com/androidx/media/commit/121b79ae96e334e79ec0f886fccf81357b9054d0"><code>121b79a</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/1943">#1943</a> from DolbyLaboratories:dlb/ac4-ajoc/dev</li>
    <li><a href="https://github.com/androidx/media/commit/fa9689ef9ad10d97f60b8b9496222ae0e2624cd5"><code>fa9689e</code></a> Clarify <code>CommandButton</code> javadoc around <code>iconResId</code> and <code>ICON_UNDEFINED</code></li>
    <li><a href="https://github.com/androidx/media/commit/f5bbb39e90ef54e163e716e5b01122d730192503"><code>f5bbb39</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/1823">#1823</a> from MGaetan89:remove_outdated_sdk_check</li>
    <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.4.1...1.5.1">compare view</a></li>
    </ul>
    </details>
    <br />
    
    Updates `androidx.media3:media3-exoplayer-hls` from 1.4.1 to 1.5.1
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/releases">androidx.media3:media3-exoplayer-hls's releases</a>.</em></p>
    <blockquote>
    <h2>1.5.1</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#150-2024-11-27">1.5.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (<a href="https://redirect.github.com/androidx/media/issues/1641">#1641</a>).</li>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Don't stop playback early when a <code>VBRI</code> frame's table of contents doesn't cover all the MP3 data in a file (<a href="https://redirect.github.com/androidx/media/issues/1904">#1904</a>).</li>
    </ul>
    </li>
    <li>Video:
    <ul>
    <li>Rollback of using <code>MediaCodecAdapter</code> supplied pixel aspect ratio values when provided while processing <code>onOutputFormatChanged</code> (<a href="https://redirect.github.com/androidx/media/pull/1371">#1371</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>Fix bug in <code>ReplacingCuesResolver.discardCuesBeforeTimeUs</code> where the cue active at <code>timeUs</code> (started before but not yet ended) was incorrectly discarded (<a href="https://redirect.github.com/androidx/media/issues/1939">#1939</a>).</li>
    </ul>
    </li>
    <li>Metadata:
    <ul>
    <li>Extract disc/track numbering and genre from Vorbis comments into <code>MediaMetadata</code> (<a href="https://redirect.github.com/androidx/media/issues/1958">#1958</a>).</li>
    </ul>
    </li>
    </ul>
    <h2>1.5.0</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#141-2024-08-23">1.4.1 release</a>:</p>
    <ul>
    <li>Common Library:
    <ul>
    <li>Add <code>ForwardingSimpleBasePlayer</code> that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (<a href="https://redirect.github.com/androidx/media/issues/1183">#1183</a>).</li>
    <li>Replace <code>SimpleBasePlayer.State.playlist</code> by <code>getPlaylist()</code> method.</li>
    <li>Add override for <code>SimpleBasePlayer.State.Builder.setPlaylist()</code> to directly specify a <code>Timeline</code> and current <code>Tracks</code> and <code>Metadata</code> instead of building a playlist structure.</li>
    <li>Increase <code>minSdk</code> to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.</li>
    <li>Add <code>androidx.media3:media3-common-ktx</code> artifact which provides Kotlin-specific functionality built on top of the Common library</li>
    <li>Add <code>Player.listen</code> suspending extension function to spin a coroutine to listen to <code>Player.Events</code> to the <code>media3-common-ktx</code> library.</li>
    <li>Remove <code>@DoNotInline</code> annotations from manually out-of-lined inner classes designed to avoid <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/build/android/docs/class_verification_failures.md">runtime class verification failures</a>. Recent versions of <a href="https://developer.android.com/build/shrink-code">R8</a> now automatically out-of-line calls like these to avoid the runtime failures (so the manual out-of-lining is no longer required). All Gradle users of the library must already be a using a version of the Android Gradle Plugin that uses a version of R8 which does this, <a href="https://issuetracker.google.com/345472586#comment7">due to <code>compileSdk = 35</code></a>. Users of the library with non-Gradle build systems will need to ensure their R8-equivalent shrinking/obfuscating step does a similar automatic out-of-lining process in order to avoid runtime class verification failures. This change has <a href="http://r.android.com/3156141">already been done in other AndroidX libraries</a>.</li>
    </ul>
    </li>
    <li>ExoPlayer:
    <ul>
    <li><code>MediaCodecRenderer.onProcessedStreamChange()</code> can now be called for every media item. Previously it was not called for the first one. Use <code>MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()</code> to enable this.</li>
    <li>Add <code>PreloadMediaSource.PreloadControl.onPreloadError</code> to allow <code>PreloadMediaSource.PreloadControl</code> implementations to take actions when error occurs.</li>
    <li>Add <code>BasePreloadManager.Listener</code> to propagate preload events to apps.</li>
    <li>Allow changing SNTP client timeout and retry alternative addresses on timeout (<a href="https://redirect.github.com/androidx/media/issues/1540">#1540</a>).</li>
    <li>Remove <code>MediaCodecAdapter.Configuration.flags</code> as the field was always zero.</li>
    <li>Allow the user to select the built-in speaker for playback on Wear OS API 35+ (where the device advertises support for this).</li>
    <li>Defer the blocking call to <code>Context.getSystemService(Context.AUDIO_SERVICE)</code> until audio focus handling is enabled. This ensures the blocking call isn't done if audio focus handling is not enabled (<a href="https://redirect.github.com/androidx/media/pull/1616">#1616</a>).</li>
    <li>Allow playback regardless of buffered duration when loading fails (<a href="https://redirect.github.com/androidx/media/issues/1571">#1571</a>).</li>
    <li>Add <code>AnalyticsListener.onRendererReadyChanged()</code> to signal when individual renderers allow playback to be ready.</li>
    <li>Fix <code>MediaCodec.CryptoException</code> sometimes being reported as an &quot;unexpected runtime error&quot; when <code>MediaCodec</code> is operated in asynchronous mode (default behaviour on API 31+).</li>
    <li>Pass <code>bufferedDurationUs</code> instead of <code>bufferedPositionUs</code> with <code>PreloadMediaSource.PreloadControl.onContinueLoadingRequested()</code>. Also changes <code>DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS</code> to <code>DefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS</code>, apps then need to pass a value representing a specific duration from the default start position for which the corresponding media source has to be preloaded with this IntDef, instead of a position.</li>
    <li>Add <code>ForwardingRenderer</code> implementation that forwards all method calls to another renderer (<a href="https://redirect.github.com/androidx/media/pull/1703">1703</a>).</li>
    <li>Add playlist preloading for the next item in the playlist. Apps can enable preloading by calling <code>ExoPlayer.setPreloadConfiguration(PreloadConfiguration)</code> accordingly. By default preloading is disabled. When opted-in and to not interfere with playback, <code>DefaultLoadControl</code> restricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementing <code>LoadControl.shouldContinuePreloading()</code> accordingly (like when overriding this method in <code>DefaultLoadControl</code>). The default implementation of <code>LoadControl</code> disables preloading in case an app is using a custom implementation of <code>LoadControl</code>.</li>
    <li>Add method <code>MediaSourceEventListener.EventDispatcher.dispatchEvent()</code> to allow invoking events of subclass listeners (<a href="https://redirect.github.com/androidx/media/pull/1736">1736</a>).</li>
    <li>Add <code>DefaultPreloadManager.Builder</code> that builds the <code>DefaultPreloadManager</code> and <code>ExoPlayer</code> instances with consistently shared configurations.</li>
    <li>Remove <code>Renderer[]</code> parameter from <code>LoadControl.onTracksSelected()</code> as <code>DefaultLoadControl</code> implementation can retrieve the stream types from <code>ExoTrackSelection[]</code>.</li>
    <li>Deprecated <code>DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])</code> and marked method as final to prevent overrides. The new <code>DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])</code> should be used instead.</li>
    <li>Report <code>MediaSourceEventListener</code> events from secondary sources in <code>MergingMediaSource</code>. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added with <code>MediaItem.LocalConfiguration.subtitleConfigurations</code>), which may appear as duplicate load events emitted from <code>AnalyticsListener</code>.</li>
    <li>Prevent subtitle &amp; metadata errors from completely stopping playback. Instead the problematic track is disabled and playback of the remaining tracks continues (<a href="https://redirect.github.com/google/ExoPlayer/issues/1722">#1722</a>).
    <ul>
    <li>In new subtitle handling (during extraction), associated parse (e.g. invalid subtitle data) and load errors (e.g. HTTP 404) are emitted via <code>onLoadError</code> callbacks.</li>
    <li>In legacy subtitle handling (during rendering), only associated load errors are emitted via <code>onLoadError</code> callbacks while parse errors are silently ignored (this is pre-existing behaviour).</li>
    </ul>
    </li>
    <li>Fix bug where playlist items or periods in multi-period DASH streams with durations that don't match the actual content could cause frame freezes at the end of the item (<a href="https://redirect.github.com/androidx/media/issues/1698">#1698</a>).</li>
    <li>Add a setter to <code>SntpClient</code> to set the max elapsed time since the last update after which the client is re-initialized (<a href="https://redirect.github.com/androidx/media/pull/1794">#1794</a>).</li>
    </ul>
    </li>
    <li>Transformer:</li>
    </ul>
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/blob/release/RELEASENOTES.md">androidx.media3:media3-exoplayer-hls's changelog</a>.</em></p>
    <blockquote>
    <h3>1.5.1 (2024-12-19)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#150-2024-11-27">1.5.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Disable use of asynchronous decryption in MediaCodec to avoid reported
    codec timeout issues with this platform API
    (<a href="https://redirect.github.com/androidx/media/issues/1641">#1641</a>).</li>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Don't stop playback early when a <code>VBRI</code> frame's table of contents
    doesn't cover all the MP3 data in a file
    (<a href="https://redirect.github.com/androidx/media/issues/1904">#1904</a>).</li>
    </ul>
    </li>
    <li>Video:
    <ul>
    <li>Rollback of using <code>MediaCodecAdapter</code> supplied pixel aspect ratio values
    when provided while processing <code>onOutputFormatChanged</code>
    (<a href="https://redirect.github.com/androidx/media/pull/1371">#1371</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>Fix bug in <code>ReplacingCuesResolver.discardCuesBeforeTimeUs</code> where the cue
    active at <code>timeUs</code> (started before but not yet ended) was incorrectly
    discarded (<a href="https://redirect.github.com/androidx/media/issues/1939">#1939</a>).</li>
    </ul>
    </li>
    <li>Metadata:
    <ul>
    <li>Extract disc/track numbering and genre from Vorbis comments into
    <code>MediaMetadata</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1958">#1958</a>).</li>
    </ul>
    </li>
    </ul>
    <h3>1.5.0 (2024-11-27)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#141-2024-08-23">1.4.1 release</a>:</p>
    <ul>
    <li>Common Library:
    <ul>
    <li>Add <code>ForwardingSimpleBasePlayer</code> that allows forwarding to another
    player with small adjustments while ensuring full consistency and
    listener handling
    (<a href="https://redirect.github.com/androidx/media/issues/1183">#1183</a>).</li>
    <li>Replace <code>SimpleBasePlayer.State.playlist</code> by <code>getPlaylist()</code> method.</li>
    <li>Add override for <code>SimpleBasePlayer.State.Builder.setPlaylist()</code> to
    directly specify a <code>Timeline</code> and current <code>Tracks</code> and <code>Metadata</code>
    instead of building a playlist structure.</li>
    <li>Increase <code>minSdk</code> to 21 (Android Lollipop). This is aligned with all
    other AndroidX libraries.</li>
    <li>Add <code>androidx.media3:media3-common-ktx</code> artifact which provides
    Kotlin-specific functionality built on top of the Common library</li>
    <li>Add <code>Player.listen</code> suspending extension function to spin a coroutine to
    listen to <code>Player.Events</code> to the <code>media3-common-ktx</code> library.</li>
    <li>Remove <code>@DoNotInline</code> annotations from manually out-of-lined inner
    classes designed to avoid
    <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/build/android/docs/class_verification_failures.md">runtime class verification failures</a>.
    Recent versions of <a href="https://developer.android.com/build/shrink-code">R8</a></li>
    </ul>
    </li>
    </ul>
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a href="https://github.com/androidx/media/commit/76088cd6af7f263aba238b7a48d64bd4f060cb8b"><code>76088cd</code></a> Bump Media3 version to 1.5.1</li>
    <li><a href="https://github.com/androidx/media/commit/7ae9ddf1662b7174a2d82eb14a0f07fc5d7a3e95"><code>7ae9ddf</code></a> Update release notes for Media3 1.5.1 release</li>
    <li><a href="https://github.com/androidx/media/commit/e4e59cd929af4d80b84d9a392ae82cb4aa07cf0b"><code>e4e59cd</code></a> Switch default of async crypto mode to disabled</li>
    <li><a href="https://github.com/androidx/media/commit/508a4258a32c4f03ae69721a0609075d9d817b77"><code>508a425</code></a> Switch play FGS exemption to use custom action instead of commands</li>
    <li><a href="https://github.com/androidx/media/commit/52f976179622c764794859195dbecd6bea4104a4"><code>52f9761</code></a> Don't check codec's profile for MV-HEVC video.</li>
    <li><a href="https://github.com/androidx/media/commit/de91ebc6ae101cdd4c9e4246cb6840a7962aa38b"><code>de91ebc</code></a> Add vorbis comment support for track/disc numbering fields, and genre</li>
    <li><a href="https://github.com/androidx/media/commit/5d9badcb502aebc57027ba407959344b55731e9d"><code>5d9badc</code></a> Fix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue</li>
    <li><a href="https://github.com/androidx/media/commit/121b79ae96e334e79ec0f886fccf81357b9054d0"><code>121b79a</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/1943">#1943</a> from DolbyLaboratories:dlb/ac4-ajoc/dev</li>
    <li><a href="https://github.com/androidx/media/commit/fa9689ef9ad10d97f60b8b9496222ae0e2624cd5"><code>fa9689e</code></a> Clarify <code>CommandButton</code> javadoc around <code>iconResId</code> and <code>ICON_UNDEFINED</code></li>
    <li><a href="https://github.com/androidx/media/commit/f5bbb39e90ef54e163e716e5b01122d730192503"><code>f5bbb39</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/1823">#1823</a> from MGaetan89:remove_outdated_sdk_check</li>
    <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.4.1...1.5.1">compare view</a></li>
    </ul>
    </details>
    <br />
    
    Updates `androidx.media3:media3-exoplayer-dash` from 1.4.1 to 1.5.1
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/releases">androidx.media3:media3-exoplayer-dash's releases</a>.</em></p>
    <blockquote>
    <h2>1.5.1</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#150-2024-11-27">1.5.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (<a href="https://redirect.github.com/androidx/media/issues/1641">#1641</a>).</li>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Don't stop playback early when a <code>VBRI</code> frame's table of contents doesn't cover all the MP3 data in a file (<a href="https://redirect.github.com/androidx/media/issues/1904">#1904</a>).</li>
    </ul>
    </li>
    <li>Video:
    <ul>
    <li>Rollback of using <code>MediaCodecAdapter</code> supplied pixel aspect ratio values when provided while processing <code>onOutputFormatChanged</code> (<a href="https://redirect.github.com/androidx/media/pull/1371">#1371</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>Fix bug in <code>ReplacingCuesResolver.discardCuesBeforeTimeUs</code> where the cue active at <code>timeUs</code> (started before but not yet ended) was incorrectly discarded (<a href="https://redirect.github.com/androidx/media/issues/1939">#1939</a>).</li>
    </ul>
    </li>
    <li>Metadata:
    <ul>
    <li>Extract disc/track numbering and genre from Vorbis comments into <code>MediaMetadata</code> (<a href="https://redirect.github.com/androidx/media/issues/1958">#1958</a>).</li>
    </ul>
    </li>
    </ul>
    <h2>1.5.0</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#141-2024-08-23">1.4.1 release</a>:</p>
    <ul>
    <li>Common Library:
    <ul>
    <li>Add <code>ForwardingSimpleBasePlayer</code> that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (<a href="https://redirect.github.com/androidx/media/issues/1183">#1183</a>).</li>
    <li>Replace <code>SimpleBasePlayer.State.playlist</code> by <code>getPlaylist()</code> method.</li>
    <li>Add override for <code>SimpleBasePlayer.State.Builder.setPlaylist()</code> to directly specify a <code>Timeline</code> and current <code>Tracks</code> and <code>Metadata</code> instead of building a playlist structure.</li>
    <li>Increase <code>minSdk</code> to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.</li>
    <li>Add <code>androidx.media3:media3-common-ktx</code> artifact which provides Kotlin-specific functionality built on top of the Common library</li>
    <li>Add <code>Player.listen</code> suspending extension function to spin a coroutine to listen to <code>Player.Events</code> to the <code>media3-common-ktx</code> library.</li>
    <li>Remove <code>@DoNotInline</code> annotations from manually out-of-lined inner classes designed to avoid <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/build/android/docs/class_verification_failures.md">runtime class verification failures</a>. Recent versions of <a href="https://developer.android.com/build/shrink-code">R8</a> now automatically out-of-line calls like these to avoid the runtime failures (so the manual out-of-lining is no longer required). All Gradle users of the library must already be a using a version of the Android Gradle Plugin that uses a version of R8 which does this, <a href="https://issuetracker.google.com/345472586#comment7">due to <code>compileSdk = 35</code></a>. Users of the library with non-Gradle build systems will need to ensure their R8-equivalent shrinking/obfuscating step does a similar automatic out-of-lining process in order to avoid runtime class verification failures. This change has <a href="http://r.android.com/3156141">already been done in other AndroidX libraries</a>.</li>
    </ul>
    </li>
    <li>ExoPlayer:
    <ul>
    <li><code>MediaCodecRenderer.onProcessedStreamChange()</code> can now be called for every media item. Previously it was not called for the first one. Use <code>MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()</code> to enable this.</li>
    <li>Add <code>PreloadMediaSource.PreloadControl.onPreloadError</code> to allow <code>PreloadMediaSource.PreloadControl</code> implementations to take actions when error occurs.</li>
    <li>Add <code>BasePreloadManager.Listener</code> to propagate preload events to apps.</li>
    <li>Allow changing SNTP client timeout and retry alternative addresses on timeout (<a href="https://redirect.github.com/androidx/media/issues/1540">#1540</a>).</li>
    <li>Remove <code>MediaCodecAdapter.Configuration.flags</code> as the field was always zero.</li>
    <li>Allow the user to select the built-in speaker for playback on Wear OS API 35+ (where the device advertises support for this).</li>
    <li>Defer the blocking call to <code>Context.getSystemService(Context.AUDIO_SERVICE)</code> until audio focus handling is enabled. This ensures the blocking call isn't done if audio focus handling is not enabled (<a href="https://redirect.github.com/androidx/media/pull/1616">#1616</a>).</li>
    <li>Allow playback regardless of buffered duration when loading fails (<a href="https://redirect.github.com/androidx/media/issues/1571">#1571</a>).</li>
    <li>Add <code>AnalyticsListener.onRendererReadyChanged()</code> to signal when individual renderers allow playback to be ready.</li>
    <li>Fix <code>MediaCodec.CryptoException</code> sometimes being reported as an &quot;unexpected runtime error&quot; when <code>MediaCodec</code> is operated in asynchronous mode (default behaviour on API 31+).</li>
    <li>Pass <code>bufferedDurationUs</code> instead of <code>bufferedPositionUs</code> with <code>PreloadMediaSource.PreloadControl.onContinueLoadingRequested()</code>. Also changes <code>DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS</code> to <code>DefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS</code>, apps then need to pass a value representing a specific duration from the default start position for which the corresponding media source has to be preloaded with this IntDef, instead of a position.</li>
    <li>Add <code>ForwardingRenderer</code> implementation that forwards all method calls to another renderer (<a href="https://redirect.github.com/androidx/media/pull/1703">1703</a>).</li>
    <li>Add playlist preloading for the next item in the playlist. Apps can enable preloading by calling <code>ExoPlayer.setPreloadConfiguration(PreloadConfiguration)</code> accordingly. By default preloading is disabled. When opted-in and to not interfere with playback, <code>DefaultLoadControl</code> restricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementing <code>LoadControl.shouldContinuePreloading()</code> accordingly (like when overriding this method in <code>DefaultLoadControl</code>). The default implementation of <code>LoadControl</code> disables preloading in case an app is using a custom implementation of <code>LoadControl</code>.</li>
    <li>Add method <code>MediaSourceEventListener.EventDispatcher.dispatchEvent()</code> to allow invoking events of subclass listeners (<a href="https://redirect.github.com/androidx/media/pull/1736">1736</a>).</li>
    <li>Add <code>DefaultPreloadManager.Builder</code> that builds the <code>DefaultPreloadManager</code> and <code>ExoPlayer</code> instances with consistently shared configurations.</li>
    <li>Remove <code>Renderer[]</code> parameter from <code>LoadControl.onTracksSelected()</code> as <code>DefaultLoadControl</code> implementation can retrieve the stream types from <code>ExoTrackSelection[]</code>.</li>
    <li>Deprecated <code>DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])</code> and marked method as final to prevent overrides. The new <code>DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])</code> should be used instead.</li>
    <li>Report <code>MediaSourceEventListener</code> events from secondary sources in <code>MergingMediaSource</code>. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added with <code>MediaItem.LocalConfiguration.subtitleConfigurations</code>), which may appear as duplicate load events emitted from <code>AnalyticsListener</code>.</li>
    <li>Prevent subtitle &amp; metadata errors from completely stopping playback. Instead the problematic track is disabled and playback of the remaining tracks continues (<a href="https://redirect.github.com/google/ExoPlayer/issues/1722">#1722</a>).
    <ul>
    <li>In new subtitle handling (during extraction), associated parse (e.g. invalid subtitle data) and load errors (e.g. HTTP 404) are emitted via <code>onLoadError</code> callbacks.</li>
    <li>In legacy subtitle handling (during rendering), only associated load errors are emitted via <code>onLoadError</code> callbacks while parse errors are silently ignored (this is pre-existing behaviour).</li>
    </ul>
    </li>
    <li>Fix bug where playlist items or periods in multi-period DASH streams with durations that don't match the actual content could cause frame freezes at the end of the item (<a href="https://redirect.github.com/androidx/media/issues/1698">#1698</a>).</li>
    <li>Add a setter to <code>SntpClient</code> to set the max elapsed time since the last update after which the client is re-initialized (<a href="https://redirect.github.com/androidx/media/pull/1794">#1794</a>).</li>
    </ul>
    </li>
    <li>Transformer:</li>
    </ul>
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/blob/release/RELEASENOTES.md">androidx.media3:media3-exoplayer-dash's changelog</a>.</em></p>
    <blockquote>
    <h3>1.5.1 (2024-12-19)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#150-2024-11-27">1.5.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Disable use of asynchronous decryption in MediaCodec to avoid reported
    codec timeout issues with this platform API
    (<a href="https://redirect.github.com/androidx/media/issues/1641">#1641</a>).</li>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Don't stop playback early when a <code>VBRI</code> frame's table of contents
    doesn't cover all the MP3 data in a file
    (<a href="https://redirect.github.com/androidx/media/issues/1904">#1904</a>).</li>
    </ul>
    </li>
    <li>Video:
    <ul>
    <li>Rollback of using <code>MediaCodecAdapter</code> supplied pixel aspect ratio values
    when provided while processing <code>onOutputFormatChanged</code>
    (<a href="https://redirect.github.com/androidx/media/pull/1371">#1371</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>Fix bug in <code>ReplacingCuesResolver.discardCuesBeforeTimeUs</code> where the cue
    active at <code>timeUs</code> (started before but not yet ended) was incorrectly
    discarded (<a href="https://redirect.github.com/androidx/media/issues/1939">#1939</a>).</li>
    </ul>
    </li>
    <li>Metadata:
    <ul>
    <li>Extract disc/track numbering and genre from Vorbis comments into
    <code>MediaMetadata</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1958">#1958</a>).</li>
    </ul>
    </li>
    </ul>
    <h3>1.5.0 (2024-11-27)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#141-2024-08-23">1.4.1 release</a>:</p>
    <ul>
    <li>Common Library:
    <ul>
    <li>Add <code>ForwardingSimpleBasePlayer</code> that allows forwarding to another
    player with small adjustments while ensuring full consistency and
    listener handling
    (<a href="https://redirect.github.com/androidx/media/issues/1183">#1183</a>).</li>
    <li>Replace <code>SimpleBasePlayer.State.playlist</code> by <code>getPlaylist()</code> method.</li>
    <li>Add override for <code>SimpleBasePlayer.State.Builder.setPlaylist()</code> to
    directly specify a <code>Timeline</code> and current <code>Tracks</code> and <code>Metadata</code>
    instead of building a playlist structure.</li>
    <li>Increase <code>minSdk</code> to 21 (Android Lollipop). This is aligned with all
    other AndroidX libraries.</li>
    <li>Add <code>androidx.media3:media3-common-ktx</code> artifact which provides
    Kotlin-specific functionality built on top of the Common library</li>
    <li>Add <code>Player.listen</code> suspending extension function to spin a coroutine to
    listen to <code>Player.Events</code> to the <code>media3-common-ktx</code> library.</li>
    <li>Remove <code>@DoNotInline</code> annotations from manually out-of-lined inner
    classes designed to avoid
    <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/build/android/docs/class_verification_failures.md">runtime class verification failures</a>.
    Recent versions of <a href="https://developer.android.com/build/shrink-code">R8</a></li>
    </ul>
    </li>
    </ul>
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a href="https://github.com/androidx/media/commit/76088cd6af7f263aba238b7a48d64bd4f060cb8b"><code>76088cd</code></a> Bump Media3 version to 1.5.1</li>
    <li><a href="https://github.com/androidx/media/commit/7ae9ddf1662b7174a2d82eb14a0f07fc5d7a3e95"><code>7ae9ddf</code></a> Update release notes for Media3 1.5.1 release</li>
    <li><a href="https://github.com/androidx/media/commit/e4e59cd929af4d80b84d9a392ae82cb4aa07cf0b"><code>e4e59cd</code></a> Switch default of async crypto mode to disabled</li>
    <li><a href="https://github.com/androidx/media/commit/508a4258a32c4f03ae69721a0609075d9d817b77"><code>508a425</code></a> Switch play FGS exemption to use custom action instead of commands</li>
    <li><a href="https://github.com/androidx/media/commit/52f976179622c764794859195dbecd6bea4104a4"><code>52f9761</code></a> Don't check codec's profile for MV-HEVC video.</li>
    <li><a href="https://github.com/androidx/media/commit/de91ebc6ae101cdd4c9e4246cb6840a7962aa38b"><code>de91ebc</code></a> Add vorbis comment support for track/disc numbering fields, and genre</li>
    <li><a href="https://github.com/androidx/media/commit/5d9badcb502aebc57027ba407959344b55731e9d"><code>5d9badc</code></a> Fix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue</li>
    <li><a href="https://github.com/androidx/media/commit/121b79ae96e334e79ec0f886fccf81357b9054d0"><code>121b79a</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/1943">#1943</a> from DolbyLaboratories:dlb/ac4-ajoc/dev</li>
    <li><a href="https://github.com/androidx/media/commit/fa9689ef9ad10d97f60b8b9496222ae0e2624cd5"><code>fa9689e</code></a> Clarify <code>CommandButton</code> javadoc around <code>iconResId</code> and <code>ICON_UNDEFINED</code></li>
    <li><a href="https://github.com/androidx/media/commit/f5bbb39e90ef54e163e716e5b01122d730192503"><code>f5bbb39</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/1823">#1823</a> from MGaetan89:remove_outdated_sdk_check</li>
    <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.4.1...1.5.1">compare view</a></li>
    </ul>
    </details>
    <br />
    
    Updates `androidx.media3:media3-exoplayer-rtsp` from 1.4.1 to 1.5.1
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/releases">androidx.media3:media3-exoplayer-rtsp's releases</a>.</em></p>
    <blockquote>
    <h2>1.5.1</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#150-2024-11-27">1.5.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (<a href="https://redirect.github.com/androidx/media/issues/1641">#1641</a>).</li>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Don't stop playback early when a <code>VBRI</code> frame's table of contents doesn't cover all the MP3 data in a file (<a href="https://redirect.github.com/androidx/media/issues/1904">#1904</a>).</li>
    </ul>
    </li>
    <li>Video:
    <ul>
    <li>Rollback of using <code>MediaCodecAdapter</code> supplied pixel aspect ratio values when provided while processing <code>onOutputFormatChanged</code> (<a href="https://redirect.github.com/androidx/media/pull/1371">#1371</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>Fix bug in <code>ReplacingCuesResolver.discardCuesBeforeTimeUs</code> where the cue active at <code>timeUs</code> (started before but not yet ended) was incorrectly discarded (<a href="https://redirect.github.com/androidx/media/issues/1939">#1939</a>).</li>
    </ul>
    </li>
    <li>Metadata:
    <ul>
    <li>Extract disc/track numbering and genre from Vorbis comments into <code>MediaMetadata</code> (<a href="https://redirect.github.com/androidx/media/issues/1958">#1958</a>).</li>
    </ul>
    </li>
    </ul>
    <h2>1.5.0</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#141-2024-08-23">1.4.1 release</a>:</p>
    <ul>
    <li>Common Library:
    <ul>
    <li>Add <code>ForwardingSimpleBasePlayer</code> that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (<a href="https://redirect.github.com/androidx/media/issues/1183">#1183</a>).</li>
    <li>Replace <code>SimpleBasePlayer.State.playlist</code> by <code>getPlaylist()</code> method.</li>
    <li>Add override for <code>SimpleBasePlayer.State.Builder.setPlaylist()</code> to directly specify a <code>Timeline</code> and current <code>Tracks</code> and <code>Metadata</code> instead of building a playlist structure.</li>
    <li>Increase <code>minSdk</code> to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.</li>
    <li>Add <code>androidx.media3:media3-common-ktx</code> artifact which provides Kotlin-specific functionality built on top of the Common library</li>
    <li>Add <code>Player.listen</code> suspending extension function to spin a coroutine to listen to <code>Player.Events</code> to the <code>media3-common-ktx</code> library.</li>
    <li>Remove <code>@DoNotInline</code> annotations from manually out-of-lined inner classes designed to avoid <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/build/android/docs/class_verification_failures.md">runtime class verification failures</a>. Recent versions of <a href="https://developer.android.com/build/shrink-code">R8</a> now automatically out-of-line calls like these to avoid the runtime failures (so the manual out-of-lining is no longer required). All Gradle users of the library must already be a using a version of the Android Gradle Plugin that uses a version of R8 which does this, <a href="https://issuetracker.google.com/345472586#comment7">due to <code>compileSdk = 35</code></a>. Users of the library with non-Gradle build systems will need to ensure their R8-equivalent shrinking/obfuscating step does a similar automatic out-of-lining process in order to avoid runtime class verification failures. This change has <a href="http://r.android.com/3156141">already been done in other AndroidX libraries</a>.</li>
    </ul>
    </li>
    <li>ExoPlayer:
    <ul>
    <li><code>MediaCodecRenderer.onProcessedStreamChange()</code> can now be called for every media item. Previously it was not called for the first one. Use <code>MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()</code> to enable this.</li>
    <li>Add <code>PreloadMediaSource.PreloadControl.onPreloadError</code> to allow <code>PreloadMediaSource.PreloadControl</code> implementations to take actions when error occurs.</li>
    <li>Add <code>BasePreloadManager.Listener</code> to propagate preload events to apps.</li>
    <li>Allow changing SNTP client timeout and retry alternative addresses on timeout (<a href="https://redirect.github.com/androidx/media/issues/1540">#1540</a>).</li>
    <li>Remove <code>MediaCodecAdapter.Configuration.flags</code> as the field was always zero.</li>
    <li>Allow the user to select the built-in speaker for playback on Wear OS API 35+ (where the device advertises support for this).</li>
    <li>Defer the blocking call to <code>Context.getSystemService(Context.AUDIO_SERVICE)</code> until audio focus handling is enabled. This ensures the blocking call isn't done if audio focus handling is not enabled (<a href="https://redirect.github.com/androidx/media/pull/1616">#1616</a>).</li>
    <li>Allow playback regardless of buffered duration when loading fails (<a href="https://redirect.github.com/androidx/media/issues/1571">#1571</a>).</li>
    <li>Add <code>AnalyticsListener.onRendererReadyChanged()</code> to signal when individual renderers allow playback to be ready.</li>
    <li>Fix <code>MediaCodec.CryptoException</code> sometimes being reported as an &quot;unexpected runtime error&quot; when <code>MediaCodec</code> is operated in asynchronous mode (default behaviour on API 31+).</li>
    <li>Pass <code>bufferedDurationUs</code> instead of <code>bufferedPositionUs</code> with <code>PreloadMediaSource.PreloadControl.onContinueLoadingRequested()</code>. Also changes <code>DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS</code> to <code>DefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS</code>, apps then need to pass a value representing a specific duration from the default start position for which the corresponding media source has to be preloaded with this IntDef, instead of a position.</li>
    <li>Add <code>ForwardingRenderer</code> implementation that forwards all method calls to another renderer (<a href="https://redirect.github.com/androidx/media/pull/1703">1703</a>).</li>
    <li>Add playlist preloading for the next item in the playlist. Apps can enable preloading by calling <code>ExoPlayer.setPreloadConfiguration(PreloadConfiguration)</code> accordingly. By default preloading is disabled. When opted-in and to not interfere with playback, <code>DefaultLoadControl</code> restricts preloading to start and continue only when the player is not loading for playback. Apps can change this behaviour by implementing <code>LoadControl.shouldContinuePreloading()</code> accordingly (like when overriding this method in <code>DefaultLoadControl</code>). The default implementation of <code>LoadControl</code> disables preloading in case an app is using a custom implementation of <code>LoadControl</code>.</li>
    <li>Add method <code>MediaSourceEventListener.EventDispatcher.dispatchEvent()</code> to allow invoking events of subclass listeners (<a href="https://redirect.github.com/androidx/media/pull/1736">1736</a>).</li>
    <li>Add <code>DefaultPreloadManager.Builder</code> that builds the <code>DefaultPreloadManager</code> and <code>ExoPlayer</code> instances with consistently shared configurations.</li>
    <li>Remove <code>Renderer[]</code> parameter from <code>LoadControl.onTracksSelected()</code> as <code>DefaultLoadControl</code> implementation can retrieve the stream types from <code>ExoTrackSelection[]</code>.</li>
    <li>Deprecated <code>DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])</code> and marked method as final to prevent overrides. The new <code>DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])</code> should be used instead.</li>
    <li>Report <code>MediaSourceEventListener</code> events from secondary sources in <code>MergingMediaSource</code>. This will result in load start/error/cancelled/completed events being reported for sideloaded subtitles (those added with <code>MediaItem.LocalConfiguration.subtitleConfigurations</code>), which may appear as duplicate load events emitted from <code>AnalyticsListener</code>.</li>
    <li>Prevent subtitle &amp; metadata errors from completely stopping playback. Instead the problematic track is disabled and playback of the remaining tracks continues (<a href="https://redirect.github.com/google/ExoPlayer/issues/1722">#1722</a>).
    <ul>
    <li>In new subtitle handling (during extraction), associated parse (e.g. invalid subtitle data) and load errors (e.g. HTTP 404) are emitted via <code>onLoadError</code> callbacks.</li>
    <li>In legacy subtitle handling (during rendering), only associated load errors are emitted via <code>onLoadError</code> callbacks while parse errors are silently ignored (this is pre-existing behaviour).</li>
    </ul>
    </li>
    <li>Fix bug where playlist items or periods in multi-period DASH streams with durations that don't match the actual content could cause frame freezes at the end of the item (<a href="https://redirect.github.com/androidx/media/issues/1698">#1698</a>).</li>
    <li>Add a setter to <code>SntpClient</code> to set the max elapsed time since the last update after which the client is re-initialized (<a href="https://redirect.github.com/androidx/media/pull/1794">#1794</a>).</li>
    </ul>
    </li>
    <li>Transformer:</li>
    </ul>
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/blob/release/RELEASENOTES.md">androidx.media3:media3-exoplayer-rtsp's changelog</a>.</em></p>
    <blockquote>
    <h3>1.5.1 (2024-12-19)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#150-2024-11-27">1.5.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Disable use of asynchronous decryption in MediaCodec to avoid reported
    codec timeout issues with this platform API
    (<a href="https://redirect.github.com/androidx/media/issues/1641">#1641</a>).</li>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Don't stop playback early when a <code>VBRI</code> frame's table of contents
    doesn't cover all the MP3 data in a file
    (<a href="https://redirect.github.com/androidx/media/issues/1904">#1904</a>).</li>
    </ul>
    </li>
    <li>Video:
    <ul>
    <li>Rollback of using <code>MediaCodecAdapter</code> supplied pixel aspect ratio values
    when provided while processing <code>onOutputFormatChanged</code>
    (<a href="https://redirect.github.com/androidx/media/pull/1371">#1371</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>Fix bug in <code>ReplacingCuesResolver.discardCuesBeforeTimeUs</code> where the cue
    active at <code>timeUs</code> (started before but not yet ended) was incorrectly
    discarded (<a href="https://redirect.github.com/androidx/media/issues/1939">#1939</a>).</li>
    </ul>
    </li>
    <li>Metadata:
    <ul>
    <li>Extract disc/track numbering and genre from Vorbis comments into
    <code>MediaMetadata</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1958">#1958</a>).</li>
    </ul>
    </li>
    </ul>
    <h3>1.5.0 (2024-11-27)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#141-2024-08-23">1.4.1 release</a>:</p>
    <ul>
    <li>Common Library:
    <ul>
    <li>Add <code>ForwardingSimpleBasePlayer</code> that allows forwarding to another
    player with small adjustments while ensuring full consistency and
    listener handling
    (<a href="https://redirect.github.com/androidx/media/issues/1183">#1183</a>).</li>
    <li>Replace <code>SimpleBasePlayer.State.playlist</code> by <code>getPlaylist()</code> method.</li>
    <li>Add override for <code>SimpleBasePlayer.State.Builder.setPlaylist()</code> to
    directly specify a <code>Timeline</code> and current <code>Tracks</code> and <code>Metadata</code>
    instead of building a playlist structure.</li>
    <li>Increase <code>minSdk</code> to 21 (Android Lollipop). This is aligned with all
    other AndroidX libraries.</li>
    <li>Add <code>androidx.media3:media3-common-ktx</code> artifact which provides
    Kotlin-specific functionality built on top of the Common library</li>
    <li>Add <code>Player.listen</code> suspending extension function to spin a coroutine to
    listen to <code>Player.Events</code> to the <code>media3-common-ktx</code> library.</li>
    <li>Remove <code>@DoNotInline</code> annotations from manually out-of-lined inner
    classes designed to avoid
    <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/build/android/docs/class_verification_failures.md">runtime class verification failures</a>.
    Recent versions of <a href="https://developer.android.com/build/shrink-code">R8</a></li>
    </ul>
    </li>
    </ul>
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a href="https://github.com/androidx/media/commit/76088cd6af7f263aba238b7a48d64bd4f060cb8b"><code>76088cd</code></a> Bump Media3 version to 1.5.1</li>
    <li><a href="https://github.com/androidx/media/commit/7ae9ddf1662b7174a2d82eb14a0f07fc5d7a3e95"><code>7ae9ddf</code></a> Update release notes for Media3 1.5.1 release</li>
    <li><a href="https://github.com/androidx/media/commit/e4e59cd929af4d80b84d9a392ae82cb4aa07cf0b"><code>e4e59cd</code></a> Switch default of async crypto mode to disabled</li>
    <li><a href="https://github.com/androidx/media/commit/508a4258a32c4f03ae69721a0609075d9d817b77"><code>508a425</code></a> Switch play FGS exemption to use custom action instead of commands</li>
    <li><a href="https://github.com/androidx/media/commit/52f976179622c764794859195dbecd6bea4104a4"><code>52f9761</code></a> Don't check codec's profile for MV-HEVC video.</li>
    <li><a href="https://github.com/androidx/media/commit/de91ebc6ae101cdd4c9e4246cb6840a7962aa38b"><code>de91ebc</code></a> Add vorbis comment support for track/disc numbering fields, and genre</li>
    <li><a href="https://github.com/androidx/media/commit/5d9badcb502aebc57027ba407959344b55731e9d"><code>5d9badc</code></a> Fix ReplacingCuesResolver.discardCuesBeforeTimeUs to retain active cue</li>
    <li><a href="https://github.com/androidx/media/commit/121b79ae96e334e79ec0f886fccf81357b9054d0"><code>121b79a</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/1943">#1943</a> from DolbyLaboratories:dlb/ac4-ajoc/dev</li>
    <li><a href="https://github.com/androidx/media/commit/fa9689ef9ad10d97f60b8b9496222ae0e2624cd5"><code>fa9689e</code></a> Clarify <code>CommandButton</code> javadoc around <code>iconResId</code> and <code>ICON_UNDEFINED</code></li>
    <li><a href="https://github.com/androidx/media/commit/f5bbb39e90ef54e163e716e5b01122d730192503"><code>f5bbb39</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/1823">#1823</a> from MGaetan89:remove_outdated_sdk_check</li>
    <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.4.1...1.5.1">compare view</a></li>
    </ul>
    </details>
    <br />
    
    Updates `androidx.media3:media3-exoplayer-smoothstreaming` from 1.4.1 to 1.5.1
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/releases">androidx.media3:media3-exoplayer-smoothstreaming's releases</a>.</em></p>
    <blockquote>
    <h2>1.5.1</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#150-2024-11-27">1.5.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Disable use of asynchronous decryption in MediaCodec to avoid reported codec timeout issues with this platform API (<a href="https://redirect.github.com/androidx/media/issues/1641">#1641</a>).</li>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Don't stop playback early when a <code>VBRI</code> frame's table of contents doesn't cover all the MP3 data in a file (<a href="https://redirect.github.com/androidx/media/issues/1904">#1904</a>).</li>
    </ul>
    </li>
    <li>Video:
    <ul>
    <li>Rollback of using <code>MediaCodecAdapter</code> supplied pixel aspect ratio values when provided while processing <code>onOutputFormatChanged</code> (<a href="https://redirect.github.com/androidx/media/pull/1371">#1371</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>Fix bug in <code>ReplacingCuesResolver.discardCuesBeforeTimeUs</code> where the cue active at <code>timeUs</code> (started before but not yet ended) was incorrectly discarded (<a href="https://redirect.github.com/androidx/media/issues/1939">#1939</a>).</li>
    </ul>
    </li>
    <li>Metadata:
    <ul>
    <li>Extract disc/track numbering and genre from Vorbis comments into <code>MediaMetadata</code> (<a href="https://redirect.github.com/androidx/media/issues/1958">#1958</a>).</li>
    </ul>
    </li>
    </ul>
    <h2>1.5.0</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#141-2024-08-23">1.4.1 release</a>:</p>
    <ul>
    <li>Common Library:
    <ul>
    <li>Add <code>ForwardingSimpleBasePlayer</code> that allows forwarding to another player with small adjustments while ensuring full consistency and listener handling (<a href="https://redirect.github.com/androidx/media/issues/1183">#1183</a>).</li>
    <li>Replace <code>SimpleBasePlayer.State.playlist</code> by <code>getPlaylist()</code> method.</li>
    <li>Add override for <code>SimpleBasePlayer.State.Builder.setPlaylist()</code> to directly specify a <code>Timeline</code> and current <code>Tracks</code> and <code>Metadata</code> instead of building a playlist structure.</li>
    <li>Increase <code>minSdk</code> to 21 (Android Lollipop). This is aligned with all other AndroidX libraries.</li>
    <li>Add <code>androidx.media3:media3-common-ktx</code> artifact which provides Kotlin-specific functionality built on top of the Common library</li>
    <li>Add <code>Player.listen</code> suspending extension function to spin a coroutine to listen to <code>Player.Events</code> to the <code>media3-common-ktx</code> library.</li>
    <li>Remove <code>@DoNotInline</code> annotations from manually out-of-lined inner classes designed to avoid <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/build/android/docs/class_verification_failures.md">runtime class verification failures</a>. Recent versions of <a href="https://developer.android.com/build/shrink-code">R8</a> now automatically out-of-line calls like these to avoid the runtime failures (so the manual out-of-lining is no longer required). All Gradle users of the library must already be a using a version of the Android Gradle Plugin that uses a version of R8 which does this, <a href="https://issuetracker.google.com/345472586#comment7">due to <code>compileSdk = 35</code></a>. Users of the library with non-Gradle build systems will need to ensure their R8-equivalent shrinking/obfuscating step does a similar automatic out-of-lining process in order to avoid runtime class verification failures. This change has <a href="http://r.android.com/3156141">already been done in other AndroidX libraries</a>.</li>
    </ul>
    </li>
    <li>ExoPlayer:
    <ul>
    <li><code>MediaCodecRenderer.onProcessedStreamChange()</code> can now be called for every media item. Previously it was not called for the first one. Use <code>MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()</code> to enable this.</li>
    <li>Add <code>PreloadMediaSource.PreloadControl.onPreloadError</code> to allow <code>PreloadMediaSource.PreloadControl</code> implementations to take actions when error occurs.</li>
    <li>Add <code>BasePreloadManager.Listener</code> to propagate preload events to apps.</li>
    <li>Allow changing SNTP client timeout and retry alternative addresses on timeout (<a href="https://redirect.github.com/androidx/media/issues/1540">#1540</a>).</li>
    <li>Remove <code>MediaCodecAdapter.Configuration.flags</code> as the fie...
    
    _Description has been truncated_
    
    > **Note**
    > Automatic rebases have been disabled on this pull request as it has been…
    dependabot[bot] authored Jun 30, 2025
    Configuration menu
    Copy the full SHA
    35eaf3e View commit details
    Browse the repository at this point in the history

Commits on Jul 1, 2025

  1. [video_player] Use CADisplayLink on macOS 14.0+ (#9533)

    Marks the CVDisplayLink-based implementation that was previously used on macOS in all cases with deprecation suppressions, and switches macOS 14+ to share the CADisplayLink-based implementation that is currently used for iOS.
    
    Fixes flutter/flutter#171391
    
    ## Pre-Review Checklist
    
    [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
    stuartmorgan-g authored Jul 1, 2025
    Configuration menu
    Copy the full SHA
    3dc682d View commit details
    Browse the repository at this point in the history
Loading