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.
This PR contains the following updates:
8.8
->8.10
v3
->v4
2.51.1
->2.52
2.51.1
->2.52
2.51.1
->2.52
1.2.0
->1.2.1
3.6.0
->3.6.1
1.6.0
->1.6.1
1.6.0
->1.6.2
1.4.2
->1.4.4
4.12.2
->4.13
1.6.0
->1.6.1
2.6.0
->2.7.0
2.9.0
->2.9.1
2.7.7
->2.8.0
1.2.0
->1.2.1
2.8.2
->2.8.5
3.6.0
->3.6.1
2.8.2
->2.8.5
2.8.2
->2.8.5
2.8.2
->2.8.5
3.6.0
->3.6.1
1.9.0
->1.9.2
1.9.0
->1.9.2
2024.06.00
->2024.09.00
0.34.0
->0.36.0
0.34.0
->0.36.0
2.9.0
->2.9.1
2.7.7
->2.8.0
2.7.7
->2.8.0
1.8.0
->1.8.3
2.8.2
->2.8.5
1.2.1
->1.3.0
2.51.1
->2.52
2.7.7
->2.8.0
8.5.0
->8.6.0
8.5.0
->8.6.0
1.2.1
->1.3.0
1.2.4
->1.3.0
1.2.4
->1.3.0
2.8.2
->2.8.5
1.3.1
->1.4.1
1.3.1
->1.4.1
1.6.8
->1.7.0
2.0.4
->2.1.2
8.5.0
->8.6.0
Release Notes
gradle/gradle (gradle)
v8.10
Compare Source
v8.9
Compare Source
gradle/actions (gradle/actions)
v4
Compare Source
google/truth (com.google.truth:truth)
v1.4.4
Compare Source
@NullMarked
annotation from individual classes up to the package to avoid a warning under--release 8
. (e107aea
)matches
to conditionally suggest usingcontainsMatch
. (7e9fc7a
)v1.4.3
: 1.4.3ee680cb
)Subject.Factory
methods for Java 8 types. We won't remove them, but you can simplify your code by migrating off them: Just replaceassertAbout(foos()).that(foo)
withassertThat(foo)
(orabout(foos()).that(foo)
withthat(foo)
). (59e7a50
)coil-kt/coil (io.coil-kt:coil-compose)
v2.7.0
Compare Source
ImageLoader.execute
,AsyncImage
,SubcomposeAsyncImage
, andrememberAsyncImagePainter
. (#2205)google/accompanist (com.google.accompanist:accompanist-systemuicontroller)
v0.36.0
: 🌈What’s Changed
androidx/media (androidx.media3:media3-ui)
v1.4.1
Compare Source
This release includes the following changes since the
1.4.0 release:
PreloadMediaSource
(#1568).
(#1571).
Searched too many bytes
error by correctly ignoring trailingnon-MP3 data based on the length field in an
Info
frame(#1480).
tts:fontSize
values to ensure theyare correctly inherited from parent nodes with percentage
tts:fontSize
values.
IndexOutOfBoundsException
inLegacySubtitleUtil
due toincorrectly handling the case of the requested output start time being
greater than or equal to the final event time in the
Subtitle
(#1516).
android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE
error on API 31+ devicesplaying L1 Widevine content. This error is caused by an incomplete
implementation of the framework
MediaDrm.requiresSecureDecoder
method (#1603).
release()
method toGlObjectsProvider
.KEYCODE_HEADSETHOOK
into a 'seek to next'action, as
documented
(#1493).
KEYCODE_HEADSETHOOK
as a 'play' command inMediaButtonReceiver
when deciding whether to ignore it to avoid aForegroundServiceDidNotStartInTimeException
(#1581).
(#1087).
v1.4.0
Compare Source
This release includes the following changes since the
1.3.1 release:
BasePlayer.seekTo()
and
SimpleBasePlayer.handleSeek()
methods instead of ignoring them. Ifyou are implementing these methods in a custom player, you may need to
handle these additional calls with
mediaItemIndex == C.INDEX_UNSET
.(#1312).
MediaItem.Builder.setImageDurationMs()
is ignored for a non-image
MediaItem
(as documented).Format.customData
to store app-provided custom information aboutFormat
instances.BasePreloadManager
which coordinates the preloading for multiplesources based on the priorities defined by their
rankingData
.Customization is possible by extending this class. Add
DefaultPreloadManager
which usesPreloadMediaSource
to preload mediasamples of the sources into memory, and uses an integer
rankingData
that indicates the index of an item on the UI.
PlayerId
to most methods ofLoadControl
to enableLoadControl
implementations to support multiple players.
Buffer.isDecodeOnly()
andC.BUFFER_FLAG_DECODE_ONLY
. There isno need to set this flag as renderers and decoders will decide to skip
buffers based on timestamp. Custom
Renderer
implementations shouldcheck if the buffer time is at least
BaseRenderer.getLastResetPositionUs()
to decide whether a sampleshould be shown. Custom
SimpleDecoder
implementations can checkisAtLeastOutputStartTimeUs()
if needed or mark other buffers withDecoderOutputBuffer.shouldBeSkipped
to skip them.TargetPreloadStatusControl.getTargetPreloadStatus(T)
to indicate notto preload a
MediaSource
with the givenrankingData
.remove(MediaSource)
toBasePreloadManager
.reset()
toBasePreloadManager
to release all the holding sourceswhile keep the preload manager instance.
ExoPlayer.setPriority()
(andBuilder.setPriority()
) to definethe priority value used in
PriorityTaskManager
and for MediaCodecimportance from API 35.
incorrect
bs
(buffer starvation) key in CMCD(#1124).
PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)
to indicate that the source has loaded to the end. This allows the
DefaultPreloadManager
and the customPreloadMediaSource.PreloadControl
implementations to preload the nextsource or take other actions.
playback exception.
clear
toPreloadMediaSource
to discard the preloading period.PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED
that is usedwhen codec resources are reclaimed for higher priority tasks.
AdsMediaSource
load preroll ads before initial content mediapreparation completes
(#1358).
STATE_ENDED
when re-preparing amulti-period DASH live stream after the original period was already
removed from the manifest.
onTimelineRefreshed()
toonSourcePrepared()
andonPrepared()
toonTracksSelected()
inPreloadMediaSource.PreloadControl
. Also rename the IntDefs inDefaultPreloadManager.Stage
accordingly.with CPU wake-cycles and delay waking up to when renderers can progress.
You can enable this using
experimentalSetDynamicSchedulingEnabled()
when setting up your ExoPlayer instance.
Renderer.getDurationToProgressUs()
. ARenderer
can implementthis method to return to ExoPlayer the duration that playback must
advance for the renderer to progress. If
ExoPlayer
is set withexperimentalSetDynamicSchedulingEnabled()
thenExoPlayer
will callthis method when calculating the time to schedule its work task.
MediaCodecAdapter#OnBufferAvailableListener
to alert when inputand output buffers are available for use by
MediaCodecRenderer
.MediaCodecRenderer
will signalExoPlayer
when receiving thesecallbacks and if
ExoPlayer
is set withexperimentalSetDynamicSchedulingEnabled()
, thenExoPlayer
willschedule its work loop as renderers can make progress.
LoadControl
methods instead of individualparameters.
ExoPlayer.isReleased()
to check whetherExoplayer.release()
hasbeen called.
ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()
to configurethe maximum position for which
seekToPrevious()
seeks to the previousitem (#1425).
transient focus loss while the player is paused
(#1436).
IndexOutOfBoundsException
caused by extractors reportingadditional tracks after the initial preparation step
(#1476).
Effects
inExoPlayer.setVideoEffect()
will receive the timestampswith the renderer offset removed
(#1098).
IllegalArgumentException
when handling player error thathappened while reading ahead into another playlist item
(#1483).
audioConversionProcess
andvideoConversionProcess
toExportResult
indicating how the respective track in the output filewas made.
DefaultAudioMixer
does not output the correctamount of bytes after being reset and reused.
at stereo when handling PCM input.
ExoPlayerAssetLoader
, ignore audio channelcount constraints as they only apply for playback.
androidx.media3.transformer.Muxer
interface withandroidx.media3.muxer.Muxer
and removeandroidx.media3.transformer.Muxer
.(#1373).
AudioGraphInput
to improve AV sync.ExportResult.processedInputs
field. If you use this field forcodec details, then use
DefaultDecoderFactory.listener
instead. Incase of a codec exception, codec details will be available in the
ExportException.codecInfo
.passing the last access unit of a stream to the sample queue
(#7909).
Incorporating fixes to resolve the issues that emerged in I-frame only
HLS streams(#1150) and
H.262 HLS streams
(#1126).
Info
frame over the size reported bythe underlying stream (e.g. file size, or HTTP
Content-Length
header).This helps to exclude non-playable trailer data (e.g. album artwork)
from constant bitrate seeking calculations, making seeks more accurate
(#1376).
Info
frame (if present)to compute an average bitrate for constant bitrate seeking, rather than
extrapolating from the bitrate of the frame after the
Info
frame,which may be artificially small, e.g.
PCUT
frame(#1376).
(#1299).
in
DefaultAudioSink
prior to callingAudioTrack.stop()
so thatAudioTrack.StreamEventCallback#onPresentationEnded
correctlyidentifies when all pending data has been played.
SilenceSkippingAudioProcessor
where transitions betweendifferent audio formats (for example stereo to mono) can cause the
processor to throw an exception
(#1352).
MediaCodecAudioRenderer.getDurationToProgressUs()
so thatExoPlayer will dynamically schedule its main work loop to when the
MediaCodecAudioRenderer can make progress.
Listener.onRenderedFirstFrame()
arrives too early whenswitching surfaces mid-playback.
decoder if needed
(#1389).
mid-playback.
This issue was only introduced in Media3 1.4.0-alpha01.
instead of during rendering (see
ExoPlayer's architecture diagram
for the difference between extraction and rendering).
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false)
and
TextRenderer.experimentalSetLegacyDecodingEnabled(true)
. Seethe
docs on customization
for how to plumb these components into an
ExoPlayer
instance.These methods (and all support for legacy subtitle decoding) will be
removed in a future release.
SubtitleDecoder
implementations need to updatethem to implement
SubtitleParser
instead (andSubtitleParser.Factory
instead ofSubtitleDecoderFactory
).0
as a color index, instead ofa literal color value
(#1367).
rowLock
value. The CEA-708-E S-2023 spec states thatrowLock
andcolumnLock
should both be assumed to be true, regardlessof the values present in the stream (
columnLock
support is notimplemented, so it's effectively assumed to always be false).
1.3.0-alpha01
release notes,but the change was accidentally reverted before the
1.3.0-rc01
release. This is now fixed, so the change is present again.
Configuration
📅 Schedule: Branch creation - "before 4am" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.