Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Apr 1, 2025

Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs from Renovate will soon appear from 'Mend'. Learn more here.

This PR contains the following updates:

Package Change Age Confidence
androidx.navigation:navigation-compose (source) 2.8.8 -> 2.9.5 age confidence
com.tencent:mmkv 2.1.0 -> 2.2.4 age confidence
androidx.documentfile:documentfile (source) 1.0.1 -> 1.1.0 age confidence
androidx.media3:media3-ui 1.5.1 -> 1.8.0 age confidence
androidx.media3:media3-exoplayer 1.5.1 -> 1.8.0 age confidence
androidx.compose:compose-bom 2025.02.00 -> 2025.09.01 age confidence
androidx.activity:activity-compose (source) 1.10.1 -> 1.11.0 age confidence
androidx.lifecycle:lifecycle-runtime-ktx (source) 2.8.7 -> 2.9.4 age confidence
io.ktor:ktor-serialization-kotlinx-json 3.1.1 -> 3.3.0 age confidence
io.ktor:ktor-client-mock 3.1.1 -> 3.3.0 age confidence
io.ktor:ktor-client-logging 3.1.1 -> 3.3.0 age confidence
io.ktor:ktor-client-core 3.1.1 -> 3.3.0 age confidence
io.ktor:ktor-client-content-negotiation 3.1.1 -> 3.3.0 age confidence
io.ktor:ktor-client-android 3.1.1 -> 3.3.0 age confidence
org.jetbrains.kotlinx:kotlinx-serialization-json 1.8.0 -> 1.9.0 age confidence
org.jetbrains.kotlinx:kotlinx-coroutines-test 1.10.1 -> 1.10.2 age confidence
org.jetbrains.kotlinx:kotlinx-coroutines-core 1.10.1 -> 1.10.2 age confidence
org.jetbrains.kotlin.plugin.serialization (source) 2.1.10 -> 2.2.20 age confidence
androidx.test.espresso:espresso-core 3.6.1 -> 3.7.0 age confidence
androidx.test.ext:junit 1.2.1 -> 1.3.0 age confidence
androidx.core:core-ktx (source) 1.15.0 -> 1.17.0 age confidence
org.jetbrains.kotlin.plugin.compose (source) 2.1.10 -> 2.2.20 age confidence
org.jetbrains.kotlin.android (source) 2.1.10 -> 2.2.20 age confidence
io.insert-koin:koin-logger-slf4j (source) 4.1.0 -> 4.1.1 age confidence
io.insert-koin:koin-test-junit4 (source) 4.1.0 -> 4.1.1 age confidence
io.insert-koin:koin-test (source) 4.1.0 -> 4.1.1 age confidence
io.insert-koin:koin-ktor (source) 4.1.0 -> 4.1.1 age confidence
io.insert-koin:koin-core (source) 4.1.0 -> 4.1.1 age confidence
io.insert-koin:koin-androidx-compose (source) 4.1.0 -> 4.1.1 age confidence
io.coil-kt.coil3:coil-video 3.1.0 -> 3.3.0 age confidence
io.coil-kt.coil3:coil-network-okhttp 3.1.0 -> 3.3.0 age confidence
io.coil-kt.coil3:coil-gif 3.1.0 -> 3.3.0 age confidence
io.coil-kt.coil3:coil-compose 3.1.0 -> 3.3.0 age confidence
com.android.application (source) 8.8.2 -> 8.13.0 age confidence
com.google.accompanist:accompanist-permissions 0.37.2 -> 0.37.3 age confidence

Release Notes

Tencent/MMKV (com.tencent:mmkv)

v2.2.4

This is a hotfix release mainly for iOS/macOS CocoaPods users.

Changes for All platforms
  • Improve the performance of MMBuffer a little bit in some cases.
iOS/macOS
  • Make MMKV and MMKVCore podspec define modules.

v2.2.3

This is a feature release that brings full desktop support to Flutter. It also includes key bug fixes and enhancements for Android and other platforms.

Flutter
  • Added Full Desktop Support: MMKV for Flutter now officially supports Windows, macOS, and Linux.
  • Example App: The example application has been updated to run on all new desktop platforms.
Android
  • Feature: Added MMKVHandler.getNativeLogHandler() to allow native handling of MMKV logs from C++ code, improving performance.
  • Fix: Corrected an integer overflow bug where a native memory address exceeding Long.MAX_VALUE was misinterpreted as a negative number.
  • Fix: Prevented potential memory overflow by ensuring JNI local references are deleted after use.
  • Fix: Fixed an issue where directories for special relative paths were not being created correctly.
  • Enhancement: Improved the thread-safety of the callback handler to prevent crashes.
iOS/macOS
  • Fix: Resolved a build error on Apple platforms that occurred when the MMKV_APPLE flag was not set.
  • Fix: Addressed a naming conflict in the Swift implementation.
Windows
  • Fix: Corrected character encoding issues in the Win32 demo by converting files to UTF-8.

v2.2.2

This is a hot fix version mainly for Android/Linux platforms. It’s highly recommended for v2.2.0~v2.2.1 users.

Changes for All platforms
  • Improve file lock consistency for Mayfly FD MMKV instances.
Android
  • Fix a potential ANR on multi-process mode MMKV init/creation.
POSIX
  • Fix a potential ANR on multi-process mode MMKV init/creation on Linux.
iOS/macOS
  • Retain the callback handler to prevent a potential short-lived callback handler from crashing.
Win32
  • Improve efficiency on MMKV instance init/creation.

v2.2.1

Changes for All platforms
  • Add importFrom().
Android
  • Fix a bug on initialization.

v2.2.0

We introduce the Mayfly FD (short-lived file descriptor) enhancement, reducing MMKV's fd footprint by half and more. For a single-process mode MMKV instance, the fd footprint is reduced to zero (except Android/OHOS, details below). For a multi-process mode MMKV instance, the fd footprint is reduced by half, for we still need a long-lived fd to inter-process lock the shared memory.

Changes for All platforms
  • Add Mayfly FD (short-lived file descriptor) enhancement.
  • Improve multi-process access efficiency by about 20%.
  • Add checkExist() to check if a MMKV instance exists on disk.
  • Drop deprecated armv7 AES hardware acceleration.
Android
  • Reduce the fd footprint by half. For a single-process mode MMKV instance, we still need a long-lived fd to support the process-mode checker and legacy name upgrading. In the far future, when all legacy names have been upgraded, we might drop the long-lived fd like other platforms.
  • Upgrade Android compileSdk/targetSdk to 35, NDK to 28.1, Java to 11, Gradle to 8.11.1, and AGP to 8.9.2.
HarmonyOS NEXT
  • Reduce the fd footprint by half. For a single-process mode MMKV instance, we still need a long-lived fd to support the legacy name upgrading. In the far future, when all legacy names have been upgraded, we might drop the long-lived fd like other platforms.
  • Drop checkProcessMode(), it’s never been used.
  • Improve obfuscation configuration with relative path.
iOS
  • Add +mmkvGroupPath to get the group folder for MMKV multi-process storage.
Flutter
  • Add isFileValid().
  • Add groupPath() on iOS.
  • Fix checkContentChangedByOuterProcess() not working bug.
androidx/media (androidx.media3:media3-ui)

v1.8.0

Compare Source

This release includes the following changes since the
1.7.1 release:

  • Common Library:
    • Add support for replacing the player in ForwardingSimpleBasePlayer.
  • ExoPlayer:
    • Add getter for shuffle mode to the ExoPlayer interface
      (#​2522).
    • More clearly throw an exception if DefaultAudioSink is accessed from
      multiple threads. If this happens due to a call to
      RendererCapabilities.getFormatSupport outside of the player, make sure
      to call this method on the same thread as ExoPlayer's playback thread or
      use a different instance than the one used for playback
      (#​1191).
    • Fix bug where non-stereo audio formats on TVs may be marked as
      unsupported by DefaultTrackSelector.
    • Ensure the last frame is correctly rendered when using MediaCodec's
      DECODE_ONLY flag (which is enabled by default in scrubbing mode).
    • Add support for using the virtual device ID from the Context passed to
      ExoPlayer.Builder.
    • Enable dynamic scheduling by default in scrubbing mode.
    • Avoid unnecessary reload of a source when seeking to the end of an item.
    • Use MediaCodec.BUFFER_FLAG_DECODE_ONLY by default in scrubbing mode.
    • Throw IllegalStateException when PreloadMediaSource is played by an
      ExoPlayer with a playback thread that is different than the preload
      thread (#​2495).
    • Add cloneAndMove to ShuffleMode with a default implementation
      (#​2226).
    • Change default behavior of Renderer.getMinDurationToProgressUs to
      return a larger value if no call to render is required.
    • Fix bug where internal scheduling delayed last frame when seeking to the
      end while paused. For now, the bug fix only takes effect if
      ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabled is enabled.
    • Add ExoPlayer.setScrubbingModeEnabled(boolean) method. This optimizes
      the player for many frequent seeks (for example, from a user dragging a
      scrubber bar around). The behavior of scrubbing mode can be customized
      with setScrubbingModeParameters(..) on ExoPlayer and
      ExoPlayer.Builder.
    • Allow customizing fractional seek tolerance in scrubbing mode.
    • Increase codec operating rate in scrubbing mode.
    • Fix bug where prepare errors in the content of AdsMediaSource may be
      never reported (#​2337).
    • Fix memory leak in MergingMediaSource, for example used when
      sideloading subtitles
      (#​2338).
    • Allow CmcdConfiguration.Factory to return null to disable CMCD
      logging for specific media items
      (#​2386).
    • Increase default image buffer size from 128kB (copy-paste mistake from
      text tracks) to 26MB, which is large enough for 50MP Ultra HDR images
      (#​2417).
    • Add PreCacheHelper that allows apps to pre-cache a single media with
      specified start position and duration.
    • Add support of preloading from specified position in
      DefaultPreloadManager.
  • Transformer:
    • Add CodecDbLite that enables chipset specific optimizations of video
      encoding settings.
    • Add setEnableCodecDbLite flag to the DefaultEncoderFactory to enable
      CodecDB Lite settings optimization. By default, this flag is set to
      false.
    • Filling an initial gap (added via addGap()) with silent audio now
      requires explicitly setting experimentalSetForceAudioTrack(true) in
      EditedMediaItemSequence.Builder. If the gap is in the middle of the
      sequence, then this flag is not required.
    • Move Muxer interface from media3-transformer to media3-muxer.
    • Make setting MediaItem.Builder().setImageDuration(long) mandatory to
      import a media item as an image.
    • Add
      Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean)
      which includes an MP4 edit list when trimming to instruct players to
      ignore samples between the key frame before the trim start point, and
      the trim start point.
    • Update Composition Demo app to use Kotlin and Jetpack Compose, and add a
      custom VideoCompositorSettings to arrange sequences into a 2x2 or PiP
      layout.
  • Extractors:
    • Parse metadata from fragmented MP4 files
      (#​2084).
    • JPEG: Support motion photos that don't have an Exif segment at the start
      (#​2552).
    • Add support for seeking in fragmented MP4 with multiple sidx atoms.
      This behavior can be enabled using the FLAG_MERGE_FRAGMENTED_SIDX flag
      on FragmentedMp4Extractor
      (#​9373).
    • Ignore empty seek tables in FLAC files (including those containing only
      placeholder seek points), and fall back to binary search seeking if the
      duration of the file is known
      (#​2327).
    • Fix parsing of H.265 SEI units to fully skip unrecognized SEI types
      (#​2456).
    • Update WavExtractor to use the header extension's SubFormat data for
      the audio format when parsing a WAVE_FORMAT_EXTENSIBLE type file.
    • MP4: Add support for ipcm and fpcm boxes defining raw PCM audio
      tracks (64-bit floating point PCM is not supported).
    • MP4: Handle the rotation part of tkhd transformation matrices that
      both rotate and reflect the video. This ensures that reflected videos
      taken by the iPhone front facing camera display the right way up, but
      incorrectly reflected in the y-axis
      (#​2012).
    • MP3: Use duration and data size from unseekable Xing, VBRI and similar
      variable bitrate metadata when falling back to constant bitrate seeking
      due to FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)
      (#​2194).
  • Audio:
    • Fix bug where AnalyticsListener.onAudioPositionAdvancing is not called
      when the audio playback is started very close to the end of the media.
    • Add support for all linear PCM sample formats in
      ChannelMappingAudioProcessor and TrimmingAudioProcessor.
    • Add support for audio gaps in CompositionPlayer.
    • Remove spurious call to BaseAudioProcessor#flush() from
      BaseAudioProcessor#reset().
    • Allow constant power upmixing/downmixing in DefaultAudioMixer.
    • Make ChannelMappingAudioProcessor, TrimmingAudioProcessor and
      ToFloatPcmAudioProcessor public
      (#​2339).
    • Use AudioTrack#getUnderrunCount() in AudioTrackPositionTracker to
      detect underruns in DefaultAudioSink instead of best-effort
      estimation.
    • Improve audio timestamp smoothing for unexpected position drift from the
      audio output device.
    • Fix bug where A/V sync is broken for the first 10 seconds after resuming
      from pause when connected to Bluetooth devices.
    • Fix bug that AnalyticsListener.onAudioPositionAdvancing was not
      reporting the time when the audio started advancing but the time of the
      first measurement.
    • Fix recovery to multichannel audio after fallback to stereo audio on
      some devices (#​2258).
  • Video:
    • Extend detached surface workaround to "lenovo" and "motorola" devices
      (#​2059).
    • Improve smooth video frame release at startup when audio samples don't
      start at exactly the requested position.
    • Extend detached surface workaround to "realme" devices
      (#​2059).
    • Add experimental ExoPlayer API to include the
      MediaCodec.BUFFER_FLAG_DECODE_ONLY flag when queuing decode-only input
      buffers. This flag will signal the decoder to skip the decode-only
      buffers thereby resulting in faster seeking. Enable it with
      DefaultRenderersFactory.experimentalSetEnableMediaCodecBufferDecodeOnlyFlag.
    • Improve codec performance checks for software video codecs. This may
      lead to some additional tracks being marked as EXCEEDS_CAPABILITIES.
    • Fix VP9 Widevine playback errors on some devices
      (#​2408).
  • Text:
    • Add support for VobSub tracks in MP4 files
      (#​2510).
    • Fix a playback stall when a subtitle segment initially fails to load and
      later loads successfully, followed by several empty subtitle segments
      (#​2517).
    • Fix SSA and SubRip to display an in-progress cue when enabling subtitles
      (#​2309).
    • Fix playback getting stuck when switching from a stream with a subtitle
      error to a live stream with an empty subtitle track
      (#​2328).
    • Fix garbled CEA-608 subtitles when playing H.262 streams containing
      B-frames (#​2372).
    • Add support for SSA subtitles with CodecId = S_TEXT/SSA in Matroska
      files. Previously MatroskaExtractor only supported CodecId = S_TEXT/ASS which is meant to represent the 'advanced' (v4+) variant of
      SubStation Alpha subtitles (but ExoPlayer's parsing logic is the same
      for both variants)
      (#​2384).
    • Add support for the layer property in SubStation Alpha (SSA) subtitle
      files which is used to define the z-order of cues when more than one is
      shown on screen at the same time
      (#​2124).
  • Metadata:
    • Added support for retrieving media duration and Timeline to
      MetadataRetriever and migrated it to an instance-based,
      AutoCloseable API. Use the new Builder to create an instance for a
      MediaItem, then call retrieveTrackGroups(), retrieveTimeline(),
      and retrieveDurationUs() to get ListenableFutures for the metadata.
      The previous static methods are now deprecated
      (#​2462).
  • Image:
    • Limit decoded bitmaps to the display size in
      BitmapFactoryImageDecoder, to avoid an app crashing with Canvas: trying to draw too large bitmap. from PlayerView when trying to
      display very large (e.g. 50MP) images.
    • Change the signature of
      DefaultRenderersFactory.getImageDecoderFactory() to take a Context
      parameter.
    • Align the max bitmap output size used in CompositionPlayer with that
      already used in Transformer (meaning CompositionPlayer does not
      consider the display size when decoding bitmaps, unlike ExoPlayer).
  • DRM:
    • Add new overload of OfflineLicenseHelper.newWidevineInstance accepting
      a MediaItem.DrmConfiguration so that HTTP request headers can be
      applied correctly
      (#​2169).
  • Effect:
    • Add Presentation.createForShortSide(int) that creates a Presentation
      that ensures the shortest side always matches the given value,
      regardless of input orientation.
  • Muxers:
    • Fix a bug where correct sample flags were not set for audio samples in
      fragmented MP4.
    • writeSampleData() API now uses muxer specific BufferInfo class
      instead of MediaCodec.BufferInfo.
    • Add Muxer.Factory#supportsWritingNegativeTimestampsInEditList which
      defaults to false.
  • IMA extension:
    • Fix a bug where a load error in one ad may accidentally invalidate
      another ad group.
    • Fix bug where ad groups after the end of a VOD window stalled playback.
      Ads groups with a start time after the window are not enqueued into the
      MediaPeriodQueue anymore
      (#​2215).
  • Session:
    • Fix bug where connections from third-party non-privileged Media3
      controllers are ignored.
    • Remove check for available commands when sending custom commands to a
      legacy MediaBrowserServiceCompat. This is in parity with the behavior
      of legacy controllers/browsers when connected to a legacy app.
    • Fix a bug that causes a player's first playback error to be incorrectly
      treated as a persistent custom exception. This prevents the application
      from recovering.
    • Fix bug where some controller changes that are not handled by the
      session may cause IllegalStateExceptions.
    • Fix bug where controller actions that are not handled by the session may
      leave the controller in an invalid state.
    • Fix StrictMode unsafe launch violation warning
      (#​2330).
    • Fix bug where calling setSessionExtras from the main thread when
      running the player from a different application thread then the main
      thread caused an IllegalStateException
      (#​2265).
    • Don't automatically show a notification if a player is set up with media
      items without preparing or playing them
      (#​2423#​2423). This behavior
      is configurable via
      MediaSessionService.setShowNotificationForIdlePlayer.
    • Add custom PlaybackException for all or selected controllers.
    • Fix bug where seeking in a live stream on a MediaController can cause
      an IllegalArgumentException.
    • For live streams, stop publishing a playback position and the ability to
      seek in the current item for platform media controllers, to avoid
      position artefacts in the Android Auto UI (and other controllers using
      this information from the platform media session)
      (#​1758).
    • Fix a bug where passing null into getLibraryRoot of a MediaBrowser
      connected to a legacy MediaBrowserServiceCompat produced a
      NullPointerException.
    • Fix a bug where sending custom actions, a search result or a getItem
      request crashed the legacy session app with a ClassNotFoundException.
    • Fix a bug where MediaItem.LocalConfiguration.uri was shared to the
      platform sessions's MediaMetadata. To intentionally share a URI to
      allow controllers to re-request the media, set
      MediaItem.RequestMetadata.mediaUri instead.
  • UI:
    • Fix bug where PlayerSurface inside re-usable components like
      LazyColumn didn't work correctly
      (#​2493).
    • Fix a Compose bug which resulted in a gap between setting the initial
      button states and observing the change in state (e.g. icon shapes or
      being enabled). Any changes made to the Player outside of the
      observation period are now picked up
      (#​2313).
    • Add state holders and composables to the media3-ui-compose module for
      SeekBackButtonState and SeekForwardButtonState.
    • Add support for ExoPlayer's scrubbing mode to PlayerControlView. When
      enabled, this puts the player into scrubbing mode when the user starts
      dragging the scrubber bar, issues a player.seekTo call for every
      movement, and then exits scrubbing mode when the touch is lifted from
      the screen. This integration can be enabled with either
      time_bar_scrubbing_enabled = true in XML or the
      setTimeBarScrubbingEnabled(boolean) method from Java/Kotlin.
    • Make PlayerSurface accept a nullable Player argument.
  • Downloads:
    • Add partial download support for progressive streams. Apps can prepare a
      progressive stream with DownloadHelper, and request a
      DownloadRequest from the helper with specifying the time-based media
      start and end positions that the download should cover. The returned
      DownloadRequest carries the resolved byte range, with which a
      ProgressiveDownloader can be created and download the content
      correspondingly.
    • Add DownloadHelper.Factory with which the static
      DownloadHelper.forMediaItem() methods are replaced.
    • Add Factory for SegmentDownloader implementations.
    • Add partial download support for adaptive streams. Apps can prepare an
      adaptive stream with DownloadHelper, and request a DownloadRequest
      from the helper with specifying the time-based media start and end
      positions that the download should cover. The returned DownloadRequest
      carries the resolved time range, with which a concrete
      SegmentDownloader can be created and download the content
      correspondingly.
  • Cronet extension:
    • Add automatic cookie handling
      (#​5975).
  • HLS extension:
    • Fix bug where HlsSampleStreamWrapper attempts to seek inside buffer
      when there are no chunks available in the buffer
      #​2598.
    • Fix bug where track selection changes after loading low-latency parts
      and preload hints can cause playback to get stuck or freeze
      (#​2299).
    • Prevent excessive reloads by waiting for half the target duration when
      CAN-BLOCK-RELOAD=YES is not honored by the server
      (#​2317).
    • Fix bug where playback was stalled when starting an interstitials stream
      before a mid roll and asset list resolution was attempted for the wrong
      ad (#​2558).
    • Fix playlist parsing to accept \f (form feed) in quoted string
      attribute values
      (#​2420).
    • Support updating interstitials with the same ID
      (#​2427).
    • Fix bug where playlist load errors are sometimes not propagated once a
      live stream runs out of segments to load
      (#​2401#​2401).
    • Group subtitle renditions by NAME tag, similar to how audio renditions
      are grouped already
      (#​1666).
    • Support X-ASSET-LIST and live streams with HlsInterstitialsAdsLoader.
  • DASH extension:
    • Fix issue where trick-play adaptation set is merged with its main
      adaptation set to form an invalid TrackGroup
      (#​2148).
    • Fix bug where shortening a DASH period duration can throw an exception
      when samples beyond the new duration have already been read by the
      rendering pipeline
      (#​2440).
    • Fix bug where redirect wasn't followed when using CMCD query parameters
      (#​2475).
  • RTSP extension:
    • Add support for RTP Aggregation Packet for H265 in accordance with RFC
      7798#4.4.2 (#​2413).
    • Fix RtspClient to use the location uri as provided when processing an
      HTTP 302 response
      (#​2398).
    • Add parsing support for SessionDescriptions containing lines with
      trailing whitespace characters
      (#​2357).
  • Decoder extensions (FFmpeg, VP9, AV1, etc.):
    • Fix bug where
      DefaultTrackSelector.setAllowInvalidateSelectionsOnRendererCapabilitiesChange
      has no effect for audio decoder extensions
      (#​2258).
  • Cast extension:
    • Add support for setVolume(), and getVolume()
      (#​2279).
    • Prevent CastPlayer from entering STATE_BUFFERING while the timeline is
      empty.
    • Add support for getDeviceVolume(), setDeviceVolume(),
      getDeviceMuted(), and setDeviceMuted()
      (#​2089).
  • Test Utilities:
    • Add advance(player).untilPositionAtLeast and untilMediaItemIndex to
      TestPlayerRunHelper in order to advance the player until a specified
      position is reached. In most cases, these methods are more reliable than
      the existing untilPosition and untilStartOfMediaItem methods.
    • Move FakeDownloader to test-utils-robolectric module for reuse in
      other tests.
    • Removed transformer.TestUtil.addAudioDecoders(String...),
      transformer.TestUtil.addAudioEncoders(String...), and
      transformer.TestUtil.addAudioEncoders(ShadowMediaCodec.CodecConfig, String...). Use ShadowMediaCodecConfig to configure shadow encoders
      and decoders instead.
    • Replaced the "exotest" prefix with "media3" in codec names reported by
      ShadowMediaCodecConfig.
  • Remove deprecated symbols:
    • Removed deprecated SegmentDownloader constructor
      SegmentDownloader(MediaItem, Parser<M>, CacheDataSource.Factory, Executor) and the corresponding constructors in its subclasses
      DashDownloader, HlsDownloader and SsDownloader.
    • Removed deprecated Player.hasNext(), Player.hasNextWindow(). Use
      Player.hasNextMediaItem() instead.
    • Removed deprecated Player.next(). Use Player.seekToNextMediaItem()
      instead.
    • Removed deprecated Player.seekToPreviousWindow(). Use
      Player.seekToPreviousMediaItem() instead.
    • Removed deprecated Player.seekToNextWindow(). Use
      Player.seekToNextMediaItem() instead.
    • Removed deprecated BaseAudioProcessor in exoplayer module. Use
      BaseAudioProcessor under common module.
    • Remove deprecated MediaCodecVideoRenderer constructor
      MediaCodecVideoRenderer(Context, MediaCodecAdapter.Factor, MediaCodecSelector, long, boolean, @&#8203;Nullable Handler, @&#8203;Nullable VideoRendererEventListener, int, float, @&#8203;Nullable VideoSinkProvider).

v1.7.1

This release has the same code as 1.6.1 and is being released to ensure it
appears as a 'newer' release than 1.7.0, which was an alpha release accidentally
tagged as stable (see below).

v1.7.0

This release should have been 1.7.0-alpha01, but was accidentally tagged
1.7.0 (i.e. stable) on maven.google.com. Please do not use it. Stay on
1.6.1 or upgrade to 1.7.1 (which has the same code as 1.6.1).

v1.6.1

Compare Source

This release includes the following changes since the
1.6.0 release:

  • Common Library:
    • Add PlaybackParameters.withPitch(float) method for easily copying a
      PlaybackParameters with a new pitch value
      (#​2257).
  • ExoPlayer:
    • Fix issue where media item transition fails due to recoverable renderer
      error during initialization of the next media item
      (#​2229).
    • Fix issue where ProgressiveMediaPeriod throws an
      IllegalStateException as PreloadMediaSource attempts to call its
      getBufferedDurationUs() before it is prepared
      (#​2315).
    • Fix sending CmcdData in manifest requests for DASH, HLS, and
      SmoothStreaming (#​2253).
    • Ensure AdPlaybackState.withAdDurationsUs(long[][]) can be used after
      ad groups have been removed. The user still needs to pass in an array of
      durations for removed ad groups which can be empty or null
      (#​2267).
  • Extractors:
    • MP4: Parse alternate_group from the tkhd box and expose it as an
      Mp4AlternateGroupData entry in each track's Format.metadata
      (#​2242).
  • Audio:
    • Fix offload issue where the position might get stuck when playing a
      playlist of short content
      (#​1920).
  • Session:
    • Lower aggregation timeout for platform MediaSession callbacks from 500
      to 100 milliseconds and add an experimental setter to allow apps to
      configure this value.
    • Fix issue where notifications reappear after they have been dismissed by
      the user (#​2302).
    • Fix a bug where the session returned a single-item timeline when the
      wrapped player is actually empty. This happened when the wrapped player
      doesn't have COMMAND_GET_TIMELINE available while
      COMMAND_GET_CURRENT_MEDIA_ITEM is available and the wrapped player is
      empty (#​2320).
    • Fix a bug where calling
      MediaSessionService.setMediaNotificationProvider is silently ignored
      after other interactions with the service like
      setForegroundServiceTimeoutMs
      (#​2305).
  • UI:
    • Enable PlayerSurface to work with ExoPlayer.setVideoEffects and
      CompositionPlayer.
    • Fix bug where PlayerSurface can't be recomposed with a new Player.
  • HLS extension:
    • Fix issue where chunk duration wasn't set in CmcdData for HLS media,
      causing an assertion failure when processing encrypted media segments
      (#​2312).
  • RTSP extension:
    • Add support for URI with RTSPT scheme as a way to configure the RTSP
      session to use TCP
      (#​1484).
  • Cast extension:
    • Add support for playlist metadata
      (#​2235).

v1.6.0

Compare Source

This release includes the following changes since the
1.5.1 release:

  • Common Library:
    • Add AudioManagerCompat and AudioFocusRequestCompat to replace the
      equivalent classes in androidx.media.
    • Upgrade Kotlin from 1.9.20 to 2.0.20 and use Compose Compiler Gradle
      plugin. Upgrade KotlinX Coroutines library from 1.8.1 to 1.9.0.
    • Remove Format.toBundle(boolean excludeMetadata) method, use
      Format.toBundle() instead.
    • Fix bug in SimpleBasePlayer where setting a new
      currentMediaItemIndex in State after setPlaylist with null
      MediaMetadata does not reevaluate the metadata
      (#​1940).
    • Change SimpleBasePlayer.State access from protected to public to make
      it easier to handle updates in other classes
      (#​2128).
  • ExoPlayer:
    • Add MediaExtractorCompat, a new class that provides equivalent
      features to platform MediaExtractor.
    • Add experimental 'ExoPlayer' pre-warming support for playback using
      MediaCodecVideoRenderer. You can configure DefaultRenderersFactory
      through experimentalSetEnableMediaCodecVideoRendererPrewarming to
      provide a secondary MediaCodecVideoRenderer to ExoPlayer. If
      enabled, ExoPlayer pre-processes the video of consecutive media items
      during playback to reduce media item transition latency.
    • Reduce default values for bufferForPlaybackMs and
      bufferForPlaybackAfterRebufferMs in DefaultLoadControl to 1000 and
      2000 ms respectively.
    • Initialize DeviceInfo and device volume asynchronously (if enabled
      using setDeviceVolumeControlEnabled). These values aren't available
      instantly after ExoPlayer.Builder.build(), and Player.Listener
      notifies changes through onDeviceInfoChanged and
      onDeviceVolumeChanged.
    • Initial audio session id is no longer immediately available after
      creating the player. You can use
      AnalyticsListener.onAudioSessionIdChanged to listen to the initial
      update if required.
    • Consider language when selecting a video track. By default, select a
      'main' video track that matches the language of the selected audio
      track, if available. Explicit video language preferences can be
      expressed with
      TrackSelectionParameters.Builder.setPreferredVideoLanguage(s).
    • Add selectedAudioLanguage parameter to
      DefaultTrackSelector.selectVideoTrack() method.
    • Add retryCount parameter to MediaSourceEventListener.onLoadStarted
      and corresponding MediaSourceEventListener.EventDispatcher methods.
    • Fix bug where playlist items or periods in multi-period DASH streams
      with durations that don't match the actual content could cause frame
      freezes at the end of the item
      (#​1698).
    • Move BasePreloadManager.Listener to a top-level
      PreloadManagerListener.
    • RenderersFactory.createSecondaryRenderer can be implemented to provide
      secondary renderers for pre-warming. Pre-warming enables quicker media
      item transitions during playback.
    • Enable sending CmcdData for manifest requests in adaptive streaming
      formats DASH, HLS, and SmoothStreaming
      (#​1951).
    • Provide MediaCodecInfo of the codec that will be initialized in
      MediaCodecRenderer.onReadyToInitializeCodec
      (#​1963).
    • Change AdsMediaSource to allow the AdPlaybackStates to grow by
      appending ad groups. Invalid modifications are detected and throw an
      exception.
    • Fix issue where additional decode-only frames may be displayed in quick
      succession when transitioning to content media after a mid-roll ad.
    • Make DefaultRenderersFactory add two MetadataRenderer instances to
      enable apps to receive two different schemes of metadata by default.
    • Reevaluate whether the ongoing load of a chunk should be cancelled when
      playback is paused
      (#​1785).
    • Add option to ClippingMediaSource to allow clipping in unseekable
      media.
    • Fix bug where seeking with pre-warming could block following media item
      transition.
    • Fix a bug where ExoPlayer.isLoading() remains true while it has
      transitioned to STATE_IDLE or STATE_ENDED
      (#​2133).
    • Add lastRebufferRealtimeMs to LoadControl.Parameter
      (#​2113).
  • Transformer:
    • Add support for transmuxing into alternative backward compatible
      formats.
    • Add support for transcoding and transmuxing Dolby Vision (profile 8)
      format.
    • Update parameters of VideoFrameProcessor.registerInputStream and
      VideoFrameProcessor.Listener.onInputStreamRegistered to use Format.
    • Generate HDR static metadata when using DefaultEncoderFactory.
    • Enable support for Android platform diagnostics using
      MediaMetricsManager. Transformer forwards editing events and
      performance data to the platform, which helps to provide system
      performance and debugging information on the device. This data may also
      be collected by Google
      if sharing usage and diagnostics data is enabled
      by the user of the device. Apps can opt-out of contributing to platform
      diagnostics for Transformer with
      Transformer.Builder.setUsePlatformDiagnostics(false).
    • Split InAppMuxer into InAppMp4Muxer and InAppFragmentedMp4Muxer.
      You use InAppMp4Muxer to produce a non-fragmented MP4 file, while
      InAppFragmentedMp4Muxer is for producing a fragmented MP4 file.
    • Move Muxer interface from media3-muxer to media3-transformer.
    • Add MediaProjectionAssetLoader, which provides media from a
      MediaProjection for screen recording, and add support for screen
      recording to the Transformer demo app.
    • Add #getInputFormat() to Codec interface.
    • Shift the responsibility to release the GlObjectsProvider onto the
      caller in DefaultVideoFrameProcessor and DefaultVideoCompositor when
      possible.
  • Extractors:
    • AVI: Fix handling of files with constant bitrate compressed audio where
      the stream header stores the number of bytes instead of the number of
      chunks.
    • Fix handling of NAL units with lengths expressed in 1 or 2 bytes (rather
      than 4).
    • Fix ArrayIndexOutOfBoundsException in MP4 edit lists when the edit
      list starts at a non-sync frame with no preceding sync frame
      (#​2062).
    • Fix issue where TS streams can get stuck on some devices
      (#​2069).
    • FLAC: Add support for 32-bit FLAC files. Previously these would fail to
      play with IllegalStateException: Playback stuck buffering and not loading (#​2197).
  • Audio:
    • Fix onAudioPositionAdvancing to be called when playback resumes
      (previously it was called when playback was paused).
    • Don't bypass SonicAudioProcessor when SpeedChangingAudioProcessor is
      configured with default parameters.
    • Fix underflow in Sonic#getOutputSize() that could cause
      DefaultAudioSink to stall.
    • Fix MediaCodecAudioRenderer.getDurationToProgressUs() and
      DecoderAudioRenderer.getDurationToProgressUs() so that seeks correctly
      reset the provided durations.
    • Make androidx.media3.common.audio.SonicAudioProcessor final.

Configuration

📅 Schedule: Branch creation - "on the first day of January" (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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added the dependencies label Apr 1, 2025
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 2 times, most recently from bb61bf3 to b905639 Compare April 7, 2025 21:51
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 3 times, most recently from 3f1fb1b to 575e17a Compare April 14, 2025 16:30
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 5 times, most recently from 457f347 to d78f307 Compare April 28, 2025 12:52
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 4 times, most recently from 9abfac7 to 285199c Compare May 8, 2025 05:55
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 5 times, most recently from d9b2adc to 4d9cdc9 Compare May 19, 2025 16:11
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch from 4d9cdc9 to 235f4b1 Compare May 20, 2025 23:30
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 2 times, most recently from 4c9048e to c761f40 Compare June 4, 2025 17:58
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 2 times, most recently from 1f37d01 to ea03d43 Compare June 12, 2025 22:06
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 3 times, most recently from c52a984 to 99447fd Compare June 24, 2025 19:53
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 2 times, most recently from 1911782 to 22d762a Compare July 2, 2025 21:49
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch from 22d762a to 0ef7e8e Compare July 3, 2025 20:11
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 4 times, most recently from 445df0d to f39eba6 Compare July 17, 2025 19:31
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 2 times, most recently from 6c7e8b3 to 3fd32f2 Compare July 25, 2025 04:04
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 2 times, most recently from 8c22c4f to 6ded982 Compare August 13, 2025 21:03
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 3 times, most recently from 87661d4 to 3017c07 Compare August 20, 2025 16:44
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 2 times, most recently from 8e07e31 to 704595f Compare August 28, 2025 21:40
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch 5 times, most recently from 201685f to 97c4fc7 Compare September 11, 2025 12:25
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch from 97c4fc7 to 14f5e3a Compare September 18, 2025 17:32
@renovate renovate bot force-pushed the renovate/gradle-dependencies branch from 14f5e3a to f33b083 Compare September 27, 2025 13:38
@renovate
Copy link
Contributor Author

renovate bot commented Sep 27, 2025

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@renovate renovate bot changed the title Update Gradle Dependencies Update Gradle Dependencies - abandoned Dec 4, 2025
@renovate
Copy link
Contributor Author

renovate bot commented Dec 4, 2025

Autoclosing Skipped

This PR has been flagged for autoclosing. However, it is being skipped due to the branch being already modified. Please close/delete it manually or report a bug if you think this is in error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants