Repository navigation
[video_player]: Bump exoplayer_version from 1.3.1 to 1.4.0 in /packages/video_player/video_player_android/android - #7241
Merged
Conversation
Bumps `exoplayer_version` from 1.3.1 to 1.4.0. Updates `androidx.media3:media3-exoplayer` from 1.3.1 to 1.4.0 - [Release notes](https://github.com/androidx/media/releases) - [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md) - [Commits](androidx/media@1.3.1...1.4.0) Updates `androidx.media3:media3-exoplayer-hls` from 1.3.1 to 1.4.0 - [Release notes](https://github.com/androidx/media/releases) - [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md) - [Commits](androidx/media@1.3.1...1.4.0) Updates `androidx.media3:media3-exoplayer-dash` from 1.3.1 to 1.4.0 - [Release notes](https://github.com/androidx/media/releases) - [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md) - [Commits](androidx/media@1.3.1...1.4.0) Updates `androidx.media3:media3-exoplayer-smoothstreaming` from 1.3.1 to 1.4.0 - [Release notes](https://github.com/androidx/media/releases) - [Changelog](https://github.com/androidx/media/blob/release/RELEASENOTES.md) - [Commits](androidx/media@1.3.1...1.4.0) --- updated-dependencies: - dependency-name: androidx.media3:media3-exoplayer dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: androidx.media3:media3-exoplayer-hls dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: androidx.media3:media3-exoplayer-dash dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: androidx.media3:media3-exoplayer-smoothstreaming dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]>
camsim99
approved these changes
Jul 29, 2024
fluttergithubbot
approved these changes
Jul 29, 2024
auto-submit
Bot
deleted the
dependabot/gradle/packages/video_player/video_player_android/android/exoplayer_version-1.4.0
branch
July 29, 2024 16:42
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/flutter
that referenced
this pull request
Jul 30, 2024
… /packages/video_player/video_player_android/android (flutter/packages#7241)
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/flutter
that referenced
this pull request
Jul 30, 2024
… /packages/video_player/video_player_android/android (flutter/packages#7241)
auto-submit Bot
pushed a commit
to flutter/flutter
that referenced
this pull request
Jul 30, 2024
flutter/packages@247fb5f...99e8606 2024-07-29 [email protected] [video_player_android] Add RTSP support (flutter/packages#7081) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com [video_player]: Bump exoplayer_version from 1.3.1 to 1.4.0 in /packages/video_player/video_player_android/android (flutter/packages#7241) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com [camera]: Bump androidx.annotation:annotation from 1.8.0 to 1.8.1 in /packages/camera/camera_android/android (flutter/packages#7236) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com [path_provider]: Bump androidx.annotation:annotation from 1.8.0 to 1.8.1 in /packages/path_provider/path_provider_android/android (flutter/packages#7244) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com Bump ossf/scorecard-action from 2.3.3 to 2.4.0 (flutter/packages#7234) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
TytaniumDev
pushed a commit
to TytaniumDev/flutter
that referenced
this pull request
Aug 7, 2024
flutter/packages@247fb5f...99e8606 2024-07-29 [email protected] [video_player_android] Add RTSP support (flutter/packages#7081) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com [video_player]: Bump exoplayer_version from 1.3.1 to 1.4.0 in /packages/video_player/video_player_android/android (flutter/packages#7241) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com [camera]: Bump androidx.annotation:annotation from 1.8.0 to 1.8.1 in /packages/camera/camera_android/android (flutter/packages#7236) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com [path_provider]: Bump androidx.annotation:annotation from 1.8.0 to 1.8.1 in /packages/path_provider/path_provider_android/android (flutter/packages#7244) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com Bump ossf/scorecard-action from 2.3.3 to 2.4.0 (flutter/packages#7234) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Buchimi
pushed a commit
to Buchimi/flutter
that referenced
this pull request
Sep 2, 2024
flutter/packages@247fb5f...99e8606 2024-07-29 [email protected] [video_player_android] Add RTSP support (flutter/packages#7081) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com [video_player]: Bump exoplayer_version from 1.3.1 to 1.4.0 in /packages/video_player/video_player_android/android (flutter/packages#7241) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com [camera]: Bump androidx.annotation:annotation from 1.8.0 to 1.8.1 in /packages/camera/camera_android/android (flutter/packages#7236) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com [path_provider]: Bump androidx.annotation:annotation from 1.8.0 to 1.8.1 in /packages/path_provider/path_provider_android/android (flutter/packages#7244) 2024-07-29 49699333+dependabot[bot]@users.noreply.github.com Bump ossf/scorecard-action from 2.3.3 to 2.4.0 (flutter/packages#7234) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
creatorpiyush
pushed a commit
to creatorpiyush/packages
that referenced
this pull request
Jun 10, 2026
…es/video_player/video_player_android/android (flutter#7241) Bumps `exoplayer_version` from 1.3.1 to 1.4.0. Updates `androidx.media3:media3-exoplayer` from 1.3.1 to 1.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Freleases">androidx.media3:media3-exoplayer's releases</a>.</em></p> <blockquote> <h2>1.4.0</h2> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2FHEAD%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next source or take other actions.</li> <li>Fix bug where silence skipping at the end of items can trigger a playback exception.</li> <li>Add <code>clear</code> to <code>PreloadMediaSource</code> to discard the preloading period.</li> <li>Add new error code <code>PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED</code> that is used when codec resources are reclaimed for higher priority tasks.</li> <li>Let <code>AdsMediaSource</code> load preroll ads before initial content media preparation completes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1358">#1358</a>).</li> <li>Fix bug where playback moved to <code>STATE_ENDED</code> when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.</li> <li>Rename <code>onTimelineRefreshed()</code> to <code>onSourcePrepared()</code> and <code>onPrepared()</code> to <code>onTracksSelected()</code> in <code>PreloadMediaSource.PreloadControl</code>. Also rename the IntDefs in <code>DefaultPreloadManager.Stage</code> accordingly.</li> <li>Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using <code>experimentalSetDynamicSchedulingEnabled()</code> when setting up your ExoPlayer instance.</li> <li>Add <code>Renderer.getDurationToProgressUs()</code>. A <code>Renderer</code> can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code> then <code>ExoPlayer</code> will call this method when calculating the time to schedule its work task.</li> <li>Add <code>MediaCodecAdapter#OnBufferAvailableListener</code> to alert when input and output buffers are available for use by <code>MediaCodecRenderer</code>. <code>MediaCodecRenderer</code> will signal <code>ExoPlayer</code> when receiving these callbacks and if <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code>, then <code>ExoPlayer</code> will schedule its work loop as renderers can make progress.</li> <li>Use data class for <code>LoadControl</code> methods instead of individual parameters.</li> <li>Add <code>ExoPlayer.isReleased()</code> to check whether <code>Exoplayer.release()</code> has been called.</li> <li>Add <code>ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()</code> to configure the maximum position for which <code>seekToPrevious()</code> seeks to the previous item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1425">#1425</a>).</li> <li>Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1436">#1436</a>).</li> <li>Fix potential <code>IndexOutOfBoundsException</code> caused by extractors reporting additional tracks after the initial preparation step (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1476">#1476</a>).</li> <li><code>Effects</code> in <code>ExoPlayer.setVideoEffect()</code> will receive the timestamps with the renderer offset removed (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1098">#1098</a>).</li> <li>Fix potential <code>IllegalArgumentException</code> when handling player error that happened while reading ahead into another playlist item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1483">#1483</a>).</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>audioConversionProcess</code> and <code>videoConversionProcess</code> to <code>ExportResult</code> indicating how the respective track in the output file was made.</li> <li>Relax trim optimization H.264 level checks.</li> <li>Add support for changing between SDR and HDR input media in a sequence.</li> <li>Add support for composition-level audio effects.</li> <li>Add support for transcoding Ultra HDR images into HDR videos.</li> <li>Fix issue where the <code>DefaultAudioMixer</code> does not output the correct amount of bytes after being reset and reused.</li> <li>Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.</li> <li>When selecting tracks in <code>ExoPlayerAssetLoader</code>, ignore audio channel count constraints as they only apply for playback.</li> <li>Replace <code>androidx.media3.transformer.Muxer</code> interface with <code>androidx.media3.muxer.Muxer</code> and remove <code>androidx.media3.transformer.Muxer</code>.</li> <li>Fix HEIC image loading from content URI schemes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1373">#1373</a>).</li> <li>Adjust audio track duration in <code>AudioGraphInput</code> to improve AV sync.</li> <li>Remove <code>ExportResult.processedInputs</code> field. If you use this field for codec details, then use <code>DefaultDecoderFactory.listener</code> instead. In case of a codec exception, codec details will be available in the <code>ExportException.codecInfo</code>.</li> </ul> </li> <li>Extractors: <ul> <li>MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fgoogle%2FExoPlayer%2Fissues%2F7909">#7909</a>). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1150">#1150</a>) and H.262 HLS streams (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1126">#1126</a>).</li> <li>MP3: Prefer the data size from an <code>Info</code> frame over the size reported by the underlying stream (e.g. file size, or HTTP <code>Content-Length</code> header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1376">#1376</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2FRELEASENOTES.md">androidx.media3:media3-exoplayer's changelog</a>.</em></p> <blockquote> <h3>1.4.0 (2024-07-24)</h3> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fb01c6ffcb3fca3d038476dab5d3bc9c9f2010781"><code>b01c6ff</code></a> Merge branch 'release' into release-1.4.0</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F9fb731669649dc0002649c9fb49fb8410d39b111"><code>9fb7316</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F4e6a643d883c535690233e291b2d72c19c2393b0"><code>4e6a643</code></a> Update media3 version for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F18a1582e8c18a56f2ed9e468a6acb3b9c57aa98a"><code>18a1582</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F1dfab4f73ae29f4ec4ec9751e9e7dcb87a66e049"><code>1dfab4f</code></a> Merge release notes for media3 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F567204e986804ab17abfdb41d909547a03bdf36e"><code>567204e</code></a> Version bump to 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F75dadeaa9e341ebdd3a1095ed3e22f08ab4d5376"><code>75dadea</code></a> Update release notes for 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fd97ec132b9d689334f14eaaa194fea3a19860a63"><code>d97ec13</code></a> Suppress the lint "WrongConstant" error</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F6946f499972d8066721ba2a4d2b972ebaf1b0a6d"><code>6946f49</code></a> Add OptIn annotation to method declaration in demo app file</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F5b60f6c67d28cf8e8c3f827a85e7d53b8bd23d90"><code>5b60f6c</code></a> Fix index out of bounds exception when a <code>Subtitle</code> is empty</li> <li>Additional commits viewable in <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcompare%2F1.3.1...1.4.0">compare view</a></li> </ul> </details> <br /> Updates `androidx.media3:media3-exoplayer-hls` from 1.3.1 to 1.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Freleases">androidx.media3:media3-exoplayer-hls's releases</a>.</em></p> <blockquote> <h2>1.4.0</h2> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2FHEAD%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next source or take other actions.</li> <li>Fix bug where silence skipping at the end of items can trigger a playback exception.</li> <li>Add <code>clear</code> to <code>PreloadMediaSource</code> to discard the preloading period.</li> <li>Add new error code <code>PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED</code> that is used when codec resources are reclaimed for higher priority tasks.</li> <li>Let <code>AdsMediaSource</code> load preroll ads before initial content media preparation completes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1358">#1358</a>).</li> <li>Fix bug where playback moved to <code>STATE_ENDED</code> when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.</li> <li>Rename <code>onTimelineRefreshed()</code> to <code>onSourcePrepared()</code> and <code>onPrepared()</code> to <code>onTracksSelected()</code> in <code>PreloadMediaSource.PreloadControl</code>. Also rename the IntDefs in <code>DefaultPreloadManager.Stage</code> accordingly.</li> <li>Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using <code>experimentalSetDynamicSchedulingEnabled()</code> when setting up your ExoPlayer instance.</li> <li>Add <code>Renderer.getDurationToProgressUs()</code>. A <code>Renderer</code> can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code> then <code>ExoPlayer</code> will call this method when calculating the time to schedule its work task.</li> <li>Add <code>MediaCodecAdapter#OnBufferAvailableListener</code> to alert when input and output buffers are available for use by <code>MediaCodecRenderer</code>. <code>MediaCodecRenderer</code> will signal <code>ExoPlayer</code> when receiving these callbacks and if <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code>, then <code>ExoPlayer</code> will schedule its work loop as renderers can make progress.</li> <li>Use data class for <code>LoadControl</code> methods instead of individual parameters.</li> <li>Add <code>ExoPlayer.isReleased()</code> to check whether <code>Exoplayer.release()</code> has been called.</li> <li>Add <code>ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()</code> to configure the maximum position for which <code>seekToPrevious()</code> seeks to the previous item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1425">#1425</a>).</li> <li>Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1436">#1436</a>).</li> <li>Fix potential <code>IndexOutOfBoundsException</code> caused by extractors reporting additional tracks after the initial preparation step (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1476">#1476</a>).</li> <li><code>Effects</code> in <code>ExoPlayer.setVideoEffect()</code> will receive the timestamps with the renderer offset removed (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1098">#1098</a>).</li> <li>Fix potential <code>IllegalArgumentException</code> when handling player error that happened while reading ahead into another playlist item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1483">#1483</a>).</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>audioConversionProcess</code> and <code>videoConversionProcess</code> to <code>ExportResult</code> indicating how the respective track in the output file was made.</li> <li>Relax trim optimization H.264 level checks.</li> <li>Add support for changing between SDR and HDR input media in a sequence.</li> <li>Add support for composition-level audio effects.</li> <li>Add support for transcoding Ultra HDR images into HDR videos.</li> <li>Fix issue where the <code>DefaultAudioMixer</code> does not output the correct amount of bytes after being reset and reused.</li> <li>Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.</li> <li>When selecting tracks in <code>ExoPlayerAssetLoader</code>, ignore audio channel count constraints as they only apply for playback.</li> <li>Replace <code>androidx.media3.transformer.Muxer</code> interface with <code>androidx.media3.muxer.Muxer</code> and remove <code>androidx.media3.transformer.Muxer</code>.</li> <li>Fix HEIC image loading from content URI schemes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1373">#1373</a>).</li> <li>Adjust audio track duration in <code>AudioGraphInput</code> to improve AV sync.</li> <li>Remove <code>ExportResult.processedInputs</code> field. If you use this field for codec details, then use <code>DefaultDecoderFactory.listener</code> instead. In case of a codec exception, codec details will be available in the <code>ExportException.codecInfo</code>.</li> </ul> </li> <li>Extractors: <ul> <li>MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fgoogle%2FExoPlayer%2Fissues%2F7909">#7909</a>). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1150">#1150</a>) and H.262 HLS streams (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1126">#1126</a>).</li> <li>MP3: Prefer the data size from an <code>Info</code> frame over the size reported by the underlying stream (e.g. file size, or HTTP <code>Content-Length</code> header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1376">#1376</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2FRELEASENOTES.md">androidx.media3:media3-exoplayer-hls's changelog</a>.</em></p> <blockquote> <h3>1.4.0 (2024-07-24)</h3> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fb01c6ffcb3fca3d038476dab5d3bc9c9f2010781"><code>b01c6ff</code></a> Merge branch 'release' into release-1.4.0</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F9fb731669649dc0002649c9fb49fb8410d39b111"><code>9fb7316</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F4e6a643d883c535690233e291b2d72c19c2393b0"><code>4e6a643</code></a> Update media3 version for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F18a1582e8c18a56f2ed9e468a6acb3b9c57aa98a"><code>18a1582</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F1dfab4f73ae29f4ec4ec9751e9e7dcb87a66e049"><code>1dfab4f</code></a> Merge release notes for media3 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F567204e986804ab17abfdb41d909547a03bdf36e"><code>567204e</code></a> Version bump to 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F75dadeaa9e341ebdd3a1095ed3e22f08ab4d5376"><code>75dadea</code></a> Update release notes for 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fd97ec132b9d689334f14eaaa194fea3a19860a63"><code>d97ec13</code></a> Suppress the lint "WrongConstant" error</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F6946f499972d8066721ba2a4d2b972ebaf1b0a6d"><code>6946f49</code></a> Add OptIn annotation to method declaration in demo app file</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F5b60f6c67d28cf8e8c3f827a85e7d53b8bd23d90"><code>5b60f6c</code></a> Fix index out of bounds exception when a <code>Subtitle</code> is empty</li> <li>Additional commits viewable in <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcompare%2F1.3.1...1.4.0">compare view</a></li> </ul> </details> <br /> Updates `androidx.media3:media3-exoplayer-dash` from 1.3.1 to 1.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Freleases">androidx.media3:media3-exoplayer-dash's releases</a>.</em></p> <blockquote> <h2>1.4.0</h2> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2FHEAD%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next source or take other actions.</li> <li>Fix bug where silence skipping at the end of items can trigger a playback exception.</li> <li>Add <code>clear</code> to <code>PreloadMediaSource</code> to discard the preloading period.</li> <li>Add new error code <code>PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED</code> that is used when codec resources are reclaimed for higher priority tasks.</li> <li>Let <code>AdsMediaSource</code> load preroll ads before initial content media preparation completes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1358">#1358</a>).</li> <li>Fix bug where playback moved to <code>STATE_ENDED</code> when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.</li> <li>Rename <code>onTimelineRefreshed()</code> to <code>onSourcePrepared()</code> and <code>onPrepared()</code> to <code>onTracksSelected()</code> in <code>PreloadMediaSource.PreloadControl</code>. Also rename the IntDefs in <code>DefaultPreloadManager.Stage</code> accordingly.</li> <li>Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using <code>experimentalSetDynamicSchedulingEnabled()</code> when setting up your ExoPlayer instance.</li> <li>Add <code>Renderer.getDurationToProgressUs()</code>. A <code>Renderer</code> can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code> then <code>ExoPlayer</code> will call this method when calculating the time to schedule its work task.</li> <li>Add <code>MediaCodecAdapter#OnBufferAvailableListener</code> to alert when input and output buffers are available for use by <code>MediaCodecRenderer</code>. <code>MediaCodecRenderer</code> will signal <code>ExoPlayer</code> when receiving these callbacks and if <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code>, then <code>ExoPlayer</code> will schedule its work loop as renderers can make progress.</li> <li>Use data class for <code>LoadControl</code> methods instead of individual parameters.</li> <li>Add <code>ExoPlayer.isReleased()</code> to check whether <code>Exoplayer.release()</code> has been called.</li> <li>Add <code>ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()</code> to configure the maximum position for which <code>seekToPrevious()</code> seeks to the previous item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1425">#1425</a>).</li> <li>Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1436">#1436</a>).</li> <li>Fix potential <code>IndexOutOfBoundsException</code> caused by extractors reporting additional tracks after the initial preparation step (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1476">#1476</a>).</li> <li><code>Effects</code> in <code>ExoPlayer.setVideoEffect()</code> will receive the timestamps with the renderer offset removed (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1098">#1098</a>).</li> <li>Fix potential <code>IllegalArgumentException</code> when handling player error that happened while reading ahead into another playlist item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1483">#1483</a>).</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>audioConversionProcess</code> and <code>videoConversionProcess</code> to <code>ExportResult</code> indicating how the respective track in the output file was made.</li> <li>Relax trim optimization H.264 level checks.</li> <li>Add support for changing between SDR and HDR input media in a sequence.</li> <li>Add support for composition-level audio effects.</li> <li>Add support for transcoding Ultra HDR images into HDR videos.</li> <li>Fix issue where the <code>DefaultAudioMixer</code> does not output the correct amount of bytes after being reset and reused.</li> <li>Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.</li> <li>When selecting tracks in <code>ExoPlayerAssetLoader</code>, ignore audio channel count constraints as they only apply for playback.</li> <li>Replace <code>androidx.media3.transformer.Muxer</code> interface with <code>androidx.media3.muxer.Muxer</code> and remove <code>androidx.media3.transformer.Muxer</code>.</li> <li>Fix HEIC image loading from content URI schemes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1373">#1373</a>).</li> <li>Adjust audio track duration in <code>AudioGraphInput</code> to improve AV sync.</li> <li>Remove <code>ExportResult.processedInputs</code> field. If you use this field for codec details, then use <code>DefaultDecoderFactory.listener</code> instead. In case of a codec exception, codec details will be available in the <code>ExportException.codecInfo</code>.</li> </ul> </li> <li>Extractors: <ul> <li>MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fgoogle%2FExoPlayer%2Fissues%2F7909">#7909</a>). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1150">#1150</a>) and H.262 HLS streams (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1126">#1126</a>).</li> <li>MP3: Prefer the data size from an <code>Info</code> frame over the size reported by the underlying stream (e.g. file size, or HTTP <code>Content-Length</code> header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1376">#1376</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2FRELEASENOTES.md">androidx.media3:media3-exoplayer-dash's changelog</a>.</em></p> <blockquote> <h3>1.4.0 (2024-07-24)</h3> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fb01c6ffcb3fca3d038476dab5d3bc9c9f2010781"><code>b01c6ff</code></a> Merge branch 'release' into release-1.4.0</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F9fb731669649dc0002649c9fb49fb8410d39b111"><code>9fb7316</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F4e6a643d883c535690233e291b2d72c19c2393b0"><code>4e6a643</code></a> Update media3 version for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F18a1582e8c18a56f2ed9e468a6acb3b9c57aa98a"><code>18a1582</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F1dfab4f73ae29f4ec4ec9751e9e7dcb87a66e049"><code>1dfab4f</code></a> Merge release notes for media3 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F567204e986804ab17abfdb41d909547a03bdf36e"><code>567204e</code></a> Version bump to 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F75dadeaa9e341ebdd3a1095ed3e22f08ab4d5376"><code>75dadea</code></a> Update release notes for 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fd97ec132b9d689334f14eaaa194fea3a19860a63"><code>d97ec13</code></a> Suppress the lint "WrongConstant" error</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F6946f499972d8066721ba2a4d2b972ebaf1b0a6d"><code>6946f49</code></a> Add OptIn annotation to method declaration in demo app file</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F5b60f6c67d28cf8e8c3f827a85e7d53b8bd23d90"><code>5b60f6c</code></a> Fix index out of bounds exception when a <code>Subtitle</code> is empty</li> <li>Additional commits viewable in <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcompare%2F1.3.1...1.4.0">compare view</a></li> </ul> </details> <br /> Updates `androidx.media3:media3-exoplayer-smoothstreaming` from 1.3.1 to 1.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Freleases">androidx.media3:media3-exoplayer-smoothstreaming's releases</a>.</em></p> <blockquote> <h2>1.4.0</h2> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2FHEAD%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next source or take other actions.</li> <li>Fix bug where silence skipping at the end of items can trigger a playback exception.</li> <li>Add <code>clear</code> to <code>PreloadMediaSource</code> to discard the preloading period.</li> <li>Add new error code <code>PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED</code> that is used when codec resources are reclaimed for higher priority tasks.</li> <li>Let <code>AdsMediaSource</code> load preroll ads before initial content media preparation completes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1358">#1358</a>).</li> <li>Fix bug where playback moved to <code>STATE_ENDED</code> when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.</li> <li>Rename <code>onTimelineRefreshed()</code> to <code>onSourcePrepared()</code> and <code>onPrepared()</code> to <code>onTracksSelected()</code> in <code>PreloadMediaSource.PreloadControl</code>. Also rename the IntDefs in <code>DefaultPreloadManager.Stage</code> accordingly.</li> <li>Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using <code>experimentalSetDynamicSchedulingEnabled()</code> when setting up your ExoPlayer instance.</li> <li>Add <code>Renderer.getDurationToProgressUs()</code>. A <code>Renderer</code> can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code> then <code>ExoPlayer</code> will call this method when calculating the time to schedule its work task.</li> <li>Add <code>MediaCodecAdapter#OnBufferAvailableListener</code> to alert when input and output buffers are available for use by <code>MediaCodecRenderer</code>. <code>MediaCodecRenderer</code> will signal <code>ExoPlayer</code> when receiving these callbacks and if <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code>, then <code>ExoPlayer</code> will schedule its work loop as renderers can make progress.</li> <li>Use data class for <code>LoadControl</code> methods instead of individual parameters.</li> <li>Add <code>ExoPlayer.isReleased()</code> to check whether <code>Exoplayer.release()</code> has been called.</li> <li>Add <code>ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()</code> to configure the maximum position for which <code>seekToPrevious()</code> seeks to the previous item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1425">#1425</a>).</li> <li>Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1436">#1436</a>).</li> <li>Fix potential <code>IndexOutOfBoundsException</code> caused by extractors reporting additional tracks after the initial preparation step (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1476">#1476</a>).</li> <li><code>Effects</code> in <code>ExoPlayer.setVideoEffect()</code> will receive the timestamps with the renderer offset removed (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1098">#1098</a>).</li> <li>Fix potential <code>IllegalArgumentException</code> when handling player error that happened while reading ahead into another playlist item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1483">#1483</a>).</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>audioConversionProcess</code> and <code>videoConversionProcess</code> to <code>ExportResult</code> indicating how the respective track in the output file was made.</li> <li>Relax trim optimization H.264 level checks.</li> <li>Add support for changing between SDR and HDR input media in a sequence.</li> <li>Add support for composition-level audio effects.</li> <li>Add support for transcoding Ultra HDR images into HDR videos.</li> <li>Fix issue where the <code>DefaultAudioMixer</code> does not output the correct amount of bytes after being reset and reused.</li> <li>Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.</li> <li>When selecting tracks in <code>ExoPlayerAssetLoader</code>, ignore audio channel count constraints as they only apply for playback.</li> <li>Replace <code>androidx.media3.transformer.Muxer</code> interface with <code>androidx.media3.muxer.Muxer</code> and remove <code>androidx.media3.transformer.Muxer</code>.</li> <li>Fix HEIC image loading from content URI schemes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1373">#1373</a>).</li> <li>Adjust audio track duration in <code>AudioGraphInput</code> to improve AV sync.</li> <li>Remove <code>ExportResult.processedInputs</code> field. If you use this field for codec details, then use <code>DefaultDecoderFactory.listener</code> instead. In case of a codec exception, codec details will be available in the <code>ExportException.codecInfo</code>.</li> </ul> </li> <li>Extractors: <ul> <li>MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fgoogle%2FExoPlayer%2Fissues%2F7909">#7909</a>). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1150">#1150</a>) and H.262 HLS streams (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1126">#1126</a>).</li> <li>MP3: Prefer the data size from an <code>Info</code> frame over the size reported by the underlying stream (e.g. file size, or HTTP <code>Content-Length</code> header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1376">#1376</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2FRELEASENOTES.md">androidx.media3:media3-exoplayer-smoothstreaming's changelog</a>.</em></p> <blockquote> <h3>1.4.0 (2024-07-24)</h3> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fb01c6ffcb3fca3d038476dab5d3bc9c9f2010781"><code>b01c6ff</code></a> Merge branch 'release' into release-1.4.0</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F9fb731669649dc0002649c9fb49fb8410d39b111"><code>9fb7316</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F4e6a643d883c535690233e291b2d72c19c2393b0"><code>4e6a643</code></a> Update media3 version for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F18a1582e8c18a56f2ed9e468a6acb3b9c57aa98a"><code>18a1582</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F1dfab4f73ae29f4ec4ec9751e9e7dcb87a66e049"><code>1dfab4f</code></a> Merge release notes for media3 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F567204e986804ab17abfdb41d909547a03bdf36e"><code>567204e</code></a> Version bump to 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F75dadeaa9e341ebdd3a1095ed3e22f08ab4d5376"><code>75dadea</code></a> Update release notes for 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fd97ec132b9d689334f14eaaa194fea3a19860a63"><code>d97ec13</code></a> Suppress the lint "WrongConstant" error</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F6946f499972d8066721ba2a4d2b972ebaf1b0a6d"><code>6946f49</code></a> Add OptIn annotation to method declaration in demo app file</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F5b60f6c67d28cf8e8c3f827a85e7d53b8bd23d90"><code>5b60f6c</code></a> Fix index out of bounds exception when a <code>Subtitle</code> is empty</li> <li>Additional commits viewable in <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcompare%2F1.3.1...1.4.0">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>
bisor0627
pushed a commit
to bisor0627/packages
that referenced
this pull request
Jun 19, 2026
…es/video_player/video_player_android/android (flutter#7241) Bumps `exoplayer_version` from 1.3.1 to 1.4.0. Updates `androidx.media3:media3-exoplayer` from 1.3.1 to 1.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Freleases">androidx.media3:media3-exoplayer's releases</a>.</em></p> <blockquote> <h2>1.4.0</h2> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2FHEAD%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next source or take other actions.</li> <li>Fix bug where silence skipping at the end of items can trigger a playback exception.</li> <li>Add <code>clear</code> to <code>PreloadMediaSource</code> to discard the preloading period.</li> <li>Add new error code <code>PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED</code> that is used when codec resources are reclaimed for higher priority tasks.</li> <li>Let <code>AdsMediaSource</code> load preroll ads before initial content media preparation completes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1358">#1358</a>).</li> <li>Fix bug where playback moved to <code>STATE_ENDED</code> when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.</li> <li>Rename <code>onTimelineRefreshed()</code> to <code>onSourcePrepared()</code> and <code>onPrepared()</code> to <code>onTracksSelected()</code> in <code>PreloadMediaSource.PreloadControl</code>. Also rename the IntDefs in <code>DefaultPreloadManager.Stage</code> accordingly.</li> <li>Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using <code>experimentalSetDynamicSchedulingEnabled()</code> when setting up your ExoPlayer instance.</li> <li>Add <code>Renderer.getDurationToProgressUs()</code>. A <code>Renderer</code> can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code> then <code>ExoPlayer</code> will call this method when calculating the time to schedule its work task.</li> <li>Add <code>MediaCodecAdapter#OnBufferAvailableListener</code> to alert when input and output buffers are available for use by <code>MediaCodecRenderer</code>. <code>MediaCodecRenderer</code> will signal <code>ExoPlayer</code> when receiving these callbacks and if <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code>, then <code>ExoPlayer</code> will schedule its work loop as renderers can make progress.</li> <li>Use data class for <code>LoadControl</code> methods instead of individual parameters.</li> <li>Add <code>ExoPlayer.isReleased()</code> to check whether <code>Exoplayer.release()</code> has been called.</li> <li>Add <code>ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()</code> to configure the maximum position for which <code>seekToPrevious()</code> seeks to the previous item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1425">#1425</a>).</li> <li>Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1436">#1436</a>).</li> <li>Fix potential <code>IndexOutOfBoundsException</code> caused by extractors reporting additional tracks after the initial preparation step (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1476">#1476</a>).</li> <li><code>Effects</code> in <code>ExoPlayer.setVideoEffect()</code> will receive the timestamps with the renderer offset removed (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1098">#1098</a>).</li> <li>Fix potential <code>IllegalArgumentException</code> when handling player error that happened while reading ahead into another playlist item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1483">#1483</a>).</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>audioConversionProcess</code> and <code>videoConversionProcess</code> to <code>ExportResult</code> indicating how the respective track in the output file was made.</li> <li>Relax trim optimization H.264 level checks.</li> <li>Add support for changing between SDR and HDR input media in a sequence.</li> <li>Add support for composition-level audio effects.</li> <li>Add support for transcoding Ultra HDR images into HDR videos.</li> <li>Fix issue where the <code>DefaultAudioMixer</code> does not output the correct amount of bytes after being reset and reused.</li> <li>Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.</li> <li>When selecting tracks in <code>ExoPlayerAssetLoader</code>, ignore audio channel count constraints as they only apply for playback.</li> <li>Replace <code>androidx.media3.transformer.Muxer</code> interface with <code>androidx.media3.muxer.Muxer</code> and remove <code>androidx.media3.transformer.Muxer</code>.</li> <li>Fix HEIC image loading from content URI schemes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1373">#1373</a>).</li> <li>Adjust audio track duration in <code>AudioGraphInput</code> to improve AV sync.</li> <li>Remove <code>ExportResult.processedInputs</code> field. If you use this field for codec details, then use <code>DefaultDecoderFactory.listener</code> instead. In case of a codec exception, codec details will be available in the <code>ExportException.codecInfo</code>.</li> </ul> </li> <li>Extractors: <ul> <li>MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fgoogle%2FExoPlayer%2Fissues%2F7909">#7909</a>). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1150">#1150</a>) and H.262 HLS streams (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1126">#1126</a>).</li> <li>MP3: Prefer the data size from an <code>Info</code> frame over the size reported by the underlying stream (e.g. file size, or HTTP <code>Content-Length</code> header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1376">#1376</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2FRELEASENOTES.md">androidx.media3:media3-exoplayer's changelog</a>.</em></p> <blockquote> <h3>1.4.0 (2024-07-24)</h3> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fb01c6ffcb3fca3d038476dab5d3bc9c9f2010781"><code>b01c6ff</code></a> Merge branch 'release' into release-1.4.0</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F9fb731669649dc0002649c9fb49fb8410d39b111"><code>9fb7316</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F4e6a643d883c535690233e291b2d72c19c2393b0"><code>4e6a643</code></a> Update media3 version for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F18a1582e8c18a56f2ed9e468a6acb3b9c57aa98a"><code>18a1582</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F1dfab4f73ae29f4ec4ec9751e9e7dcb87a66e049"><code>1dfab4f</code></a> Merge release notes for media3 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F567204e986804ab17abfdb41d909547a03bdf36e"><code>567204e</code></a> Version bump to 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F75dadeaa9e341ebdd3a1095ed3e22f08ab4d5376"><code>75dadea</code></a> Update release notes for 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fd97ec132b9d689334f14eaaa194fea3a19860a63"><code>d97ec13</code></a> Suppress the lint "WrongConstant" error</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F6946f499972d8066721ba2a4d2b972ebaf1b0a6d"><code>6946f49</code></a> Add OptIn annotation to method declaration in demo app file</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F5b60f6c67d28cf8e8c3f827a85e7d53b8bd23d90"><code>5b60f6c</code></a> Fix index out of bounds exception when a <code>Subtitle</code> is empty</li> <li>Additional commits viewable in <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcompare%2F1.3.1...1.4.0">compare view</a></li> </ul> </details> <br /> Updates `androidx.media3:media3-exoplayer-hls` from 1.3.1 to 1.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Freleases">androidx.media3:media3-exoplayer-hls's releases</a>.</em></p> <blockquote> <h2>1.4.0</h2> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2FHEAD%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next source or take other actions.</li> <li>Fix bug where silence skipping at the end of items can trigger a playback exception.</li> <li>Add <code>clear</code> to <code>PreloadMediaSource</code> to discard the preloading period.</li> <li>Add new error code <code>PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED</code> that is used when codec resources are reclaimed for higher priority tasks.</li> <li>Let <code>AdsMediaSource</code> load preroll ads before initial content media preparation completes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1358">#1358</a>).</li> <li>Fix bug where playback moved to <code>STATE_ENDED</code> when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.</li> <li>Rename <code>onTimelineRefreshed()</code> to <code>onSourcePrepared()</code> and <code>onPrepared()</code> to <code>onTracksSelected()</code> in <code>PreloadMediaSource.PreloadControl</code>. Also rename the IntDefs in <code>DefaultPreloadManager.Stage</code> accordingly.</li> <li>Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using <code>experimentalSetDynamicSchedulingEnabled()</code> when setting up your ExoPlayer instance.</li> <li>Add <code>Renderer.getDurationToProgressUs()</code>. A <code>Renderer</code> can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code> then <code>ExoPlayer</code> will call this method when calculating the time to schedule its work task.</li> <li>Add <code>MediaCodecAdapter#OnBufferAvailableListener</code> to alert when input and output buffers are available for use by <code>MediaCodecRenderer</code>. <code>MediaCodecRenderer</code> will signal <code>ExoPlayer</code> when receiving these callbacks and if <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code>, then <code>ExoPlayer</code> will schedule its work loop as renderers can make progress.</li> <li>Use data class for <code>LoadControl</code> methods instead of individual parameters.</li> <li>Add <code>ExoPlayer.isReleased()</code> to check whether <code>Exoplayer.release()</code> has been called.</li> <li>Add <code>ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()</code> to configure the maximum position for which <code>seekToPrevious()</code> seeks to the previous item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1425">#1425</a>).</li> <li>Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1436">#1436</a>).</li> <li>Fix potential <code>IndexOutOfBoundsException</code> caused by extractors reporting additional tracks after the initial preparation step (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1476">#1476</a>).</li> <li><code>Effects</code> in <code>ExoPlayer.setVideoEffect()</code> will receive the timestamps with the renderer offset removed (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1098">#1098</a>).</li> <li>Fix potential <code>IllegalArgumentException</code> when handling player error that happened while reading ahead into another playlist item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1483">#1483</a>).</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>audioConversionProcess</code> and <code>videoConversionProcess</code> to <code>ExportResult</code> indicating how the respective track in the output file was made.</li> <li>Relax trim optimization H.264 level checks.</li> <li>Add support for changing between SDR and HDR input media in a sequence.</li> <li>Add support for composition-level audio effects.</li> <li>Add support for transcoding Ultra HDR images into HDR videos.</li> <li>Fix issue where the <code>DefaultAudioMixer</code> does not output the correct amount of bytes after being reset and reused.</li> <li>Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.</li> <li>When selecting tracks in <code>ExoPlayerAssetLoader</code>, ignore audio channel count constraints as they only apply for playback.</li> <li>Replace <code>androidx.media3.transformer.Muxer</code> interface with <code>androidx.media3.muxer.Muxer</code> and remove <code>androidx.media3.transformer.Muxer</code>.</li> <li>Fix HEIC image loading from content URI schemes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1373">#1373</a>).</li> <li>Adjust audio track duration in <code>AudioGraphInput</code> to improve AV sync.</li> <li>Remove <code>ExportResult.processedInputs</code> field. If you use this field for codec details, then use <code>DefaultDecoderFactory.listener</code> instead. In case of a codec exception, codec details will be available in the <code>ExportException.codecInfo</code>.</li> </ul> </li> <li>Extractors: <ul> <li>MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fgoogle%2FExoPlayer%2Fissues%2F7909">#7909</a>). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1150">#1150</a>) and H.262 HLS streams (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1126">#1126</a>).</li> <li>MP3: Prefer the data size from an <code>Info</code> frame over the size reported by the underlying stream (e.g. file size, or HTTP <code>Content-Length</code> header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1376">#1376</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2FRELEASENOTES.md">androidx.media3:media3-exoplayer-hls's changelog</a>.</em></p> <blockquote> <h3>1.4.0 (2024-07-24)</h3> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fb01c6ffcb3fca3d038476dab5d3bc9c9f2010781"><code>b01c6ff</code></a> Merge branch 'release' into release-1.4.0</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F9fb731669649dc0002649c9fb49fb8410d39b111"><code>9fb7316</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F4e6a643d883c535690233e291b2d72c19c2393b0"><code>4e6a643</code></a> Update media3 version for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F18a1582e8c18a56f2ed9e468a6acb3b9c57aa98a"><code>18a1582</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F1dfab4f73ae29f4ec4ec9751e9e7dcb87a66e049"><code>1dfab4f</code></a> Merge release notes for media3 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F567204e986804ab17abfdb41d909547a03bdf36e"><code>567204e</code></a> Version bump to 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F75dadeaa9e341ebdd3a1095ed3e22f08ab4d5376"><code>75dadea</code></a> Update release notes for 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fd97ec132b9d689334f14eaaa194fea3a19860a63"><code>d97ec13</code></a> Suppress the lint "WrongConstant" error</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F6946f499972d8066721ba2a4d2b972ebaf1b0a6d"><code>6946f49</code></a> Add OptIn annotation to method declaration in demo app file</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F5b60f6c67d28cf8e8c3f827a85e7d53b8bd23d90"><code>5b60f6c</code></a> Fix index out of bounds exception when a <code>Subtitle</code> is empty</li> <li>Additional commits viewable in <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcompare%2F1.3.1...1.4.0">compare view</a></li> </ul> </details> <br /> Updates `androidx.media3:media3-exoplayer-dash` from 1.3.1 to 1.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Freleases">androidx.media3:media3-exoplayer-dash's releases</a>.</em></p> <blockquote> <h2>1.4.0</h2> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2FHEAD%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next source or take other actions.</li> <li>Fix bug where silence skipping at the end of items can trigger a playback exception.</li> <li>Add <code>clear</code> to <code>PreloadMediaSource</code> to discard the preloading period.</li> <li>Add new error code <code>PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED</code> that is used when codec resources are reclaimed for higher priority tasks.</li> <li>Let <code>AdsMediaSource</code> load preroll ads before initial content media preparation completes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1358">#1358</a>).</li> <li>Fix bug where playback moved to <code>STATE_ENDED</code> when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.</li> <li>Rename <code>onTimelineRefreshed()</code> to <code>onSourcePrepared()</code> and <code>onPrepared()</code> to <code>onTracksSelected()</code> in <code>PreloadMediaSource.PreloadControl</code>. Also rename the IntDefs in <code>DefaultPreloadManager.Stage</code> accordingly.</li> <li>Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using <code>experimentalSetDynamicSchedulingEnabled()</code> when setting up your ExoPlayer instance.</li> <li>Add <code>Renderer.getDurationToProgressUs()</code>. A <code>Renderer</code> can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code> then <code>ExoPlayer</code> will call this method when calculating the time to schedule its work task.</li> <li>Add <code>MediaCodecAdapter#OnBufferAvailableListener</code> to alert when input and output buffers are available for use by <code>MediaCodecRenderer</code>. <code>MediaCodecRenderer</code> will signal <code>ExoPlayer</code> when receiving these callbacks and if <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code>, then <code>ExoPlayer</code> will schedule its work loop as renderers can make progress.</li> <li>Use data class for <code>LoadControl</code> methods instead of individual parameters.</li> <li>Add <code>ExoPlayer.isReleased()</code> to check whether <code>Exoplayer.release()</code> has been called.</li> <li>Add <code>ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()</code> to configure the maximum position for which <code>seekToPrevious()</code> seeks to the previous item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1425">#1425</a>).</li> <li>Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1436">#1436</a>).</li> <li>Fix potential <code>IndexOutOfBoundsException</code> caused by extractors reporting additional tracks after the initial preparation step (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1476">#1476</a>).</li> <li><code>Effects</code> in <code>ExoPlayer.setVideoEffect()</code> will receive the timestamps with the renderer offset removed (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1098">#1098</a>).</li> <li>Fix potential <code>IllegalArgumentException</code> when handling player error that happened while reading ahead into another playlist item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1483">#1483</a>).</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>audioConversionProcess</code> and <code>videoConversionProcess</code> to <code>ExportResult</code> indicating how the respective track in the output file was made.</li> <li>Relax trim optimization H.264 level checks.</li> <li>Add support for changing between SDR and HDR input media in a sequence.</li> <li>Add support for composition-level audio effects.</li> <li>Add support for transcoding Ultra HDR images into HDR videos.</li> <li>Fix issue where the <code>DefaultAudioMixer</code> does not output the correct amount of bytes after being reset and reused.</li> <li>Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.</li> <li>When selecting tracks in <code>ExoPlayerAssetLoader</code>, ignore audio channel count constraints as they only apply for playback.</li> <li>Replace <code>androidx.media3.transformer.Muxer</code> interface with <code>androidx.media3.muxer.Muxer</code> and remove <code>androidx.media3.transformer.Muxer</code>.</li> <li>Fix HEIC image loading from content URI schemes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1373">#1373</a>).</li> <li>Adjust audio track duration in <code>AudioGraphInput</code> to improve AV sync.</li> <li>Remove <code>ExportResult.processedInputs</code> field. If you use this field for codec details, then use <code>DefaultDecoderFactory.listener</code> instead. In case of a codec exception, codec details will be available in the <code>ExportException.codecInfo</code>.</li> </ul> </li> <li>Extractors: <ul> <li>MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fgoogle%2FExoPlayer%2Fissues%2F7909">#7909</a>). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1150">#1150</a>) and H.262 HLS streams (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1126">#1126</a>).</li> <li>MP3: Prefer the data size from an <code>Info</code> frame over the size reported by the underlying stream (e.g. file size, or HTTP <code>Content-Length</code> header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1376">#1376</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2FRELEASENOTES.md">androidx.media3:media3-exoplayer-dash's changelog</a>.</em></p> <blockquote> <h3>1.4.0 (2024-07-24)</h3> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fb01c6ffcb3fca3d038476dab5d3bc9c9f2010781"><code>b01c6ff</code></a> Merge branch 'release' into release-1.4.0</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F9fb731669649dc0002649c9fb49fb8410d39b111"><code>9fb7316</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F4e6a643d883c535690233e291b2d72c19c2393b0"><code>4e6a643</code></a> Update media3 version for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F18a1582e8c18a56f2ed9e468a6acb3b9c57aa98a"><code>18a1582</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F1dfab4f73ae29f4ec4ec9751e9e7dcb87a66e049"><code>1dfab4f</code></a> Merge release notes for media3 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F567204e986804ab17abfdb41d909547a03bdf36e"><code>567204e</code></a> Version bump to 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F75dadeaa9e341ebdd3a1095ed3e22f08ab4d5376"><code>75dadea</code></a> Update release notes for 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fd97ec132b9d689334f14eaaa194fea3a19860a63"><code>d97ec13</code></a> Suppress the lint "WrongConstant" error</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F6946f499972d8066721ba2a4d2b972ebaf1b0a6d"><code>6946f49</code></a> Add OptIn annotation to method declaration in demo app file</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F5b60f6c67d28cf8e8c3f827a85e7d53b8bd23d90"><code>5b60f6c</code></a> Fix index out of bounds exception when a <code>Subtitle</code> is empty</li> <li>Additional commits viewable in <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcompare%2F1.3.1...1.4.0">compare view</a></li> </ul> </details> <br /> Updates `androidx.media3:media3-exoplayer-smoothstreaming` from 1.3.1 to 1.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Freleases">androidx.media3:media3-exoplayer-smoothstreaming's releases</a>.</em></p> <blockquote> <h2>1.4.0</h2> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2FHEAD%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next source or take other actions.</li> <li>Fix bug where silence skipping at the end of items can trigger a playback exception.</li> <li>Add <code>clear</code> to <code>PreloadMediaSource</code> to discard the preloading period.</li> <li>Add new error code <code>PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED</code> that is used when codec resources are reclaimed for higher priority tasks.</li> <li>Let <code>AdsMediaSource</code> load preroll ads before initial content media preparation completes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1358">#1358</a>).</li> <li>Fix bug where playback moved to <code>STATE_ENDED</code> when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest.</li> <li>Rename <code>onTimelineRefreshed()</code> to <code>onSourcePrepared()</code> and <code>onPrepared()</code> to <code>onTracksSelected()</code> in <code>PreloadMediaSource.PreloadControl</code>. Also rename the IntDefs in <code>DefaultPreloadManager.Stage</code> accordingly.</li> <li>Add experimental support for dynamic scheduling to better align work with CPU wake-cycles and delay waking up to when renderers can progress. You can enable this using <code>experimentalSetDynamicSchedulingEnabled()</code> when setting up your ExoPlayer instance.</li> <li>Add <code>Renderer.getDurationToProgressUs()</code>. A <code>Renderer</code> can implement this method to return to ExoPlayer the duration that playback must advance for the renderer to progress. If <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code> then <code>ExoPlayer</code> will call this method when calculating the time to schedule its work task.</li> <li>Add <code>MediaCodecAdapter#OnBufferAvailableListener</code> to alert when input and output buffers are available for use by <code>MediaCodecRenderer</code>. <code>MediaCodecRenderer</code> will signal <code>ExoPlayer</code> when receiving these callbacks and if <code>ExoPlayer</code> is set with <code>experimentalSetDynamicSchedulingEnabled()</code>, then <code>ExoPlayer</code> will schedule its work loop as renderers can make progress.</li> <li>Use data class for <code>LoadControl</code> methods instead of individual parameters.</li> <li>Add <code>ExoPlayer.isReleased()</code> to check whether <code>Exoplayer.release()</code> has been called.</li> <li>Add <code>ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()</code> to configure the maximum position for which <code>seekToPrevious()</code> seeks to the previous item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1425">#1425</a>).</li> <li>Fix some audio focus inconsistencies, e.g. not reporting full or transient focus loss while the player is paused (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1436">#1436</a>).</li> <li>Fix potential <code>IndexOutOfBoundsException</code> caused by extractors reporting additional tracks after the initial preparation step (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1476">#1476</a>).</li> <li><code>Effects</code> in <code>ExoPlayer.setVideoEffect()</code> will receive the timestamps with the renderer offset removed (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1098">#1098</a>).</li> <li>Fix potential <code>IllegalArgumentException</code> when handling player error that happened while reading ahead into another playlist item (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1483">#1483</a>).</li> </ul> </li> <li>Transformer: <ul> <li>Add <code>audioConversionProcess</code> and <code>videoConversionProcess</code> to <code>ExportResult</code> indicating how the respective track in the output file was made.</li> <li>Relax trim optimization H.264 level checks.</li> <li>Add support for changing between SDR and HDR input media in a sequence.</li> <li>Add support for composition-level audio effects.</li> <li>Add support for transcoding Ultra HDR images into HDR videos.</li> <li>Fix issue where the <code>DefaultAudioMixer</code> does not output the correct amount of bytes after being reset and reused.</li> <li>Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input.</li> <li>When selecting tracks in <code>ExoPlayerAssetLoader</code>, ignore audio channel count constraints as they only apply for playback.</li> <li>Replace <code>androidx.media3.transformer.Muxer</code> interface with <code>androidx.media3.muxer.Muxer</code> and remove <code>androidx.media3.transformer.Muxer</code>.</li> <li>Fix HEIC image loading from content URI schemes (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1373">#1373</a>).</li> <li>Adjust audio track duration in <code>AudioGraphInput</code> to improve AV sync.</li> <li>Remove <code>ExportResult.processedInputs</code> field. If you use this field for codec details, then use <code>DefaultDecoderFactory.listener</code> instead. In case of a codec exception, codec details will be available in the <code>ExportException.codecInfo</code>.</li> </ul> </li> <li>Extractors: <ul> <li>MPEG-TS: Roll forward the change ensuring the last frame is rendered by passing the last access unit of a stream to the sample queue (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fgoogle%2FExoPlayer%2Fissues%2F7909">#7909</a>). Incorporating fixes to resolve the issues that emerged in I-frame only HLS streams(<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1150">#1150</a>) and H.262 HLS streams (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1126">#1126</a>).</li> <li>MP3: Prefer the data size from an <code>Info</code> frame over the size reported by the underlying stream (e.g. file size, or HTTP <code>Content-Length</code> header). This helps to exclude non-playable trailer data (e.g. album artwork) from constant bitrate seeking calculations, making seeks more accurate (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1376">#1376</a>).</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2FRELEASENOTES.md">androidx.media3:media3-exoplayer-smoothstreaming's changelog</a>.</em></p> <blockquote> <h3>1.4.0 (2024-07-24)</h3> <p>This release includes the following changes since the <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fblob%2Frelease%2F%23131-2024-04-11">1.3.1 release</a>:</p> <ul> <li>Common Library: <ul> <li>Forward presumed no-op seek calls to the protected <code>BasePlayer.seekTo()</code> and <code>SimpleBasePlayer.handleSeek()</code> methods instead of ignoring them. If you are implementing these methods in a custom player, you may need to handle these additional calls with <code>mediaItemIndex == C.INDEX_UNSET</code>.</li> <li>Remove compile dependency on enhanced Java 8 desugaring (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1312">#1312</a>).</li> <li>Ensure the duration passed to <code>MediaItem.Builder.setImageDurationMs()</code> is ignored for a non-image <code>MediaItem</code> (as documented).</li> <li>Add <code>Format.customData</code> to store app-provided custom information about <code>Format</code> instances.</li> </ul> </li> <li>ExoPlayer: <ul> <li>Add <code>BasePreloadManager</code> which coordinates the preloading for multiple sources based on the priorities defined by their <code>rankingData</code>. Customization is possible by extending this class. Add <code>DefaultPreloadManager</code> which uses <code>PreloadMediaSource</code> to preload media samples of the sources into memory, and uses an integer <code>rankingData</code> that indicates the index of an item on the UI.</li> <li>Add <code>PlayerId</code> to most methods of <code>LoadControl</code> to enable <code>LoadControl</code> implementations to support multiple players.</li> <li>Remove <code>Buffer.isDecodeOnly()</code> and <code>C.BUFFER_FLAG_DECODE_ONLY</code>. There is no need to set this flag as renderers and decoders will decide to skip buffers based on timestamp. Custom <code>Renderer</code> implementations should check if the buffer time is at least <code>BaseRenderer.getLastResetPositionUs()</code> to decide whether a sample should be shown. Custom <code>SimpleDecoder</code> implementations can check <code>isAtLeastOutputStartTimeUs()</code> if needed or mark other buffers with <code>DecoderOutputBuffer.shouldBeSkipped</code> to skip them.</li> <li>Allow a null value to be returned by <code>TargetPreloadStatusControl.getTargetPreloadStatus(T)</code> to indicate not to preload a <code>MediaSource</code> with the given <code>rankingData</code>.</li> <li>Add <code>remove(MediaSource)</code> to <code>BasePreloadManager</code>.</li> <li>Add <code>reset()</code> to <code>BasePreloadManager</code> to release all the holding sources while keep the preload manager instance.</li> <li>Add <code>ExoPlayer.setPriority()</code> (and <code>Builder.setPriority()</code>) to define the priority value used in <code>PriorityTaskManager</code> and for MediaCodec importance from API 35.</li> <li>Fix issue with updating the last rebuffer time which resulted in incorrect <code>bs</code> (buffer starvation) key in CMCD (<a href="/api/browser/proxy?url=https%3A%2F%2Fredirect.github.com%2Fandroidx%2Fmedia%2Fissues%2F1124">#1124</a>).</li> <li>Add <code>PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)</code> to indicate that the source has loaded to the end. This allows the <code>DefaultPreloadManager</code> and the custom <code>PreloadMediaSource.PreloadControl</code> implementations to preload the next</li> </ul> </li> </ul> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fb01c6ffcb3fca3d038476dab5d3bc9c9f2010781"><code>b01c6ff</code></a> Merge branch 'release' into release-1.4.0</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F9fb731669649dc0002649c9fb49fb8410d39b111"><code>9fb7316</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F4e6a643d883c535690233e291b2d72c19c2393b0"><code>4e6a643</code></a> Update media3 version for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F18a1582e8c18a56f2ed9e468a6acb3b9c57aa98a"><code>18a1582</code></a> Fix the release notes for 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F1dfab4f73ae29f4ec4ec9751e9e7dcb87a66e049"><code>1dfab4f</code></a> Merge release notes for media3 1.4.0 stable release</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F567204e986804ab17abfdb41d909547a03bdf36e"><code>567204e</code></a> Version bump to 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F75dadeaa9e341ebdd3a1095ed3e22f08ab4d5376"><code>75dadea</code></a> Update release notes for 1.4.0-rc01</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2Fd97ec132b9d689334f14eaaa194fea3a19860a63"><code>d97ec13</code></a> Suppress the lint "WrongConstant" error</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F6946f499972d8066721ba2a4d2b972ebaf1b0a6d"><code>6946f49</code></a> Add OptIn annotation to method declaration in demo app file</li> <li><a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcommit%2F5b60f6c67d28cf8e8c3f827a85e7d53b8bd23d90"><code>5b60f6c</code></a> Fix index out of bounds exception when a <code>Subtitle</code> is empty</li> <li>Additional commits viewable in <a href="/api/browser/proxy?url=https%3A%2F%2Fgithub.com%2Fandroidx%2Fmedia%2Fcompare%2F1.3.1...1.4.0">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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps
exoplayer_versionfrom 1.3.1 to 1.4.0.Updates
androidx.media3:media3-exoplayerfrom 1.3.1 to 1.4.0Release notes
Sourced from androidx.media3:media3-exoplayer's releases.
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer's changelog.
... (truncated)
Commits
b01c6ffMerge branch 'release' into release-1.4.09fb7316Fix the release notes for 1.4.0 stable release4e6a643Update media3 version for 1.4.0 stable release18a1582Fix the release notes for 1.4.0 stable release1dfab4fMerge release notes for media3 1.4.0 stable release567204eVersion bump to 1.4.0-rc0175dadeaUpdate release notes for 1.4.0-rc01d97ec13Suppress the lint "WrongConstant" error6946f49Add OptIn annotation to method declaration in demo app file5b60f6cFix index out of bounds exception when aSubtitleis emptyUpdates
androidx.media3:media3-exoplayer-hlsfrom 1.3.1 to 1.4.0Release notes
Sourced from androidx.media3:media3-exoplayer-hls's releases.
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer-hls's changelog.
... (truncated)
Commits
b01c6ffMerge branch 'release' into release-1.4.09fb7316Fix the release notes for 1.4.0 stable release4e6a643Update media3 version for 1.4.0 stable release18a1582Fix the release notes for 1.4.0 stable release1dfab4fMerge release notes for media3 1.4.0 stable release567204eVersion bump to 1.4.0-rc0175dadeaUpdate release notes for 1.4.0-rc01d97ec13Suppress the lint "WrongConstant" error6946f49Add OptIn annotation to method declaration in demo app file5b60f6cFix index out of bounds exception when aSubtitleis emptyUpdates
androidx.media3:media3-exoplayer-dashfrom 1.3.1 to 1.4.0Release notes
Sourced from androidx.media3:media3-exoplayer-dash's releases.
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer-dash's changelog.
... (truncated)
Commits
b01c6ffMerge branch 'release' into release-1.4.09fb7316Fix the release notes for 1.4.0 stable release4e6a643Update media3 version for 1.4.0 stable release18a1582Fix the release notes for 1.4.0 stable release1dfab4fMerge release notes for media3 1.4.0 stable release567204eVersion bump to 1.4.0-rc0175dadeaUpdate release notes for 1.4.0-rc01d97ec13Suppress the lint "WrongConstant" error6946f49Add OptIn annotation to method declaration in demo app file5b60f6cFix index out of bounds exception when aSubtitleis emptyUpdates
androidx.media3:media3-exoplayer-smoothstreamingfrom 1.3.1 to 1.4.0Release notes
Sourced from androidx.media3:media3-exoplayer-smoothstreaming's releases.
... (truncated)
Changelog
Sourced from androidx.media3:media3-exoplayer-smoothstreaming's changelog.
... (truncated)
Commits
b01c6ffMerge branch 'release' into release-1.4.09fb7316Fix the release notes for 1.4.0 stable release4e6a643Update media3 version for 1.4.0 stable release18a1582Fix the release notes for 1.4.0 stable release1dfab4fMerge release notes for media3 1.4.0 stable release567204eVersion bump to 1.4.0-rc0175dadeaUpdate release notes for 1.4.0-rc01d97ec13Suppress the lint "WrongConstant" error6946f49Add OptIn annotation to method declaration in demo app file5b60f6cFix index out of bounds exception when aSubtitleis emptyDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill 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 versionwill 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 dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)