fix(deps): update media3 to v1.5.0 #6822
Open
+1
−1
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:
1.4.1
->1.5.0
1.4.1
->1.5.0
1.4.1
->1.5.0
1.4.1
->1.5.0
1.4.1
->1.5.0
1.4.1
->1.5.0
Release Notes
androidx/media (androidx.media3:media3-ui)
v1.5.0
Compare Source
This release includes the following changes since the
1.4.1 release:
ForwardingSimpleBasePlayer
that allows forwarding to anotherplayer with small adjustments while ensuring full consistency and
listener handling
(#1183).
SimpleBasePlayer.State.playlist
bygetPlaylist()
method.SimpleBasePlayer.State.Builder.setPlaylist()
todirectly specify a
Timeline
and currentTracks
andMetadata
instead of building a playlist structure.
minSdk
to 21 (Android Lollipop). This is aligned with allother AndroidX libraries.
androidx.media3:media3-common-ktx
artifact which providesKotlin-specific functionality built on top of the Common library
Player.listen
suspending extension function to spin a coroutine tolisten to
Player.Events
to themedia3-common-ktx
library.@DoNotInline
annotations from manually out-of-lined innerclasses designed to avoid
runtime class verification failures.
Recent versions of R8
now automatically out-of-line calls like these to avoid the runtime
failures (so the manual out-of-lining is no longer required). All Gradle
users of the library must already be a using a version of the Android
Gradle Plugin that uses a version of R8 which does this,
due to
compileSdk = 35
.Users of the library with non-Gradle build systems will need to ensure
their R8-equivalent shrinking/obfuscating step does a similar automatic
out-of-lining process in order to avoid runtime class verification
failures. This change has
already been done in other AndroidX libraries.
MediaCodecRenderer.onProcessedStreamChange()
can now be called forevery media item. Previously it was not called for the first one. Use
MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()
to enable this.
PreloadMediaSource.PreloadControl.onPreloadError
to allowPreloadMediaSource.PreloadControl
implementations to take actions whenerror occurs.
BasePreloadManager.Listener
to propagate preload events to apps.timeout (#1540).
MediaCodecAdapter.Configuration.flags
as the field was alwayszero.
API 35+ (where the device advertises support for this).
Context.getSystemService(Context.AUDIO_SERVICE)
until audio focushandling is enabled. This ensures the blocking call isn't done if audio
focus handling is not enabled
(#1616).
(#1571).
AnalyticsListener.onRendererReadyChanged()
to signal whenindividual renderers allow playback to be ready.
MediaCodec.CryptoException
sometimes being reported as an"unexpected runtime error" when
MediaCodec
is operated in asynchronousmode (default behaviour on API 31+).
bufferedDurationUs
instead ofbufferedPositionUs
withPreloadMediaSource.PreloadControl.onContinueLoadingRequested()
. Alsochanges
DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS
toDefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS
, apps thenneed to pass a value representing a specific duration from the default
start position for which the corresponding media source has to be
preloaded with this IntDef, instead of a position.
ForwardingRenderer
implementation that forwards all method callsto another renderer
(1703).
enable preloading by calling
ExoPlayer.setPreloadConfiguration(PreloadConfiguration)
accordingly.By default preloading is disabled. When opted-in and to not interfere
with playback,
DefaultLoadControl
restricts preloading to start andcontinue only when the player is not loading for playback. Apps can
change this behaviour by implementing
LoadControl.shouldContinuePreloading()
accordingly (like whenoverriding this method in
DefaultLoadControl
). The defaultimplementation of
LoadControl
disables preloading in case an app isusing a custom implementation of
LoadControl
.MediaSourceEventListener.EventDispatcher.dispatchEvent()
toallow invoking events of subclass listeners
(1736).
DefaultPreloadManager.Builder
that builds theDefaultPreloadManager
andExoPlayer
instances with consistentlyshared configurations.
Renderer[]
parameter fromLoadControl.onTracksSelected()
asDefaultLoadControl
implementation can retrieve the stream types fromExoTrackSelection[]
.DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])
and marked method as final to prevent overrides.The new
DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])
should be used instead.
MediaSourceEventListener
events from secondary sources inMergingMediaSource
. This will result in loadstart/error/cancelled/completed events being reported for sideloaded
subtitles (those added with
MediaItem.LocalConfiguration.subtitleConfigurations
), which may appearas duplicate load events emitted from
AnalyticsListener
.Instead the problematic track is disabled and playback of the remaining
tracks continues
(#1722).
invalid subtitle data) and load errors (e.g. HTTP 404) are emitted
via
onLoadError
callbacks.errors are emitted via
onLoadError
callbacks while parse errorsare silently ignored (this is pre-existing behaviour).
with durations that don't match the actual content could cause frame
freezes at the end of the item
(#1698).
SntpClient
to set the max elapsed time since the lastupdate after which the client is re-initialized
(#1794).
SurfaceAssetLoader
, which supports queueing video data toTransformer via a
Surface
.ImageAssetLoader
reports unsupported input viaAssetLoader.onError
instead of throwing an
IllegalStateException
.MediaItem.Builder.setImageDurationMs
mandatory for image export.DefaultTrackSelector
: Prefer object-based audio over channel-basedaudio when other factors are equal.
Mp4Extractor
andFragmentedMp4Extractor
to identify H264samples that are not used as reference by subsequent samples.
AmrExtractor
.(instead of invalid). This means files with non-MP3 data at the end,
with no other metadata to indicate the length of the MP3 bytes, now stop
playback at the end of the MP3 data instead of failing with
ParserException: Searched too many bytes.{contentIsMalformed=true, dataType=1}
(#1563).processing edit lists in MP4 files
(#1659).
mdhd
box in
Mp4Extractor
andFragmentedMp4Extractor
(#1531).
media_time
in MP4 edit lists. Whilesegment_duration
was already correctly scaled using the movietimescale,
media_time
is now properly scaled using the tracktimescale, as specified by the MP4 format standard
(#1792).
endIndices
calculation for MP4 with editlist (#1797).
mdhd
box of MP4 files to handle-1
values (#1819).
h263
box in MP4 files for H.263 video(#1821).
(#1265).
HttpEngineDataSource
to allow use starting at version Sextension 7 instead of API level 34
(#1262).
DataSourceContractTest
: Assert thatDataSource.getUri()
returns theresolved URI (as documented). Where this is different to the requested
URI, tests can indicate this using the new
DataSourceContractTest.TestResource.Builder.setResolvedUri()
method.DataSourceContractTest
: Assert thatDataSource.getUri()
andgetResponseHeaders()
return their 'open' value after a failed call toopen()
(due to a 'not found' resource) and before a subsequentclose()
call.DataSourceContractTest.getNotFoundResources()
allowstest sub-classes to provide multiple 'not found' resources, and to
provide any expected headers too. This allows to distinguish between
HTTP 404 (with headers) and "server not found" (no headers).
present in the media.
time-stretching/pitch-shifting algorithm.
SpeedChangingAudioProcessor
that causes dropped outputframes.
MediaCodecVideoRenderer
avoids decoding samples that are neitherrendered nor used as reference by other samples.
MediaCodecAdapter
may now receive anull
Surface
inconfigure
and calls to a new methoddetachOutputSurface
to remove a previously set
Surface
if the codec supports this(
MediaCodecInfo.detachedSurfaceSupported
).MediaCodecAdapter
supplied pixel aspect ratio values if providedwhen processing
onOutputFormatChanged
(#1371).
secure H264 streams to be marked as unsupported
(#1619).
returning an end-of-stream signal.
VoiceSpan
and populate it forWebVTT voice spans
(#1632).
a 64-bit
long
when represented as microseconds and multiplied by the90,000
MPEG timebase) are displayed(#1763).
(#1820).
are enabled (#1863).
C.TRACK_TYPE_METADATA
type to tracks containing icy orvnd.dvb.ait content.
ExternallyLoadedImageDecoder
for simplified integration withexternal image loading libraries like Glide or Coil.
FileDescriptorDataSource
, a newDataSource
that can be used toread from a
FileDescriptor
(#3757).
DefaultVideoFrameProcessor
workaround for minorSurfaceTexture
scaling.
SurfaceTexture
may include a small scaling that cuts off a1-texel border around the edge of a cropped buffer. This is now handled
such that output is closer to expected.
DefaultVideoFrameProcessor.queueInputBitmap()
. As a result,exporting images to videos with
Transformer
is faster.ArrayIndexOutOfBoundsException
inImaServerSideAdInsertionMediaSource
.result in an
ArrayIndexOutOfBoundsException
when playing past the lastmidroll (#1741).
MediaButtonReceiver.shouldStartForegroundService(Intent)
to allowapps to suppress a play command coming in for playback resumption by
overriding this method. By default, the service is always started and
playback can't be suppressed without the system crashing the service
with a
ForegroundServiceDidNotStartInTimeException
(#1528).
MediaBrowser
beingdispatched to the
MediaSessionCompat.Callback
instead of theMediaBrowserServiceCompat
variant of the method when connected to alegacy service. This prevented the
MediaBrowser
to receive the actualreturn value sent back by the legacy service
(#1474).
IllegalArgumentException
thrown by devices of certainmanufacturers when setting the broadcast receiver for media button
intents (#1730).
was known as
Custom browse actions
with the legacy library withMediaBrowserCompat
. Note that with Media3 command buttons for mediaitems are available for both,
MediaBrowser
andMediaController
. SeeCustom Browse actions of AAOS.
app start a foreground service after requesting
play()
.CommandButton.Builder.setIconUri
to only accept content Uris.MediaBrowserCompat
when connecting to a legacyMediaBrowserCompat
.The service can receive the connection hints passed in as root hints
with the first call to
onGetRoot()
.MediaBrowser
connected to a legacy browser service,didn't receive an error sent by the service after the browser has
subscribed to a
parentid
.connected to a legacy
MediaBrowserService
doesn't request the childrenof a
parentId
twice when subscribing to a parent.PlayerView
-in-Compose-AndroidView
workaround opt-in, due to issueswith XML-based shared transitions. Apps using
PlayerView
insideAndroidView
need to callPlayerView.setEnableComposeSurfaceSyncWorkaround
in order to opt-in(#1237,
#1594).
setFullscreenButtonState
toPlayerView
to allow updates offullscreen button's icon on demand, i.e. out-of-band and not reactively
to a click interaction
(#1590,
#184).
there are app-defined text track selection preferences.
(#1440).
Bad magic number for Bundle
error when playing SmoothStreamingstreams with text tracks
(#1779).
(#1138).
(#1225).
files containing IAMF tracks using the libiamf native library to
synthesize audio.
spatialization together with optional head tracking enabled, but
binaural playback support is currently not available.
(#1685).
enables the sender app to resume playback locally after a disconnection.
DeviceInfo
when aContext
is provided. Thisenables linking the
MediaSession
to aRoutingSession
, which isnecessary for integrating Output Switcher
(#1056).
DataSourceContractTest
now includes tests to verify:read position
is updated.offset
is applied correctly.(#1839).
Player.hasPrevious
,Player.hasPreviousWindow()
.Use
Player.hasPreviousMediaItem()
instead.Player.previous()
method. UsePlayer.seekToPreviousMediaItem()
instead.DrmSessionEventListener.onDrmSessionAcquired
method.DefaultEncoderFactory
constructors. UseDefaultEncoderFactory.Builder
instead.Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), 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.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.