Skip to content

Commit 7d57d12

Browse files
[dependabot]: Bump exoplayer_version from 1.5.1 to 1.8.0 in /packages/video_player/video_player_android/android (#10309)
Bumps `exoplayer_version` from 1.5.1 to 1.8.0. Updates `androidx.media3:media3-exoplayer` from 1.5.1 to 1.8.0 <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.8.0</h2> <p>This release includes the following changes since the <a href="https://github.com/androidx/media/releases/tag/1.7.1">1.7.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Add support for replacing the player in <code>ForwardingSimpleBasePlayer</code>.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add getter for shuffle mode to the <code>ExoPlayer</code> interface (<a href="https://redirect.github.com/androidx/media/pull/2522">#2522</a>).</li> <li>More clearly throw an exception if <code>DefaultAudioSink</code> is accessed from multiple threads. If this happens due to a call to <code>RendererCapabilities.getFormatSupport</code> outside of the player, make sure to call this method on the same thread as ExoPlayer's playback thread or use a different instance than the one used for playback (<a href="https://redirect.github.com/androidx/media/issues/1191">#1191</a>).</li> <li>Fix bug where non-stereo audio formats on TVs may be marked as unsupported by <code>DefaultTrackSelector</code>.</li> <li>Ensure the last frame is correctly rendered when using MediaCodec's <code>DECODE_ONLY</code> flag (which is enabled by default in scrubbing mode).</li> <li>Add support for using the virtual device ID from the <code>Context</code> passed to <code>ExoPlayer.Builder</code>.</li> <li>Enable dynamic scheduling by default in scrubbing mode.</li> <li>Avoid unnecessary reload of a source when seeking to the end of an item.</li> <li>Use <code>MediaCodec.BUFFER_FLAG_DECODE_ONLY</code> by default in scrubbing mode.</li> <li>Throw <code>IllegalStateException</code> when <code>PreloadMediaSource</code> is played by an <code>ExoPlayer</code> with a playback thread that is different than the preload thread (<a href="https://redirect.github.com/androidx/media/issues/2495">#2495</a>).</li> <li>Add <code>cloneAndMove</code> to <code>ShuffleMode</code> with a default implementation (<a href="https://redirect.github.com/androidx/media/pull/2226">#2226</a>).</li> <li>Change default behavior of <code>Renderer.getMinDurationToProgressUs</code> to return a larger value if no call to <code>render</code> is required.</li> <li>Fix bug where internal scheduling delayed last frame when seeking to the end while paused. For now, the bug fix only takes effect if <code>ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled</code> is enabled.</li> <li>Add <code>ExoPlayer.setScrubbingModeEnabled(boolean)</code> method. This optimizes the player for many frequent seeks (for example, from a user dragging a scrubber bar around). The behavior of scrubbing mode can be customized with <code>setScrubbingModeParameters(..)</code> on <code>ExoPlayer</code> and <code>ExoPlayer.Builder</code>.</li> <li>Allow customizing fractional seek tolerance in scrubbing mode.</li> <li>Increase codec operating rate in scrubbing mode.</li> <li>Fix bug where prepare errors in the content of <code>AdsMediaSource</code> may be never reported (<a href="https://redirect.github.com/androidx/media/issues/2337">#2337</a>).</li> <li>Fix memory leak in <code>MergingMediaSource</code>, for example used when sideloading subtitles (<a href="https://redirect.github.com/androidx/media/issues/2338">#2338</a>).</li> <li>Allow <code>CmcdConfiguration.Factory</code> to return <code>null</code> to disable CMCD logging for specific media items (<a href="https://redirect.github.com/androidx/media/pull/2386">#2386</a>).</li> <li>Increase default image buffer size from 128kB (copy-paste mistake from text tracks) to 26MB, which is large enough for 50MP Ultra HDR images (<a href="https://redirect.github.com/androidx/media/issues/2417">#2417</a>).</li> <li>Add <code>PreCacheHelper</code> that allows apps to pre-cache a single media with specified start position and duration.</li> <li>Add support of preloading from specified position in <code>DefaultPreloadManager</code>.</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>CodecDbLite</code> that enables chipset specific optimizations of video encoding settings.</li> <li>Add <code>setEnableCodecDbLite</code> flag to the <code>DefaultEncoderFactory</code> to enable CodecDB Lite settings optimization. By default, this flag is set to false.</li> <li>Filling an initial gap (added via <code>addGap()</code>) with silent audio now requires explicitly setting <code>experimentalSetForceAudioTrack(true)</code> in <code>EditedMediaItemSequence.Builder</code>. If the gap is in the middle of the sequence, then this flag is not required.</li> <li>Move <code>Muxer</code> interface from <code>media3-transformer</code> to <code>media3-muxer</code>.</li> <li>Make setting <code>MediaItem.Builder().setImageDuration(long)</code> mandatory to import a media item as an image.</li> <li>Add <code>Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean)</code> which includes an MP4 edit list when trimming to instruct players to ignore samples between the key frame before the trim start point, and the trim start point.</li> <li>Update Composition Demo app to use Kotlin and Jetpack Compose, and add a custom <code>VideoCompositorSettings</code> to arrange sequences into a 2x2 or PiP layout.</li> </ul> </li> <li>Extractors: <ul> <li>Parse metadata from fragmented MP4 files (<a href="https://redirect.github.com/androidx/media/issues/2084">#2084</a>).</li> <li>JPEG: Support motion photos that don't have an Exif segment at the start (<a href="https://redirect.github.com/androidx/media/issues/2552">#2552</a>).</li> <li>Add support for seeking in fragmented MP4 with multiple <code>sidx</code> atoms. This behavior can be enabled using the <code>FLAG_MERGE_FRAGMENTED_SIDX</code> flag on <code>FragmentedMp4Extractor</code> (<a href="https://redirect.github.com/google/ExoPlayer/issues/9373">#9373</a>).</li> <li>Ignore empty seek tables in FLAC files (including those containing only placeholder seek points), and fall back to binary search seeking if the duration of the file is known (<a href="https://redirect.github.com/androidx/media/issues/2327">#2327</a>).</li> <li>Fix parsing of H.265 SEI units to fully skip unrecognized SEI types (<a href="https://redirect.github.com/androidx/media/issues/2456">#2456</a>).</li> <li>Update <code>WavExtractor</code> to use the header extension's SubFormat data for the audio format when parsing a <code>WAVE_FORMAT_EXTENSIBLE</code> type file.</li> <li>MP4: Add support for <code>ipcm</code> and <code>fpcm</code> boxes defining raw PCM audio tracks (64-bit floating point PCM is not supported).</li> <li>MP4: Handle the rotation part of <code>tkhd</code> transformation matrices that both rotate and reflect the video. This ensures that reflected videos taken by the iPhone front facing camera display the right way up, but incorrectly reflected in the y-axis (<a href="https://redirect.github.com/androidx/media/issues/2012">#2012</a>).</li> <li>MP3: Use duration and data size from unseekable Xing, VBRI and similar variable bitrate metadata when falling back to constant bitrate seeking due to <code>FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)</code> (<a href="https://redirect.github.com/androidx/media/issues/2194">#2194</a>).</li> </ul> </li> <li>Audio: <ul> <li>Fix bug where <code>AnalyticsListener.onAudioPositionAdvancing</code> is not called when the audio playback is started very close to the end of the media.</li> <li>Add support for all linear PCM sample formats in <code>ChannelMappingAudioProcessor</code> and <code>TrimmingAudioProcessor</code>.</li> <li>Add support for audio gaps in <code>CompositionPlayer</code>.</li> <li>Remove spurious call to <code>BaseAudioProcessor#flush()</code> from <code>BaseAudioProcessor#reset()</code>.</li> </ul> </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.8.0 (2025-07-30)</h3> <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/release/#171-2025-05-16">1.7.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Add support for replacing the player in <code>ForwardingSimpleBasePlayer</code>.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add getter for shuffle mode to the <code>ExoPlayer</code> interface (<a href="https://redirect.github.com/androidx/media/pull/2522">#2522</a>).</li> <li>More clearly throw an exception if <code>DefaultAudioSink</code> is accessed from multiple threads. If this happens due to a call to <code>RendererCapabilities.getFormatSupport</code> outside of the player, make sure to call this method on the same thread as ExoPlayer's playback thread or use a different instance than the one used for playback (<a href="https://redirect.github.com/androidx/media/issues/1191">#1191</a>).</li> <li>Fix bug where non-stereo audio formats on TVs may be marked as unsupported by <code>DefaultTrackSelector</code>.</li> <li>Ensure the last frame is correctly rendered when using MediaCodec's <code>DECODE_ONLY</code> flag (which is enabled by default in scrubbing mode).</li> <li>Add support for using the virtual device ID from the <code>Context</code> passed to <code>ExoPlayer.Builder</code>.</li> <li>Enable dynamic scheduling by default in scrubbing mode.</li> <li>Avoid unnecessary reload of a source when seeking to the end of an item.</li> <li>Use <code>MediaCodec.BUFFER_FLAG_DECODE_ONLY</code> by default in scrubbing mode.</li> <li>Throw <code>IllegalStateException</code> when <code>PreloadMediaSource</code> is played by an <code>ExoPlayer</code> with a playback thread that is different than the preload thread (<a href="https://redirect.github.com/androidx/media/issues/2495">#2495</a>).</li> <li>Add <code>cloneAndMove</code> to <code>ShuffleMode</code> with a default implementation (<a href="https://redirect.github.com/androidx/media/pull/2226">#2226</a>).</li> <li>Change default behavior of <code>Renderer.getMinDurationToProgressUs</code> to return a larger value if no call to <code>render</code> is required.</li> <li>Fix bug where internal scheduling delayed last frame when seeking to the end while paused. For now, the bug fix only takes effect if <code>ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled</code> is enabled.</li> <li>Add <code>ExoPlayer.setScrubbingModeEnabled(boolean)</code> method. This optimizes the player for many frequent seeks (for example, from a user dragging a scrubber bar around). The behavior of scrubbing mode can be customized with <code>setScrubbingModeParameters(..)</code> on <code>ExoPlayer</code> and <code>ExoPlayer.Builder</code>.</li> <li>Allow customizing fractional seek tolerance in scrubbing mode.</li> <li>Increase codec operating rate in scrubbing mode.</li> <li>Fix bug where prepare errors in the content of <code>AdsMediaSource</code> may be never reported (<a href="https://redirect.github.com/androidx/media/issues/2337">#2337</a>).</li> <li>Fix memory leak in <code>MergingMediaSource</code>, for example used when sideloading subtitles (<a href="https://redirect.github.com/androidx/media/issues/2338">#2338</a>).</li> <li>Allow <code>CmcdConfiguration.Factory</code> to return <code>null</code> to disable CMCD logging for specific media items (<a href="https://redirect.github.com/androidx/media/pull/2386">#2386</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/androidx/media/commit/b7bbc6e2bc3e45ff3ed99884c114c50f03bba5c9"><code>b7bbc6e</code></a> Merge branch 'release' into release-1.8.0</li> <li><a href="https://github.com/androidx/media/commit/95e9194d31fb1fc4f70a6f0ab97483e55619c81d"><code>95e9194</code></a> Version bump to media3:1.8.0</li> <li><a href="https://github.com/androidx/media/commit/27902dea930f777a530b0bf3f684cdae77f7ac0e"><code>27902de</code></a> Update release notes for 1.8.0 stable</li> <li><a href="https://github.com/androidx/media/commit/502be51cd7efad118d0b4acf1fcfee7a6ee4140d"><code>502be51</code></a> Update release notes for 1.8.0-rc02 release</li> <li><a href="https://github.com/androidx/media/commit/2397a10f0626d3de5d68363b710856259e639e1f"><code>2397a10</code></a> Bump version number for 1.8.0-rc02</li> <li><a href="https://github.com/androidx/media/commit/c2d099b31e0f2a709dabdd65f74474c312c6c72a"><code>c2d099b</code></a> Handle non-integer <code>Format.id</code> when setting <code>KEY_TRACK_ID</code></li> <li><a href="https://github.com/androidx/media/commit/ec365475c2a329ef2aa41f15cce87cd1bcf5644f"><code>ec36547</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/2425">#2425</a> from MGaetan89:fix_release_notes</li> <li><a href="https://github.com/androidx/media/commit/bc37acd6e0782eb35a76ca4a21d927f5c4f88d0d"><code>bc37acd</code></a> Fix missing onPositionAdvancing callback after AudioTrack is stopped</li> <li><a href="https://github.com/androidx/media/commit/c653dce27c23ae9964cd35101ed537e874005fa9"><code>c653dce</code></a> Try to officially disconnect controller in more cases</li> <li><a href="https://github.com/androidx/media/commit/a44fcd0d9dc10ec9faca46520e8a29220de9beb1"><code>a44fcd0</code></a> Don't override playback exception when creating the playback state</li> <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.5.1...1.8.0">compare view</a></li> </ul> </details> <br /> Updates `androidx.media3:media3-exoplayer-hls` from 1.5.1 to 1.8.0 <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.8.0</h2> <p>This release includes the following changes since the <a href="https://github.com/androidx/media/releases/tag/1.7.1">1.7.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Add support for replacing the player in <code>ForwardingSimpleBasePlayer</code>.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add getter for shuffle mode to the <code>ExoPlayer</code> interface (<a href="https://redirect.github.com/androidx/media/pull/2522">#2522</a>).</li> <li>More clearly throw an exception if <code>DefaultAudioSink</code> is accessed from multiple threads. If this happens due to a call to <code>RendererCapabilities.getFormatSupport</code> outside of the player, make sure to call this method on the same thread as ExoPlayer's playback thread or use a different instance than the one used for playback (<a href="https://redirect.github.com/androidx/media/issues/1191">#1191</a>).</li> <li>Fix bug where non-stereo audio formats on TVs may be marked as unsupported by <code>DefaultTrackSelector</code>.</li> <li>Ensure the last frame is correctly rendered when using MediaCodec's <code>DECODE_ONLY</code> flag (which is enabled by default in scrubbing mode).</li> <li>Add support for using the virtual device ID from the <code>Context</code> passed to <code>ExoPlayer.Builder</code>.</li> <li>Enable dynamic scheduling by default in scrubbing mode.</li> <li>Avoid unnecessary reload of a source when seeking to the end of an item.</li> <li>Use <code>MediaCodec.BUFFER_FLAG_DECODE_ONLY</code> by default in scrubbing mode.</li> <li>Throw <code>IllegalStateException</code> when <code>PreloadMediaSource</code> is played by an <code>ExoPlayer</code> with a playback thread that is different than the preload thread (<a href="https://redirect.github.com/androidx/media/issues/2495">#2495</a>).</li> <li>Add <code>cloneAndMove</code> to <code>ShuffleMode</code> with a default implementation (<a href="https://redirect.github.com/androidx/media/pull/2226">#2226</a>).</li> <li>Change default behavior of <code>Renderer.getMinDurationToProgressUs</code> to return a larger value if no call to <code>render</code> is required.</li> <li>Fix bug where internal scheduling delayed last frame when seeking to the end while paused. For now, the bug fix only takes effect if <code>ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled</code> is enabled.</li> <li>Add <code>ExoPlayer.setScrubbingModeEnabled(boolean)</code> method. This optimizes the player for many frequent seeks (for example, from a user dragging a scrubber bar around). The behavior of scrubbing mode can be customized with <code>setScrubbingModeParameters(..)</code> on <code>ExoPlayer</code> and <code>ExoPlayer.Builder</code>.</li> <li>Allow customizing fractional seek tolerance in scrubbing mode.</li> <li>Increase codec operating rate in scrubbing mode.</li> <li>Fix bug where prepare errors in the content of <code>AdsMediaSource</code> may be never reported (<a href="https://redirect.github.com/androidx/media/issues/2337">#2337</a>).</li> <li>Fix memory leak in <code>MergingMediaSource</code>, for example used when sideloading subtitles (<a href="https://redirect.github.com/androidx/media/issues/2338">#2338</a>).</li> <li>Allow <code>CmcdConfiguration.Factory</code> to return <code>null</code> to disable CMCD logging for specific media items (<a href="https://redirect.github.com/androidx/media/pull/2386">#2386</a>).</li> <li>Increase default image buffer size from 128kB (copy-paste mistake from text tracks) to 26MB, which is large enough for 50MP Ultra HDR images (<a href="https://redirect.github.com/androidx/media/issues/2417">#2417</a>).</li> <li>Add <code>PreCacheHelper</code> that allows apps to pre-cache a single media with specified start position and duration.</li> <li>Add support of preloading from specified position in <code>DefaultPreloadManager</code>.</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>CodecDbLite</code> that enables chipset specific optimizations of video encoding settings.</li> <li>Add <code>setEnableCodecDbLite</code> flag to the <code>DefaultEncoderFactory</code> to enable CodecDB Lite settings optimization. By default, this flag is set to false.</li> <li>Filling an initial gap (added via <code>addGap()</code>) with silent audio now requires explicitly setting <code>experimentalSetForceAudioTrack(true)</code> in <code>EditedMediaItemSequence.Builder</code>. If the gap is in the middle of the sequence, then this flag is not required.</li> <li>Move <code>Muxer</code> interface from <code>media3-transformer</code> to <code>media3-muxer</code>.</li> <li>Make setting <code>MediaItem.Builder().setImageDuration(long)</code> mandatory to import a media item as an image.</li> <li>Add <code>Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean)</code> which includes an MP4 edit list when trimming to instruct players to ignore samples between the key frame before the trim start point, and the trim start point.</li> <li>Update Composition Demo app to use Kotlin and Jetpack Compose, and add a custom <code>VideoCompositorSettings</code> to arrange sequences into a 2x2 or PiP layout.</li> </ul> </li> <li>Extractors: <ul> <li>Parse metadata from fragmented MP4 files (<a href="https://redirect.github.com/androidx/media/issues/2084">#2084</a>).</li> <li>JPEG: Support motion photos that don't have an Exif segment at the start (<a href="https://redirect.github.com/androidx/media/issues/2552">#2552</a>).</li> <li>Add support for seeking in fragmented MP4 with multiple <code>sidx</code> atoms. This behavior can be enabled using the <code>FLAG_MERGE_FRAGMENTED_SIDX</code> flag on <code>FragmentedMp4Extractor</code> (<a href="https://redirect.github.com/google/ExoPlayer/issues/9373">#9373</a>).</li> <li>Ignore empty seek tables in FLAC files (including those containing only placeholder seek points), and fall back to binary search seeking if the duration of the file is known (<a href="https://redirect.github.com/androidx/media/issues/2327">#2327</a>).</li> <li>Fix parsing of H.265 SEI units to fully skip unrecognized SEI types (<a href="https://redirect.github.com/androidx/media/issues/2456">#2456</a>).</li> <li>Update <code>WavExtractor</code> to use the header extension's SubFormat data for the audio format when parsing a <code>WAVE_FORMAT_EXTENSIBLE</code> type file.</li> <li>MP4: Add support for <code>ipcm</code> and <code>fpcm</code> boxes defining raw PCM audio tracks (64-bit floating point PCM is not supported).</li> <li>MP4: Handle the rotation part of <code>tkhd</code> transformation matrices that both rotate and reflect the video. This ensures that reflected videos taken by the iPhone front facing camera display the right way up, but incorrectly reflected in the y-axis (<a href="https://redirect.github.com/androidx/media/issues/2012">#2012</a>).</li> <li>MP3: Use duration and data size from unseekable Xing, VBRI and similar variable bitrate metadata when falling back to constant bitrate seeking due to <code>FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)</code> (<a href="https://redirect.github.com/androidx/media/issues/2194">#2194</a>).</li> </ul> </li> <li>Audio: <ul> <li>Fix bug where <code>AnalyticsListener.onAudioPositionAdvancing</code> is not called when the audio playback is started very close to the end of the media.</li> <li>Add support for all linear PCM sample formats in <code>ChannelMappingAudioProcessor</code> and <code>TrimmingAudioProcessor</code>.</li> <li>Add support for audio gaps in <code>CompositionPlayer</code>.</li> <li>Remove spurious call to <code>BaseAudioProcessor#flush()</code> from <code>BaseAudioProcessor#reset()</code>.</li> </ul> </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.8.0 (2025-07-30)</h3> <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/release/#171-2025-05-16">1.7.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Add support for replacing the player in <code>ForwardingSimpleBasePlayer</code>.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add getter for shuffle mode to the <code>ExoPlayer</code> interface (<a href="https://redirect.github.com/androidx/media/pull/2522">#2522</a>).</li> <li>More clearly throw an exception if <code>DefaultAudioSink</code> is accessed from multiple threads. If this happens due to a call to <code>RendererCapabilities.getFormatSupport</code> outside of the player, make sure to call this method on the same thread as ExoPlayer's playback thread or use a different instance than the one used for playback (<a href="https://redirect.github.com/androidx/media/issues/1191">#1191</a>).</li> <li>Fix bug where non-stereo audio formats on TVs may be marked as unsupported by <code>DefaultTrackSelector</code>.</li> <li>Ensure the last frame is correctly rendered when using MediaCodec's <code>DECODE_ONLY</code> flag (which is enabled by default in scrubbing mode).</li> <li>Add support for using the virtual device ID from the <code>Context</code> passed to <code>ExoPlayer.Builder</code>.</li> <li>Enable dynamic scheduling by default in scrubbing mode.</li> <li>Avoid unnecessary reload of a source when seeking to the end of an item.</li> <li>Use <code>MediaCodec.BUFFER_FLAG_DECODE_ONLY</code> by default in scrubbing mode.</li> <li>Throw <code>IllegalStateException</code> when <code>PreloadMediaSource</code> is played by an <code>ExoPlayer</code> with a playback thread that is different than the preload thread (<a href="https://redirect.github.com/androidx/media/issues/2495">#2495</a>).</li> <li>Add <code>cloneAndMove</code> to <code>ShuffleMode</code> with a default implementation (<a href="https://redirect.github.com/androidx/media/pull/2226">#2226</a>).</li> <li>Change default behavior of <code>Renderer.getMinDurationToProgressUs</code> to return a larger value if no call to <code>render</code> is required.</li> <li>Fix bug where internal scheduling delayed last frame when seeking to the end while paused. For now, the bug fix only takes effect if <code>ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled</code> is enabled.</li> <li>Add <code>ExoPlayer.setScrubbingModeEnabled(boolean)</code> method. This optimizes the player for many frequent seeks (for example, from a user dragging a scrubber bar around). The behavior of scrubbing mode can be customized with <code>setScrubbingModeParameters(..)</code> on <code>ExoPlayer</code> and <code>ExoPlayer.Builder</code>.</li> <li>Allow customizing fractional seek tolerance in scrubbing mode.</li> <li>Increase codec operating rate in scrubbing mode.</li> <li>Fix bug where prepare errors in the content of <code>AdsMediaSource</code> may be never reported (<a href="https://redirect.github.com/androidx/media/issues/2337">#2337</a>).</li> <li>Fix memory leak in <code>MergingMediaSource</code>, for example used when sideloading subtitles (<a href="https://redirect.github.com/androidx/media/issues/2338">#2338</a>).</li> <li>Allow <code>CmcdConfiguration.Factory</code> to return <code>null</code> to disable CMCD logging for specific media items (<a href="https://redirect.github.com/androidx/media/pull/2386">#2386</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/androidx/media/commit/b7bbc6e2bc3e45ff3ed99884c114c50f03bba5c9"><code>b7bbc6e</code></a> Merge branch 'release' into release-1.8.0</li> <li><a href="https://github.com/androidx/media/commit/95e9194d31fb1fc4f70a6f0ab97483e55619c81d"><code>95e9194</code></a> Version bump to media3:1.8.0</li> <li><a href="https://github.com/androidx/media/commit/27902dea930f777a530b0bf3f684cdae77f7ac0e"><code>27902de</code></a> Update release notes for 1.8.0 stable</li> <li><a href="https://github.com/androidx/media/commit/502be51cd7efad118d0b4acf1fcfee7a6ee4140d"><code>502be51</code></a> Update release notes for 1.8.0-rc02 release</li> <li><a href="https://github.com/androidx/media/commit/2397a10f0626d3de5d68363b710856259e639e1f"><code>2397a10</code></a> Bump version number for 1.8.0-rc02</li> <li><a href="https://github.com/androidx/media/commit/c2d099b31e0f2a709dabdd65f74474c312c6c72a"><code>c2d099b</code></a> Handle non-integer <code>Format.id</code> when setting <code>KEY_TRACK_ID</code></li> <li><a href="https://github.com/androidx/media/commit/ec365475c2a329ef2aa41f15cce87cd1bcf5644f"><code>ec36547</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/2425">#2425</a> from MGaetan89:fix_release_notes</li> <li><a href="https://github.com/androidx/media/commit/bc37acd6e0782eb35a76ca4a21d927f5c4f88d0d"><code>bc37acd</code></a> Fix missing onPositionAdvancing callback after AudioTrack is stopped</li> <li><a href="https://github.com/androidx/media/commit/c653dce27c23ae9964cd35101ed537e874005fa9"><code>c653dce</code></a> Try to officially disconnect controller in more cases</li> <li><a href="https://github.com/androidx/media/commit/a44fcd0d9dc10ec9faca46520e8a29220de9beb1"><code>a44fcd0</code></a> Don't override playback exception when creating the playback state</li> <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.5.1...1.8.0">compare view</a></li> </ul> </details> <br /> Updates `androidx.media3:media3-exoplayer-dash` from 1.5.1 to 1.8.0 <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.8.0</h2> <p>This release includes the following changes since the <a href="https://github.com/androidx/media/releases/tag/1.7.1">1.7.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Add support for replacing the player in <code>ForwardingSimpleBasePlayer</code>.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add getter for shuffle mode to the <code>ExoPlayer</code> interface (<a href="https://redirect.github.com/androidx/media/pull/2522">#2522</a>).</li> <li>More clearly throw an exception if <code>DefaultAudioSink</code> is accessed from multiple threads. If this happens due to a call to <code>RendererCapabilities.getFormatSupport</code> outside of the player, make sure to call this method on the same thread as ExoPlayer's playback thread or use a different instance than the one used for playback (<a href="https://redirect.github.com/androidx/media/issues/1191">#1191</a>).</li> <li>Fix bug where non-stereo audio formats on TVs may be marked as unsupported by <code>DefaultTrackSelector</code>.</li> <li>Ensure the last frame is correctly rendered when using MediaCodec's <code>DECODE_ONLY</code> flag (which is enabled by default in scrubbing mode).</li> <li>Add support for using the virtual device ID from the <code>Context</code> passed to <code>ExoPlayer.Builder</code>.</li> <li>Enable dynamic scheduling by default in scrubbing mode.</li> <li>Avoid unnecessary reload of a source when seeking to the end of an item.</li> <li>Use <code>MediaCodec.BUFFER_FLAG_DECODE_ONLY</code> by default in scrubbing mode.</li> <li>Throw <code>IllegalStateException</code> when <code>PreloadMediaSource</code> is played by an <code>ExoPlayer</code> with a playback thread that is different than the preload thread (<a href="https://redirect.github.com/androidx/media/issues/2495">#2495</a>).</li> <li>Add <code>cloneAndMove</code> to <code>ShuffleMode</code> with a default implementation (<a href="https://redirect.github.com/androidx/media/pull/2226">#2226</a>).</li> <li>Change default behavior of <code>Renderer.getMinDurationToProgressUs</code> to return a larger value if no call to <code>render</code> is required.</li> <li>Fix bug where internal scheduling delayed last frame when seeking to the end while paused. For now, the bug fix only takes effect if <code>ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled</code> is enabled.</li> <li>Add <code>ExoPlayer.setScrubbingModeEnabled(boolean)</code> method. This optimizes the player for many frequent seeks (for example, from a user dragging a scrubber bar around). The behavior of scrubbing mode can be customized with <code>setScrubbingModeParameters(..)</code> on <code>ExoPlayer</code> and <code>ExoPlayer.Builder</code>.</li> <li>Allow customizing fractional seek tolerance in scrubbing mode.</li> <li>Increase codec operating rate in scrubbing mode.</li> <li>Fix bug where prepare errors in the content of <code>AdsMediaSource</code> may be never reported (<a href="https://redirect.github.com/androidx/media/issues/2337">#2337</a>).</li> <li>Fix memory leak in <code>MergingMediaSource</code>, for example used when sideloading subtitles (<a href="https://redirect.github.com/androidx/media/issues/2338">#2338</a>).</li> <li>Allow <code>CmcdConfiguration.Factory</code> to return <code>null</code> to disable CMCD logging for specific media items (<a href="https://redirect.github.com/androidx/media/pull/2386">#2386</a>).</li> <li>Increase default image buffer size from 128kB (copy-paste mistake from text tracks) to 26MB, which is large enough for 50MP Ultra HDR images (<a href="https://redirect.github.com/androidx/media/issues/2417">#2417</a>).</li> <li>Add <code>PreCacheHelper</code> that allows apps to pre-cache a single media with specified start position and duration.</li> <li>Add support of preloading from specified position in <code>DefaultPreloadManager</code>.</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>CodecDbLite</code> that enables chipset specific optimizations of video encoding settings.</li> <li>Add <code>setEnableCodecDbLite</code> flag to the <code>DefaultEncoderFactory</code> to enable CodecDB Lite settings optimization. By default, this flag is set to false.</li> <li>Filling an initial gap (added via <code>addGap()</code>) with silent audio now requires explicitly setting <code>experimentalSetForceAudioTrack(true)</code> in <code>EditedMediaItemSequence.Builder</code>. If the gap is in the middle of the sequence, then this flag is not required.</li> <li>Move <code>Muxer</code> interface from <code>media3-transformer</code> to <code>media3-muxer</code>.</li> <li>Make setting <code>MediaItem.Builder().setImageDuration(long)</code> mandatory to import a media item as an image.</li> <li>Add <code>Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean)</code> which includes an MP4 edit list when trimming to instruct players to ignore samples between the key frame before the trim start point, and the trim start point.</li> <li>Update Composition Demo app to use Kotlin and Jetpack Compose, and add a custom <code>VideoCompositorSettings</code> to arrange sequences into a 2x2 or PiP layout.</li> </ul> </li> <li>Extractors: <ul> <li>Parse metadata from fragmented MP4 files (<a href="https://redirect.github.com/androidx/media/issues/2084">#2084</a>).</li> <li>JPEG: Support motion photos that don't have an Exif segment at the start (<a href="https://redirect.github.com/androidx/media/issues/2552">#2552</a>).</li> <li>Add support for seeking in fragmented MP4 with multiple <code>sidx</code> atoms. This behavior can be enabled using the <code>FLAG_MERGE_FRAGMENTED_SIDX</code> flag on <code>FragmentedMp4Extractor</code> (<a href="https://redirect.github.com/google/ExoPlayer/issues/9373">#9373</a>).</li> <li>Ignore empty seek tables in FLAC files (including those containing only placeholder seek points), and fall back to binary search seeking if the duration of the file is known (<a href="https://redirect.github.com/androidx/media/issues/2327">#2327</a>).</li> <li>Fix parsing of H.265 SEI units to fully skip unrecognized SEI types (<a href="https://redirect.github.com/androidx/media/issues/2456">#2456</a>).</li> <li>Update <code>WavExtractor</code> to use the header extension's SubFormat data for the audio format when parsing a <code>WAVE_FORMAT_EXTENSIBLE</code> type file.</li> <li>MP4: Add support for <code>ipcm</code> and <code>fpcm</code> boxes defining raw PCM audio tracks (64-bit floating point PCM is not supported).</li> <li>MP4: Handle the rotation part of <code>tkhd</code> transformation matrices that both rotate and reflect the video. This ensures that reflected videos taken by the iPhone front facing camera display the right way up, but incorrectly reflected in the y-axis (<a href="https://redirect.github.com/androidx/media/issues/2012">#2012</a>).</li> <li>MP3: Use duration and data size from unseekable Xing, VBRI and similar variable bitrate metadata when falling back to constant bitrate seeking due to <code>FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)</code> (<a href="https://redirect.github.com/androidx/media/issues/2194">#2194</a>).</li> </ul> </li> <li>Audio: <ul> <li>Fix bug where <code>AnalyticsListener.onAudioPositionAdvancing</code> is not called when the audio playback is started very close to the end of the media.</li> <li>Add support for all linear PCM sample formats in <code>ChannelMappingAudioProcessor</code> and <code>TrimmingAudioProcessor</code>.</li> <li>Add support for audio gaps in <code>CompositionPlayer</code>.</li> <li>Remove spurious call to <code>BaseAudioProcessor#flush()</code> from <code>BaseAudioProcessor#reset()</code>.</li> </ul> </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.8.0 (2025-07-30)</h3> <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/release/#171-2025-05-16">1.7.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Add support for replacing the player in <code>ForwardingSimpleBasePlayer</code>.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add getter for shuffle mode to the <code>ExoPlayer</code> interface (<a href="https://redirect.github.com/androidx/media/pull/2522">#2522</a>).</li> <li>More clearly throw an exception if <code>DefaultAudioSink</code> is accessed from multiple threads. If this happens due to a call to <code>RendererCapabilities.getFormatSupport</code> outside of the player, make sure to call this method on the same thread as ExoPlayer's playback thread or use a different instance than the one used for playback (<a href="https://redirect.github.com/androidx/media/issues/1191">#1191</a>).</li> <li>Fix bug where non-stereo audio formats on TVs may be marked as unsupported by <code>DefaultTrackSelector</code>.</li> <li>Ensure the last frame is correctly rendered when using MediaCodec's <code>DECODE_ONLY</code> flag (which is enabled by default in scrubbing mode).</li> <li>Add support for using the virtual device ID from the <code>Context</code> passed to <code>ExoPlayer.Builder</code>.</li> <li>Enable dynamic scheduling by default in scrubbing mode.</li> <li>Avoid unnecessary reload of a source when seeking to the end of an item.</li> <li>Use <code>MediaCodec.BUFFER_FLAG_DECODE_ONLY</code> by default in scrubbing mode.</li> <li>Throw <code>IllegalStateException</code> when <code>PreloadMediaSource</code> is played by an <code>ExoPlayer</code> with a playback thread that is different than the preload thread (<a href="https://redirect.github.com/androidx/media/issues/2495">#2495</a>).</li> <li>Add <code>cloneAndMove</code> to <code>ShuffleMode</code> with a default implementation (<a href="https://redirect.github.com/androidx/media/pull/2226">#2226</a>).</li> <li>Change default behavior of <code>Renderer.getMinDurationToProgressUs</code> to return a larger value if no call to <code>render</code> is required.</li> <li>Fix bug where internal scheduling delayed last frame when seeking to the end while paused. For now, the bug fix only takes effect if <code>ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled</code> is enabled.</li> <li>Add <code>ExoPlayer.setScrubbingModeEnabled(boolean)</code> method. This optimizes the player for many frequent seeks (for example, from a user dragging a scrubber bar around). The behavior of scrubbing mode can be customized with <code>setScrubbingModeParameters(..)</code> on <code>ExoPlayer</code> and <code>ExoPlayer.Builder</code>.</li> <li>Allow customizing fractional seek tolerance in scrubbing mode.</li> <li>Increase codec operating rate in scrubbing mode.</li> <li>Fix bug where prepare errors in the content of <code>AdsMediaSource</code> may be never reported (<a href="https://redirect.github.com/androidx/media/issues/2337">#2337</a>).</li> <li>Fix memory leak in <code>MergingMediaSource</code>, for example used when sideloading subtitles (<a href="https://redirect.github.com/androidx/media/issues/2338">#2338</a>).</li> <li>Allow <code>CmcdConfiguration.Factory</code> to return <code>null</code> to disable CMCD logging for specific media items (<a href="https://redirect.github.com/androidx/media/pull/2386">#2386</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/androidx/media/commit/b7bbc6e2bc3e45ff3ed99884c114c50f03bba5c9"><code>b7bbc6e</code></a> Merge branch 'release' into release-1.8.0</li> <li><a href="https://github.com/androidx/media/commit/95e9194d31fb1fc4f70a6f0ab97483e55619c81d"><code>95e9194</code></a> Version bump to media3:1.8.0</li> <li><a href="https://github.com/androidx/media/commit/27902dea930f777a530b0bf3f684cdae77f7ac0e"><code>27902de</code></a> Update release notes for 1.8.0 stable</li> <li><a href="https://github.com/androidx/media/commit/502be51cd7efad118d0b4acf1fcfee7a6ee4140d"><code>502be51</code></a> Update release notes for 1.8.0-rc02 release</li> <li><a href="https://github.com/androidx/media/commit/2397a10f0626d3de5d68363b710856259e639e1f"><code>2397a10</code></a> Bump version number for 1.8.0-rc02</li> <li><a href="https://github.com/androidx/media/commit/c2d099b31e0f2a709dabdd65f74474c312c6c72a"><code>c2d099b</code></a> Handle non-integer <code>Format.id</code> when setting <code>KEY_TRACK_ID</code></li> <li><a href="https://github.com/androidx/media/commit/ec365475c2a329ef2aa41f15cce87cd1bcf5644f"><code>ec36547</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/2425">#2425</a> from MGaetan89:fix_release_notes</li> <li><a href="https://github.com/androidx/media/commit/bc37acd6e0782eb35a76ca4a21d927f5c4f88d0d"><code>bc37acd</code></a> Fix missing onPositionAdvancing callback after AudioTrack is stopped</li> <li><a href="https://github.com/androidx/media/commit/c653dce27c23ae9964cd35101ed537e874005fa9"><code>c653dce</code></a> Try to officially disconnect controller in more cases</li> <li><a href="https://github.com/androidx/media/commit/a44fcd0d9dc10ec9faca46520e8a29220de9beb1"><code>a44fcd0</code></a> Don't override playback exception when creating the playback state</li> <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.5.1...1.8.0">compare view</a></li> </ul> </details> <br /> Updates `androidx.media3:media3-exoplayer-rtsp` from 1.5.1 to 1.8.0 <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.8.0</h2> <p>This release includes the following changes since the <a href="https://github.com/androidx/media/releases/tag/1.7.1">1.7.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Add support for replacing the player in <code>ForwardingSimpleBasePlayer</code>.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add getter for shuffle mode to the <code>ExoPlayer</code> interface (<a href="https://redirect.github.com/androidx/media/pull/2522">#2522</a>).</li> <li>More clearly throw an exception if <code>DefaultAudioSink</code> is accessed from multiple threads. If this happens due to a call to <code>RendererCapabilities.getFormatSupport</code> outside of the player, make sure to call this method on the same thread as ExoPlayer's playback thread or use a different instance than the one used for playback (<a href="https://redirect.github.com/androidx/media/issues/1191">#1191</a>).</li> <li>Fix bug where non-stereo audio formats on TVs may be marked as unsupported by <code>DefaultTrackSelector</code>.</li> <li>Ensure the last frame is correctly rendered when using MediaCodec's <code>DECODE_ONLY</code> flag (which is enabled by default in scrubbing mode).</li> <li>Add support for using the virtual device ID from the <code>Context</code> passed to <code>ExoPlayer.Builder</code>.</li> <li>Enable dynamic scheduling by default in scrubbing mode.</li> <li>Avoid unnecessary reload of a source when seeking to the end of an item.</li> <li>Use <code>MediaCodec.BUFFER_FLAG_DECODE_ONLY</code> by default in scrubbing mode.</li> <li>Throw <code>IllegalStateException</code> when <code>PreloadMediaSource</code> is played by an <code>ExoPlayer</code> with a playback thread that is different than the preload thread (<a href="https://redirect.github.com/androidx/media/issues/2495">#2495</a>).</li> <li>Add <code>cloneAndMove</code> to <code>ShuffleMode</code> with a default implementation (<a href="https://redirect.github.com/androidx/media/pull/2226">#2226</a>).</li> <li>Change default behavior of <code>Renderer.getMinDurationToProgressUs</code> to return a larger value if no call to <code>render</code> is required.</li> <li>Fix bug where internal scheduling delayed last frame when seeking to the end while paused. For now, the bug fix only takes effect if <code>ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled</code> is enabled.</li> <li>Add <code>ExoPlayer.setScrubbingModeEnabled(boolean)</code> method. This optimizes the player for many frequent seeks (for example, from a user dragging a scrubber bar around). The behavior of scrubbing mode can be customized with <code>setScrubbingModeParameters(..)</code> on <code>ExoPlayer</code> and <code>ExoPlayer.Builder</code>.</li> <li>Allow customizing fractional seek tolerance in scrubbing mode.</li> <li>Increase codec operating rate in scrubbing mode.</li> <li>Fix bug where prepare errors in the content of <code>AdsMediaSource</code> may be never reported (<a href="https://redirect.github.com/androidx/media/issues/2337">#2337</a>).</li> <li>Fix memory leak in <code>MergingMediaSource</code>, for example used when sideloading subtitles (<a href="https://redirect.github.com/androidx/media/issues/2338">#2338</a>).</li> <li>Allow <code>CmcdConfiguration.Factory</code> to return <code>null</code> to disable CMCD logging for specific media items (<a href="https://redirect.github.com/androidx/media/pull/2386">#2386</a>).</li> <li>Increase default image buffer size from 128kB (copy-paste mistake from text tracks) to 26MB, which is large enough for 50MP Ultra HDR images (<a href="https://redirect.github.com/androidx/media/issues/2417">#2417</a>).</li> <li>Add <code>PreCacheHelper</code> that allows apps to pre-cache a single media with specified start position and duration.</li> <li>Add support of preloading from specified position in <code>DefaultPreloadManager</code>.</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>CodecDbLite</code> that enables chipset specific optimizations of video encoding settings.</li> <li>Add <code>setEnableCodecDbLite</code> flag to the <code>DefaultEncoderFactory</code> to enable CodecDB Lite settings optimization. By default, this flag is set to false.</li> <li>Filling an initial gap (added via <code>addGap()</code>) with silent audio now requires explicitly setting <code>experimentalSetForceAudioTrack(true)</code> in <code>EditedMediaItemSequence.Builder</code>. If the gap is in the middle of the sequence, then this flag is not required.</li> <li>Move <code>Muxer</code> interface from <code>media3-transformer</code> to <code>media3-muxer</code>.</li> <li>Make setting <code>MediaItem.Builder().setImageDuration(long)</code> mandatory to import a media item as an image.</li> <li>Add <code>Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean)</code> which includes an MP4 edit list when trimming to instruct players to ignore samples between the key frame before the trim start point, and the trim start point.</li> <li>Update Composition Demo app to use Kotlin and Jetpack Compose, and add a custom <code>VideoCompositorSettings</code> to arrange sequences into a 2x2 or PiP layout.</li> </ul> </li> <li>Extractors: <ul> <li>Parse metadata from fragmented MP4 files (<a href="https://redirect.github.com/androidx/media/issues/2084">#2084</a>).</li> <li>JPEG: Support motion photos that don't have an Exif segment at the start (<a href="https://redirect.github.com/androidx/media/issues/2552">#2552</a>).</li> <li>Add support for seeking in fragmented MP4 with multiple <code>sidx</code> atoms. This behavior can be enabled using the <code>FLAG_MERGE_FRAGMENTED_SIDX</code> flag on <code>FragmentedMp4Extractor</code> (<a href="https://redirect.github.com/google/ExoPlayer/issues/9373">#9373</a>).</li> <li>Ignore empty seek tables in FLAC files (including those containing only placeholder seek points), and fall back to binary search seeking if the duration of the file is known (<a href="https://redirect.github.com/androidx/media/issues/2327">#2327</a>).</li> <li>Fix parsing of H.265 SEI units to fully skip unrecognized SEI types (<a href="https://redirect.github.com/androidx/media/issues/2456">#2456</a>).</li> <li>Update <code>WavExtractor</code> to use the header extension's SubFormat data for the audio format when parsing a <code>WAVE_FORMAT_EXTENSIBLE</code> type file.</li> <li>MP4: Add support for <code>ipcm</code> and <code>fpcm</code> boxes defining raw PCM audio tracks (64-bit floating point PCM is not supported).</li> <li>MP4: Handle the rotation part of <code>tkhd</code> transformation matrices that both rotate and reflect the video. This ensures that reflected videos taken by the iPhone front facing camera display the right way up, but incorrectly reflected in the y-axis (<a href="https://redirect.github.com/androidx/media/issues/2012">#2012</a>).</li> <li>MP3: Use duration and data size from unseekable Xing, VBRI and similar variable bitrate metadata when falling back to constant bitrate seeking due to <code>FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)</code> (<a href="https://redirect.github.com/androidx/media/issues/2194">#2194</a>).</li> </ul> </li> <li>Audio: <ul> <li>Fix bug where <code>AnalyticsListener.onAudioPositionAdvancing</code> is not called when the audio playback is started very close to the end of the media.</li> <li>Add support for all linear PCM sample formats in <code>ChannelMappingAudioProcessor</code> and <code>TrimmingAudioProcessor</code>.</li> <li>Add support for audio gaps in <code>CompositionPlayer</code>.</li> <li>Remove spurious call to <code>BaseAudioProcessor#flush()</code> from <code>BaseAudioProcessor#reset()</code>.</li> </ul> </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.8.0 (2025-07-30)</h3> <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/release/#171-2025-05-16">1.7.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Add support for replacing the player in <code>ForwardingSimpleBasePlayer</code>.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add getter for shuffle mode to the <code>ExoPlayer</code> interface (<a href="https://redirect.github.com/androidx/media/pull/2522">#2522</a>).</li> <li>More clearly throw an exception if <code>DefaultAudioSink</code> is accessed from multiple threads. If this happens due to a call to <code>RendererCapabilities.getFormatSupport</code> outside of the player, make sure to call this method on the same thread as ExoPlayer's playback thread or use a different instance than the one used for playback (<a href="https://redirect.github.com/androidx/media/issues/1191">#1191</a>).</li> <li>Fix bug where non-stereo audio formats on TVs may be marked as unsupported by <code>DefaultTrackSelector</code>.</li> <li>Ensure the last frame is correctly rendered when using MediaCodec's <code>DECODE_ONLY</code> flag (which is enabled by default in scrubbing mode).</li> <li>Add support for using the virtual device ID from the <code>Context</code> passed to <code>ExoPlayer.Builder</code>.</li> <li>Enable dynamic scheduling by default in scrubbing mode.</li> <li>Avoid unnecessary reload of a source when seeking to the end of an item.</li> <li>Use <code>MediaCodec.BUFFER_FLAG_DECODE_ONLY</code> by default in scrubbing mode.</li> <li>Throw <code>IllegalStateException</code> when <code>PreloadMediaSource</code> is played by an <code>ExoPlayer</code> with a playback thread that is different than the preload thread (<a href="https://redirect.github.com/androidx/media/issues/2495">#2495</a>).</li> <li>Add <code>cloneAndMove</code> to <code>ShuffleMode</code> with a default implementation (<a href="https://redirect.github.com/androidx/media/pull/2226">#2226</a>).</li> <li>Change default behavior of <code>Renderer.getMinDurationToProgressUs</code> to return a larger value if no call to <code>render</code> is required.</li> <li>Fix bug where internal scheduling delayed last frame when seeking to the end while paused. For now, the bug fix only takes effect if <code>ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled</code> is enabled.</li> <li>Add <code>ExoPlayer.setScrubbingModeEnabled(boolean)</code> method. This optimizes the player for many frequent seeks (for example, from a user dragging a scrubber bar around). The behavior of scrubbing mode can be customized with <code>setScrubbingModeParameters(..)</code> on <code>ExoPlayer</code> and <code>ExoPlayer.Builder</code>.</li> <li>Allow customizing fractional seek tolerance in scrubbing mode.</li> <li>Increase codec operating rate in scrubbing mode.</li> <li>Fix bug where prepare errors in the content of <code>AdsMediaSource</code> may be never reported (<a href="https://redirect.github.com/androidx/media/issues/2337">#2337</a>).</li> <li>Fix memory leak in <code>MergingMediaSource</code>, for example used when sideloading subtitles (<a href="https://redirect.github.com/androidx/media/issues/2338">#2338</a>).</li> <li>Allow <code>CmcdConfiguration.Factory</code> to return <code>null</code> to disable CMCD logging for specific media items (<a href="https://redirect.github.com/androidx/media/pull/2386">#2386</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/androidx/media/commit/b7bbc6e2bc3e45ff3ed99884c114c50f03bba5c9"><code>b7bbc6e</code></a> Merge branch 'release' into release-1.8.0</li> <li><a href="https://github.com/androidx/media/commit/95e9194d31fb1fc4f70a6f0ab97483e55619c81d"><code>95e9194</code></a> Version bump to media3:1.8.0</li> <li><a href="https://github.com/androidx/media/commit/27902dea930f777a530b0bf3f684cdae77f7ac0e"><code>27902de</code></a> Update release notes for 1.8.0 stable</li> <li><a href="https://github.com/androidx/media/commit/502be51cd7efad118d0b4acf1fcfee7a6ee4140d"><code>502be51</code></a> Update release notes for 1.8.0-rc02 release</li> <li><a href="https://github.com/androidx/media/commit/2397a10f0626d3de5d68363b710856259e639e1f"><code>2397a10</code></a> Bump version number for 1.8.0-rc02</li> <li><a href="https://github.com/androidx/media/commit/c2d099b31e0f2a709dabdd65f74474c312c6c72a"><code>c2d099b</code></a> Handle non-integer <code>Format.id</code> when setting <code>KEY_TRACK_ID</code></li> <li><a href="https://github.com/androidx/media/commit/ec365475c2a329ef2aa41f15cce87cd1bcf5644f"><code>ec36547</code></a> Merge pull request <a href="https://redirect.github.com/androidx/media/issues/2425">#2425</a> from MGaetan89:fix_release_notes</li> <li><a href="https://github.com/androidx/media/commit/bc37acd6e0782eb35a76ca4a21d927f5c4f88d0d"><code>bc37acd</code></a> Fix missing onPositionAdvancing callback after AudioTrack is stopped</li> <li><a href="https://github.com/androidx/media/commit/c653dce27c23ae9964cd35101ed537e874005fa9"><code>c653dce</code></a> Try to officially disconnect controller in more cases</li> <li><a href="https://github.com/androidx/media/commit/a44fcd0d9dc10ec9faca46520e8a29220de9beb1"><code>a44fcd0</code></a> Don't override playback exception when creating the playback state</li> <li>Additional commits viewable in <a href="https://github.com/androidx/media/compare/1.5.1...1.8.0">compare view</a></li> </ul> </details> <br /> Updates `androidx.media3:media3-exoplayer-smoothstreaming` from 1.5.1 to 1.8.0 <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.8.0</h2> <p>This release includes the following changes since the <a href="https://github.com/androidx/media/releases/tag/1.7.1">1.7.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Add support for replacing the player in <code>ForwardingSimpleBasePlayer</code>.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add getter for shuffle mode to the <code>ExoPlayer</code> interface (<a href="https://redirect.github.com/androidx/media/pull/2522">#2522</a>).</li> <li>More clearly throw an exception if <code>DefaultAudioSink</code> is accessed from multiple threads. If this happens due to a call to <code>RendererCapabilities.getFormatSupport</code> outside of the player, make sure to call this method on the same thread as ExoPlayer's playback thread or use a different instance than the one used for playback (<a href="https://redirect.github.com/androidx/media/issues/1191">#1191</a>).</li> <li>Fix bug where non-stereo audio formats on TVs may be marked as unsupported by <code>DefaultTrackSelector</code>.</li> <li>Ensure the last frame is correctly rendered when using MediaCodec's <code>DECODE_ONLY</code> flag (which is enabled by default in scrubbing mode).</li> <li>Add support for using the virtual device ID from the <code>Context</code> passed to <code>ExoPlayer.Builder</code>.</li> <li>Enable dynamic scheduling by default in scrubbing mode.</li> <li>Avoid unnecessary reload of a source when seeking to the end of an item.</li> <li>Use <code>MediaCodec.BUFFER_FLAG_DECODE_ONLY</code> by default in scrubbing mode.</li> <li>Throw <code>IllegalStateException</code> when <code>PreloadMediaSource</code> is played by an <code>ExoPlayer</code> with a playback thread that is different than the preload thread (<a href="https://redirect.github.com/androidx/media/issues/2495">#2495</a>).</li> <li>Add <code>cloneAndMove</code> to <code>ShuffleMode</code> with a default implementation (<a href="https://redirect.github.com/androidx/media/pull/2226">#2226</a>).</li> <li>Change default behavior of <code>Renderer.getMinDurationToProgressUs</code> to return a larger value if no call to <code>render</code> is required.</li> <li>Fix bug where internal scheduling delayed last frame when seeking to the end while paused. For now, the bug fix only takes effect if <code>ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled</code> is enabled.</li> <li>Add <code>ExoPlayer.setScrubbingModeEnabled(boolean)</code> method. This optimizes the player for many frequent seeks (for example, from a user dragging a scrubber bar around). The behavior of scrubbing mode can be customized with <code>setScrubbingModeParameters(..)</code> on <code>ExoPlayer</code> and <code>ExoPlayer.Builder</code>.</li> <li>Allow customizing fractional seek tolerance in scrubbing mode.</li> <li>Increase codec operating rate in scrubbing mode.</li> <li>Fix bug where prepare errors in the content of <code>AdsMediaSource</code> may be never reported (<a href="https://redirect.github.com/androidx/media/issues/2337">#2337</a>).</li> <li>Fix memory leak in <code>MergingMediaSource</code>, for example used when sideloading subtitles (<a href="https://redirect.github.com/androidx/media/issues/2338">#2338</a>).</li> <li>Allow <code>CmcdConfiguration.Factory</code> to return <code>null</code> to disable CMCD logging for specific media items (<a href="https://redirect.github.com/androidx/media/pull/2386">#2386</a>).</li> <li>Increase default image buffer size from 128kB (copy-paste mistake from text tracks) to 26MB, which is large enough for 50MP Ultra HDR images (<a href="https://redirect.github.com/androidx/media/issues/2417">#2417</a>).</li> <li>Add <code>PreCacheHelper</code> that allows apps to pre-cache a single media with specified start position and duration.</li> <li>Add support of preloading from specified position in <code>DefaultPreloadManager</code>.</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>CodecDbLite</code> that enables chipset specific optimizations of video encoding settings.</li> <li>Add <code>setEnableCodecDbLite</code> flag to the <code>DefaultEncoderFactory</code> to enable CodecDB Lite settings optimization. By default, this flag is set to false.</li> <li>Filling an initial gap (added via <code>addGap()</code>) with silent audio now requires explicitly setting <code>experimentalSetForceAudioTrack(true)</code> in <code>EditedMediaItemSequence.Builder</code>. If the gap is in the middle of the sequence, then this flag is not required.</li> <li>Move <code>Muxer</code> interface from <code>media3-transformer</code> to <code>media3-muxer</code>.</li> <li>Make setting <code>MediaItem.Builder().setImageDuration(long)</code> mandatory to import a media item as an image.</li> <li>Add <code>Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean)</code> which includes an MP4 edit list when trimming to instruct players to ignore samples between the key frame before the trim start point, and the trim start point.</li> <li>Update Composition Demo app to use Kotlin and Jetpack Compose, and add a custom <code>VideoCompositorSettings</code> to arrange sequences into a 2x2 or PiP layout.</li> </ul> </li> <li>Extractors: <ul> <li>Parse metadata from fragmented MP4 files (<a href="https://redirect.github.com/androidx/media/issues/2084">#2084</a>).</li> <li>JPEG: Support motion photos that don't have an Exif segment at the start (<a href="https://redirect.github.com/androidx/media/issues/2552">#2552</a>).</li> <li>Add support for seeking in fragmented MP4 with multiple <code>sidx</code> atoms. This behavior can be enabled using the <code>FLAG_MERGE_FRAGMENTED_SIDX</code> flag on <code>FragmentedMp4Extractor</code> (<a href="https://redirect.github.com/google/ExoPlayer/issues/9373">#9373</a>).</li> <li>Ignore empty seek tables in FLAC files (including those containing only placeholder seek points), and fall back to binary search seeking if the duration of the file is known (<a href="https://redirect.github.com/androidx/media/issues/2327">#2327</a>).</li> <li>Fix parsing of H.265 SEI units to fully skip unrecognized SEI types (<a href="https://redirect.github.com/androidx/media/issues/2456">#2456</a>).</li> <li>Update <code>WavExtractor</code> to use the header extension's SubFormat data for the audio format when parsing a <code>WAVE_FORMAT_EXTENSIBLE</code> type file.</li> <li>MP4: Add support for <code>ipcm</code> and <code>fpcm</code> boxes defining raw PCM audio tracks (64-bit floating point PCM is not supported).</li> <li>MP4: Handle the rotation part of <code>tkhd</code> transformation matrices that both rotate and reflect the video. This ensures that reflected videos taken by the iPhone front facing camera display the right way up, but incorrectly reflected in the y-axis (<a href="https://redirect.github.com/androidx/media/issues/2012">#2012</a>).</li> <li>MP3: Use duration and data size from unseekable Xing, VBRI and similar variable bitrate metadata when falling back to constant bitrate seeking due to <code>FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)</code> (<a href="https://redirect.github.com/androidx/media/issues/2194">#2194</a>).</li> </ul> </li> <li>Audio: <ul> <li>Fix bug where <code>AnalyticsListener.onAudioPositionAdvancing</code> is not called when the audio playback is started very close to the end of the media.</li> <li>Add support for all linear PCM sample formats in <code>ChannelMappingAudioProcessor</code> and <code>TrimmingAudioProcessor</code>.</li> <li>Add support for audio gaps in <code>CompositionPlayer</code>.</li> <li>Remove spurious call to <code>BaseAudioProcessor#flush()</code> from <code>BaseAudioProcessor#reset()</code>.</li> </ul> </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-smoothstreaming's changelog</a>.</em></p> <blockquote> <h3>1.8.0 (2025-07-30)</h3> <p>This release includes the following changes since the <a href="https://github.com/androidx/media/blob/release/#171-2025-05-16">1.7.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Add support for replacing the player in <code>ForwardingSimpleBasePlayer</code>.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add getter for shuffle mode to the <code>ExoPlayer</code> interface (<a href="https://redirect.github.com/androidx/media/pull/2522">#2522</a>).</li> <li>More clearly throw an exception if <code>DefaultAudioSink</code> is accessed from multiple threads. If this happens due to a call to <code>RendererCapabilities.getFormatSupport</code> outside of the player, make sure to call this method on the same thread as ExoPlayer's playback thread or use a different instance than the one used for playback (<a href="https://redirect.github.com/androidx/media/issues/1191">#1191</a>).</li> <li>Fix bug where non-stereo audio formats on TVs may be marked as unsupported by <code>DefaultTrackSelector</code>.</li> <li>Ensure the last frame is correctly rendered when using MediaCodec's <code>DECODE_ONLY</code> flag (which is enabled by default in scrubbing mode).</li> <li>Add support for using the virtual device ID from the <code>Context</code> passed to <code>ExoPlayer.Builder</code>.</li> <li>Enable dynamic scheduling by default in scrubbing mode.</li> <li>Avoid unnecessary reload of a source when seeking to the end of an item.</li> <li>Use <code>MediaCodec.BUFFER_FLAG_DECODE_ONLY</code> by default in scrubbing mode.</li> <li>Throw <code>IllegalStateException</code> when <code>PreloadMediaSource</code> is played by an <code>ExoPlayer</code> with a playback thread that is different than the preload thread (<a href="https://redirect.github.com/androidx/media/issues/2495">#2495</a>).</li> <li>Add <code>cloneAndMove</code> to <code>ShuffleMode</code> with a default implementation (<a href="https://redirect.github.com/androidx/media/pull/2226">#2226</a>).</li> <li>Change default behavior of <code>Renderer.getMinDurationToProgressUs</code> to ret... _Description has been truncated_
1 parent b61a72d commit 7d57d12

File tree

3 files changed

+6
-2
lines changed

3 files changed

+6
-2
lines changed

packages/video_player/video_player_android/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.8.20
2+
3+
* Bumps `exoplayer_version` from 1.5.1 to 1.8.0.
4+
15
## 2.8.19
26

37
* Updates to Pigeon 26.

packages/video_player/video_player_android/android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ android {
5050
}
5151

5252
dependencies {
53-
def exoplayer_version = "1.5.1"
53+
def exoplayer_version = "1.8.0"
5454
implementation("androidx.media3:media3-exoplayer:${exoplayer_version}")
5555
implementation("androidx.media3:media3-exoplayer-hls:${exoplayer_version}")
5656
implementation("androidx.media3:media3-exoplayer-dash:${exoplayer_version}")

packages/video_player/video_player_android/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: video_player_android
22
description: Android implementation of the video_player plugin.
33
repository: https://github.com/flutter/packages/tree/main/packages/video_player/video_player_android
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22
5-
version: 2.8.19
5+
version: 2.8.20
66

77
environment:
88
sdk: ^3.9.0

0 commit comments

Comments
 (0)