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: 848d7e915e21
Choose a base ref
...
head repository: flutter/packages
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: e93995a89a7e
Choose a head ref
  • 8 commits
  • 64 files changed
  • 6 contributors

Commits on Sep 3, 2024

  1. [video_player]: Bump exoplayer_version from 1.4.0 to 1.4.1 in /packag…

    …es/video_player/video_player_android/android (#7564)
    
    Bumps `exoplayer_version` from 1.4.0 to 1.4.1.
    Updates `androidx.media3:media3-exoplayer` from 1.4.0 to 1.4.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.4.1</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code> (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing non-MP3 data based on the length field in an <code>Info</code> frame (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they are correctly inherited from parent nodes with percentage <code>tts:fontSize</code> values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to incorrectly handling the case of the requested output start time being greater than or equal to the final event time in the <code>Subtitle</code> (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices playing L1 Widevine content. This error is caused by an incomplete implementation of the framework <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a> method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next' action, as <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a> (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a <code>ForegroundServiceDidNotStartInTimeException</code> (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </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.4.1 (2024-08-23)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing
    non-MP3 data based on the length field in an <code>Info</code> frame
    (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they
    are correctly inherited from parent nodes with percentage <code>tts:fontSize</code>
    values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to
    incorrectly handling the case of the requested output start time being
    greater than or equal to the final event time in the <code>Subtitle</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices
    playing L1 Widevine content. This error is caused by an incomplete
    implementation of the framework
    <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a>
    method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next'
    action, as
    <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a>
    (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in
    <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a
    <code>ForegroundServiceDidNotStartInTimeException</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing
    (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a href="https://github.com/androidx/media/commit/c35a9d62baec57118ea898e271ac66819399649b"><code>c35a9d6</code></a> Bump media3 version to 1.4.1</li>
    <li><a href="https://github.com/androidx/media/commit/517762c08747c597d85be2e6c497a15f3674d340"><code>517762c</code></a> Update release notes for 1.4.1 bug fix release</li>
    <li><a href="https://github.com/androidx/media/commit/88b640136a8bbe6ceb046c3718a034bdd4e92fd7"><code>88b6401</code></a> Allow playback regardless buffered duration when loading fails</li>
    <li><a href="https://github.com/androidx/media/commit/9b39e3514f40327d7201a7b894247a625f278412"><code>9b39e35</code></a> Update translations</li>
    <li><a href="https://github.com/androidx/media/commit/b184677b7b50652ea9a97d1504c80f171143d7d9"><code>b184677</code></a> Check WV version before relying on <code>MediaDrm.requiresSecureDecoder</code></li>
    <li><a href="https://github.com/androidx/media/commit/f139d709c7eacc99edb2912126746b6c6d44ae2f"><code>f139d70</code></a> Handle preload callbacks asynchronously in PreloadMediaSource</li>
    <li><a href="https://github.com/androidx/media/commit/07e9c659d75e8f295a6a6feebb1090ad532e36fb"><code>07e9c65</code></a> Handle <code>HEADSETHOOK</code> as 'play' in <code>MediaButtonReceiver.onReceive</code></li>
    <li><a href="https://github.com/androidx/media/commit/eebf081528aef899461f24322a62d5e85e544994"><code>eebf081</code></a> Pass missing <code>length</code> into <code>SubtitleParser</code> from <code>SubtitleExtractor</code></li>
    <li><a href="https://github.com/androidx/media/commit/c773789edb778ea8cdb81c707d4637ee5a5acac5"><code>c773789</code></a> Skip invalid media description in <code>SessionDescriptionParser</code></li>
    <li><a href="https://github.com/androidx/media/commit/bf934495df4cc645579ecb0c03dee4e3d5fc1f9d"><code>bf93449</code></a> Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code></li>
    <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.4.0...1.4.1">compare view</a></li>
    </ul>
    </details>
    <br />
    
    Updates `androidx.media3:media3-exoplayer-hls` from 1.4.0 to 1.4.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.4.1</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code> (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing non-MP3 data based on the length field in an <code>Info</code> frame (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they are correctly inherited from parent nodes with percentage <code>tts:fontSize</code> values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to incorrectly handling the case of the requested output start time being greater than or equal to the final event time in the <code>Subtitle</code> (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices playing L1 Widevine content. This error is caused by an incomplete implementation of the framework <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a> method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next' action, as <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a> (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a <code>ForegroundServiceDidNotStartInTimeException</code> (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </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.4.1 (2024-08-23)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing
    non-MP3 data based on the length field in an <code>Info</code> frame
    (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they
    are correctly inherited from parent nodes with percentage <code>tts:fontSize</code>
    values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to
    incorrectly handling the case of the requested output start time being
    greater than or equal to the final event time in the <code>Subtitle</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices
    playing L1 Widevine content. This error is caused by an incomplete
    implementation of the framework
    <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a>
    method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next'
    action, as
    <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a>
    (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in
    <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a
    <code>ForegroundServiceDidNotStartInTimeException</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing
    (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a href="https://github.com/androidx/media/commit/c35a9d62baec57118ea898e271ac66819399649b"><code>c35a9d6</code></a> Bump media3 version to 1.4.1</li>
    <li><a href="https://github.com/androidx/media/commit/517762c08747c597d85be2e6c497a15f3674d340"><code>517762c</code></a> Update release notes for 1.4.1 bug fix release</li>
    <li><a href="https://github.com/androidx/media/commit/88b640136a8bbe6ceb046c3718a034bdd4e92fd7"><code>88b6401</code></a> Allow playback regardless buffered duration when loading fails</li>
    <li><a href="https://github.com/androidx/media/commit/9b39e3514f40327d7201a7b894247a625f278412"><code>9b39e35</code></a> Update translations</li>
    <li><a href="https://github.com/androidx/media/commit/b184677b7b50652ea9a97d1504c80f171143d7d9"><code>b184677</code></a> Check WV version before relying on <code>MediaDrm.requiresSecureDecoder</code></li>
    <li><a href="https://github.com/androidx/media/commit/f139d709c7eacc99edb2912126746b6c6d44ae2f"><code>f139d70</code></a> Handle preload callbacks asynchronously in PreloadMediaSource</li>
    <li><a href="https://github.com/androidx/media/commit/07e9c659d75e8f295a6a6feebb1090ad532e36fb"><code>07e9c65</code></a> Handle <code>HEADSETHOOK</code> as 'play' in <code>MediaButtonReceiver.onReceive</code></li>
    <li><a href="https://github.com/androidx/media/commit/eebf081528aef899461f24322a62d5e85e544994"><code>eebf081</code></a> Pass missing <code>length</code> into <code>SubtitleParser</code> from <code>SubtitleExtractor</code></li>
    <li><a href="https://github.com/androidx/media/commit/c773789edb778ea8cdb81c707d4637ee5a5acac5"><code>c773789</code></a> Skip invalid media description in <code>SessionDescriptionParser</code></li>
    <li><a href="https://github.com/androidx/media/commit/bf934495df4cc645579ecb0c03dee4e3d5fc1f9d"><code>bf93449</code></a> Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code></li>
    <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.4.0...1.4.1">compare view</a></li>
    </ul>
    </details>
    <br />
    
    Updates `androidx.media3:media3-exoplayer-dash` from 1.4.0 to 1.4.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.4.1</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code> (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing non-MP3 data based on the length field in an <code>Info</code> frame (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they are correctly inherited from parent nodes with percentage <code>tts:fontSize</code> values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to incorrectly handling the case of the requested output start time being greater than or equal to the final event time in the <code>Subtitle</code> (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices playing L1 Widevine content. This error is caused by an incomplete implementation of the framework <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a> method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next' action, as <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a> (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a <code>ForegroundServiceDidNotStartInTimeException</code> (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </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.4.1 (2024-08-23)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing
    non-MP3 data based on the length field in an <code>Info</code> frame
    (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they
    are correctly inherited from parent nodes with percentage <code>tts:fontSize</code>
    values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to
    incorrectly handling the case of the requested output start time being
    greater than or equal to the final event time in the <code>Subtitle</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices
    playing L1 Widevine content. This error is caused by an incomplete
    implementation of the framework
    <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a>
    method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next'
    action, as
    <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a>
    (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in
    <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a
    <code>ForegroundServiceDidNotStartInTimeException</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing
    (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a href="https://github.com/androidx/media/commit/c35a9d62baec57118ea898e271ac66819399649b"><code>c35a9d6</code></a> Bump media3 version to 1.4.1</li>
    <li><a href="https://github.com/androidx/media/commit/517762c08747c597d85be2e6c497a15f3674d340"><code>517762c</code></a> Update release notes for 1.4.1 bug fix release</li>
    <li><a href="https://github.com/androidx/media/commit/88b640136a8bbe6ceb046c3718a034bdd4e92fd7"><code>88b6401</code></a> Allow playback regardless buffered duration when loading fails</li>
    <li><a href="https://github.com/androidx/media/commit/9b39e3514f40327d7201a7b894247a625f278412"><code>9b39e35</code></a> Update translations</li>
    <li><a href="https://github.com/androidx/media/commit/b184677b7b50652ea9a97d1504c80f171143d7d9"><code>b184677</code></a> Check WV version before relying on <code>MediaDrm.requiresSecureDecoder</code></li>
    <li><a href="https://github.com/androidx/media/commit/f139d709c7eacc99edb2912126746b6c6d44ae2f"><code>f139d70</code></a> Handle preload callbacks asynchronously in PreloadMediaSource</li>
    <li><a href="https://github.com/androidx/media/commit/07e9c659d75e8f295a6a6feebb1090ad532e36fb"><code>07e9c65</code></a> Handle <code>HEADSETHOOK</code> as 'play' in <code>MediaButtonReceiver.onReceive</code></li>
    <li><a href="https://github.com/androidx/media/commit/eebf081528aef899461f24322a62d5e85e544994"><code>eebf081</code></a> Pass missing <code>length</code> into <code>SubtitleParser</code> from <code>SubtitleExtractor</code></li>
    <li><a href="https://github.com/androidx/media/commit/c773789edb778ea8cdb81c707d4637ee5a5acac5"><code>c773789</code></a> Skip invalid media description in <code>SessionDescriptionParser</code></li>
    <li><a href="https://github.com/androidx/media/commit/bf934495df4cc645579ecb0c03dee4e3d5fc1f9d"><code>bf93449</code></a> Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code></li>
    <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.4.0...1.4.1">compare view</a></li>
    </ul>
    </details>
    <br />
    
    Updates `androidx.media3:media3-exoplayer-rtsp` from 1.4.0 to 1.4.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.4.1</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code> (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing non-MP3 data based on the length field in an <code>Info</code> frame (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they are correctly inherited from parent nodes with percentage <code>tts:fontSize</code> values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to incorrectly handling the case of the requested output start time being greater than or equal to the final event time in the <code>Subtitle</code> (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices playing L1 Widevine content. This error is caused by an incomplete implementation of the framework <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a> method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next' action, as <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a> (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a <code>ForegroundServiceDidNotStartInTimeException</code> (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </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.4.1 (2024-08-23)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing
    non-MP3 data based on the length field in an <code>Info</code> frame
    (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they
    are correctly inherited from parent nodes with percentage <code>tts:fontSize</code>
    values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to
    incorrectly handling the case of the requested output start time being
    greater than or equal to the final event time in the <code>Subtitle</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices
    playing L1 Widevine content. This error is caused by an incomplete
    implementation of the framework
    <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a>
    method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next'
    action, as
    <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a>
    (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in
    <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a
    <code>ForegroundServiceDidNotStartInTimeException</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing
    (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a href="https://github.com/androidx/media/commit/c35a9d62baec57118ea898e271ac66819399649b"><code>c35a9d6</code></a> Bump media3 version to 1.4.1</li>
    <li><a href="https://github.com/androidx/media/commit/517762c08747c597d85be2e6c497a15f3674d340"><code>517762c</code></a> Update release notes for 1.4.1 bug fix release</li>
    <li><a href="https://github.com/androidx/media/commit/88b640136a8bbe6ceb046c3718a034bdd4e92fd7"><code>88b6401</code></a> Allow playback regardless buffered duration when loading fails</li>
    <li><a href="https://github.com/androidx/media/commit/9b39e3514f40327d7201a7b894247a625f278412"><code>9b39e35</code></a> Update translations</li>
    <li><a href="https://github.com/androidx/media/commit/b184677b7b50652ea9a97d1504c80f171143d7d9"><code>b184677</code></a> Check WV version before relying on <code>MediaDrm.requiresSecureDecoder</code></li>
    <li><a href="https://github.com/androidx/media/commit/f139d709c7eacc99edb2912126746b6c6d44ae2f"><code>f139d70</code></a> Handle preload callbacks asynchronously in PreloadMediaSource</li>
    <li><a href="https://github.com/androidx/media/commit/07e9c659d75e8f295a6a6feebb1090ad532e36fb"><code>07e9c65</code></a> Handle <code>HEADSETHOOK</code> as 'play' in <code>MediaButtonReceiver.onReceive</code></li>
    <li><a href="https://github.com/androidx/media/commit/eebf081528aef899461f24322a62d5e85e544994"><code>eebf081</code></a> Pass missing <code>length</code> into <code>SubtitleParser</code> from <code>SubtitleExtractor</code></li>
    <li><a href="https://github.com/androidx/media/commit/c773789edb778ea8cdb81c707d4637ee5a5acac5"><code>c773789</code></a> Skip invalid media description in <code>SessionDescriptionParser</code></li>
    <li><a href="https://github.com/androidx/media/commit/bf934495df4cc645579ecb0c03dee4e3d5fc1f9d"><code>bf93449</code></a> Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code></li>
    <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.4.0...1.4.1">compare view</a></li>
    </ul>
    </details>
    <br />
    
    Updates `androidx.media3:media3-exoplayer-smoothstreaming` from 1.4.0 to 1.4.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.4.1</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code> (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing non-MP3 data based on the length field in an <code>Info</code> frame (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they are correctly inherited from parent nodes with percentage <code>tts:fontSize</code> values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to incorrectly handling the case of the requested output start time being greater than or equal to the final event time in the <code>Subtitle</code> (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices playing L1 Widevine content. This error is caused by an incomplete implementation of the framework <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a> method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next' action, as <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a> (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a <code>ForegroundServiceDidNotStartInTimeException</code> (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/blob/release/RELEASENOTES.md">androidx.media3:media3-exoplayer-smoothstreaming's changelog</a>.</em></p>
    <blockquote>
    <h3>1.4.1 (2024-08-23)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing
    non-MP3 data based on the length field in an <code>Info</code> frame
    (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they
    are correctly inherited from parent nodes with percentage <code>tts:fontSize</code>
    values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to
    incorrectly handling the case of the requested output start time being
    greater than or equal to the final event time in the <code>Subtitle</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices
    playing L1 Widevine content. This error is caused by an incomplete
    implementation of the framework
    <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a>
    method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next'
    action, as
    <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a>
    (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in
    <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a
    <code>ForegroundServiceDidNotStartInTimeException</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing
    (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a href="https://github.com/androidx/media/commit/c35a9d62baec57118ea898e271ac66819399649b"><code>c35a9d6</code></a> Bump media3 version to 1.4.1</li>
    <li><a href="https://github.com/androidx/media/commit/517762c08747c597d85be2e6c497a15f3674d340"><code>517762c</code></a> Update release notes for 1.4.1 bug fix release</li>
    <li><a href="https://github.com/androidx/media/commit/88b640136a8bbe6ceb046c3718a034bdd4e92fd7"><code>88b6401</code></a> Allow playback regardless buffered duration when loading fails</li>
    <li><a href="https://github.com/androidx/media/commit/9b39e3514f40327d7201a7b894247a625f278412"><code>9b39e35</code></a> Update translations</li>
    <li><a href="https://github.com/androidx/media/commit/b184677b7b50652ea9a97d1504c80f171143d7d9"><code>b184677</code></a> Check WV version before relying on <code>MediaDrm.requiresSecureDecoder</code></li>
    <li><a href="https://github.com/androidx/media/commit/f139d709c7eacc99edb2912126746b6c6d44ae2f"><code>f139d70</code></a> Handle preload callbacks asynchronously in PreloadMediaSource</li>
    <li><a href="https://github.com/androidx/media/commit/07e9c659d75e8f295a6a6feebb1090ad532e36fb"><code>07e9c65</code></a> Handle <code>HEADSETHOOK</code> as 'play' in <code>MediaButtonReceiver.onReceive</code></li>
    <li><a href="https://github.com/androidx/media/commit/eebf081528aef899461f24322a62d5e85e544994"><code>eebf081</code></a> Pass missing <code>length</code> into <code>SubtitleParser</code> from <code>SubtitleExtractor</code></li>
    <li><a href="https://github.com/androidx/media/commit/c773789edb778ea8cdb81c707d4637ee5a5acac5"><code>c773789</code></a> Skip invalid media description in <code>SessionDescriptionParser</code></li>
    <li><a href="https://github.com/androidx/media/commit/bf934495df4cc645579ecb0c03dee4e3d5fc1f9d"><code>bf93449</code></a> Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code></li>
    <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.4.0...1.4.1">compare view</a></li>
    </ul>
    </details>
    <br />
    
    Updates `androidx.media3:media3-test-utils` from 1.4.0 to 1.4.1
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/releases">androidx.media3:media3-test-utils's releases</a>.</em></p>
    <blockquote>
    <h2>1.4.1</h2>
    <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/HEAD/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code> (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing non-MP3 data based on the length field in an <code>Info</code> frame (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they are correctly inherited from parent nodes with percentage <code>tts:fontSize</code> values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to incorrectly handling the case of the requested output start time being greater than or equal to the final event time in the <code>Subtitle</code> (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices playing L1 Widevine content. This error is caused by an incomplete implementation of the framework <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a> method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next' action, as <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a> (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a <code>ForegroundServiceDidNotStartInTimeException</code> (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a href="https://github.com/androidx/media/blob/release/RELEASENOTES.md">androidx.media3:media3-test-utils's changelog</a>.</em></p>
    <blockquote>
    <h3>1.4.1 (2024-08-23)</h3>
    <p>This release includes the following changes since the
    <a href="https://github.com/androidx/media/blob/release/#140-2024-07-24">1.4.0 release</a>:</p>
    <ul>
    <li>ExoPlayer:
    <ul>
    <li>Handle preload callbacks asynchronously in <code>PreloadMediaSource</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1568">#1568</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>
    </ul>
    </li>
    <li>Extractors:
    <ul>
    <li>MP3: Fix <code>Searched too many bytes</code> error by correctly ignoring trailing
    non-MP3 data based on the length field in an <code>Info</code> frame
    (<a href="https://redirect.github.com/androidx/media/issues/1480">#1480</a>).</li>
    </ul>
    </li>
    <li>Text:
    <ul>
    <li>TTML: Fix handling of percentage <code>tts:fontSize</code> values to ensure they
    are correctly inherited from parent nodes with percentage <code>tts:fontSize</code>
    values.</li>
    <li>Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code> due to
    incorrectly handling the case of the requested output start time being
    greater than or equal to the final event time in the <code>Subtitle</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1516">#1516</a>).</li>
    </ul>
    </li>
    <li>DRM:
    <ul>
    <li>Fix <code>android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE</code> error on API 31+ devices
    playing L1 Widevine content. This error is caused by an incomplete
    implementation of the framework
    <a href="https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)"><code>MediaDrm.requiresSecureDecoder</code></a>
    method (<a href="https://redirect.github.com/androidx/media/issues/1603">#1603</a>).</li>
    </ul>
    </li>
    <li>Effect:
    <ul>
    <li>Add a <code>release()</code> method to <code>GlObjectsProvider</code>.</li>
    </ul>
    </li>
    <li>Session:
    <ul>
    <li>Transform a double-tap of <code>KEYCODE_HEADSETHOOK</code> into a 'seek to next'
    action, as
    <a href="https://developer.android.com/reference/androidx/media3/session/MediaSession#media-key-events-mapping">documented</a>
    (<a href="https://redirect.github.com/androidx/media/issues/1493">#1493</a>).</li>
    <li>Handle <code>KEYCODE_HEADSETHOOK</code> as a 'play' command in
    <code>MediaButtonReceiver</code> when deciding whether to ignore it to avoid a
    <code>ForegroundServiceDidNotStartInTimeException</code>
    (<a href="https://redirect.github.com/androidx/media/issues/1581">#1581</a>).</li>
    </ul>
    </li>
    <li>RTSP Extension:
    <ul>
    <li>Skip invalid Media Descriptions in SDP parsing
    (<a href="https://redirect.github.com/androidx/media/issues/1472">#1087</a>).</li>
    </ul>
    </li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a href="https://github.com/androidx/media/commit/c35a9d62baec57118ea898e271ac66819399649b"><code>c35a9d6</code></a> Bump media3 version to 1.4.1</li>
    <li><a href="https://github.com/androidx/media/commit/517762c08747c597d85be2e6c497a15f3674d340"><code>517762c</code></a> Update release notes for 1.4.1 bug fix release</li>
    <li><a href="https://github.com/androidx/media/commit/88b640136a8bbe6ceb046c3718a034bdd4e92fd7"><code>88b6401</code></a> Allow playback regardless buffered duration when loading fails</li>
    <li><a href="https://github.com/androidx/media/commit/9b39e3514f40327d7201a7b894247a625f278412"><code>9b39e35</code></a> Update translations</li>
    <li><a href="https://github.com/androidx/media/commit/b184677b7b50652ea9a97d1504c80f171143d7d9"><code>b184677</code></a> Check WV version before relying on <code>MediaDrm.requiresSecureDecoder</code></li>
    <li><a href="https://github.com/androidx/media/commit/f139d709c7eacc99edb2912126746b6c6d44ae2f"><code>f139d70</code></a> Handle preload callbacks asynchronously in PreloadMediaSource</li>
    <li><a href="https://github.com/androidx/media/commit/07e9c659d75e8f295a6a6feebb1090ad532e36fb"><code>07e9c65</code></a> Handle <code>HEADSETHOOK</code> as 'play' in <code>MediaButtonReceiver.onReceive</code></li>
    <li><a href="https://github.com/androidx/media/commit/eebf081528aef899461f24322a62d5e85e544994"><code>eebf081</code></a> Pass missing <code>length</code> into <code>SubtitleParser</code> from <code>SubtitleExtractor</code></li>
    <li><a href="https://github.com/androidx/media/commit/c773789edb778ea8cdb81c707d4637ee5a5acac5"><code>c773789</code></a> Skip invalid media description in <code>SessionDescriptionParser</code></li>
    <li><a href="https://github.com/androidx/media/commit/bf934495df4cc645579ecb0c03dee4e3d5fc1f9d"><code>bf93449</code></a> Fix <code>IndexOutOfBoundsException</code> in <code>LegacySubtitleUtil</code></li>
    <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.4.0...1.4.1">compare view</a></li>
    </ul>
    </details>
    <br />
    
    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
    
    ---
    
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
    - `@dependabot merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    
    </details>
    dependabot[bot] authored Sep 3, 2024
    Configuration menu
    Copy the full SHA
    a6db33c View commit details
    Browse the repository at this point in the history
  2. [rfw] Upgrade missed example app (#7545)

    `rfw` has multiple example apps - I missed this one in #7521.
    
    Also missed `extension_google_sign_in_as_googleapis_auth` - will need to upgrade that in a follow up PR (it has additional failures after the AGP upgrade, so it isn't a one line fix).
    gmackall authored Sep 3, 2024
    Configuration menu
    Copy the full SHA
    e17304d View commit details
    Browse the repository at this point in the history
  3. [interactive_media_ads] Adds support for pausing and resuming Ad play…

    …back and skipping an Ad (#7285)
    
    Fixes flutter/flutter#152255
    
    Also adds `skip` and `discardAdBreak` to `AdsManager`.
    
    Also changes Android to not automatically start playing an Ad when the `VideoView` is prepared. `onPrepared` is called automatically whenever an app returns to the foreground by requiring the app to call `AdsManager.resume` to continue Ad playback after returning to the foreground. This makes Android consistent with iOS.
    bparrishMines authored Sep 3, 2024
    Configuration menu
    Copy the full SHA
    a0ef40e View commit details
    Browse the repository at this point in the history
  4. [google_maps_flutter] Remove unused MapKit imports from iOS example a…

    …pps (#7522)
    
    MapKit (Apple Maps) import is unused. Remove it.
    Introduced in #5780.
    jmagman authored Sep 3, 2024
    Configuration menu
    Copy the full SHA
    f08986b View commit details
    Browse the repository at this point in the history
  5. [google_sign_in_android] Downgrade Guava version from 33.3.0 to `32…

    ….0.1` (#7573)
    
    This upgrade is causing issues with our use of R8. I think we should downgrade back, while we investigate what it takes to unblock this upgrade.
    
    Fixes flutter/flutter#154489, 
    related to #7571 (comment).
    gmackall authored Sep 3, 2024
    Configuration menu
    Copy the full SHA
    fdc84ec View commit details
    Browse the repository at this point in the history

Commits on Sep 4, 2024

  1. [flutter_adaptive_scaffold] Fix breakpoint not being active in certai…

    …n cases like foldables (#7549)
    
    *Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/after screenshots.*
    
    As pointed out by the docs on this:
    
    > Available width and height are classified separately, so at any point in time, your app has two window size classes�one for width, one for height. Available width is usually more important than available height due to the ubiquity of vertical scrolling, so the width window size class is likely more relevant to your app's UI.
    
    *List which issues are fixed by this PR. You must list at least one issue.*
    martijn00 authored Sep 4, 2024
    Configuration menu
    Copy the full SHA
    6e26197 View commit details
    Browse the repository at this point in the history
  2. [flutter_adaptive_scaffold] Go router sample for AdaptiveScaffold (#7452

    )
    
    This implements a sample of using GoRouter with AdaptiveScaffold. It also helps testing advanced adaptive scenarios.
    
    *List which issues are fixed by this PR. You must list at least one issue.*
    
    flutter/flutter#129850
    martijn00 authored Sep 4, 2024
    Configuration menu
    Copy the full SHA
    f408578 View commit details
    Browse the repository at this point in the history
  3. [google_maps_flutter_android] Convert JointType to an enum (#7558)

    Replace the raw integers used in `PlatformPolyline` to an enum.
    
    flutter/flutter#153718 (comment)
    
    ## Pre-launch Checklist
    
    - [x] I read the [Contributor Guide] and followed the process outlined
    there for submitting PRs.
    - [x] I read the [Tree Hygiene] page, which explains my
    responsibilities.
    - [x] I read and followed the [relevant style guides] and ran the
    auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages
    repo does use `dart format`.)
    - [ ] I signed the [CLA].
    - [x] The title of the PR starts with the name of the package surrounded
    by square brackets, e.g. `[shared_preferences]`
    - [x] I [linked to at least one issue that this PR fixes] in the
    description above.
    - [ ] I updated `pubspec.yaml` with an appropriate new version according
    to the [pub versioning philosophy], or this PR is [exempt from version
    changes].
    - [x] I updated `CHANGELOG.md` to add a description of the change,
    [following repository CHANGELOG style], or this PR is [exempt from
    CHANGELOG changes].
    - [x] I updated/added relevant documentation (doc comments with `///`).
    - [ ] I added new tests to check the change I am making, or this PR is
    [test-exempt].
    - [x] All existing and new tests are passing.
    
    If you need help, consider asking for advice on the #hackers-new channel
    on [Discord].
    
    <!-- Links -->
    [Contributor Guide]:
    https://github.com/flutter/packages/blob/main/CONTRIBUTING.md
    [Tree Hygiene]:
    https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md
    [relevant style guides]:
    https://github.com/flutter/packages/blob/main/CONTRIBUTING.md#style
    [CLA]: https://cla.developers.google.com/
    [Discord]:
    https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md
    [linked to at least one issue that this PR fixes]:
    https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview
    [pub versioning philosophy]: https://dart.dev/tools/pub/versioning
    [exempt from version changes]:
    https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#version
    [following repository CHANGELOG style]:
    https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changelog-style
    [exempt from CHANGELOG changes]:
    https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changelog
    [test-exempt]:
    https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#tests
    yaakovschectman authored Sep 4, 2024
    Configuration menu
    Copy the full SHA
    e93995a View commit details
    Browse the repository at this point in the history
Loading