Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Jan 30, 2026

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Type Update Change Age Confidence
actions/checkout action major v4v6 age confidence
actions/setup-java action major v4v5 age confidence
actions/upload-artifact action major v4v6 age confidence
android_logger dependencies minor 0.130.15 age confidence
gradle (source) patch 9.3.09.3.1 age confidence
gradle/actions action major v4v5 age confidence
log dependencies patch 0.4.270.4.29 age confidence
stefanzweifel/git-auto-commit-action action major v5v7 age confidence
androidx.xr.compose:compose (source) dependencies patch 1.0.0-alpha071.0.0-alpha10 age confidence
androidx.work:work-runtime-ktx (source) dependencies minor 2.10.52.11.1 age confidence
com.google.android.gms:play-services-base dependencies minor 18.9.018.10.0 age confidence
androidx.lifecycle:lifecycle-process (source) dependencies minor 2.9.42.10.0 age confidence
androidx.window:window-core (source) dependencies patch 1.5.01.5.1 age confidence
androidx.window:window (source) dependencies patch 1.5.01.5.1 age confidence
androidx.wear.compose:compose-ui-tooling (source) dependencies minor 1.4.11.5.6 age confidence
androidx.wear.compose:compose-foundation (source) dependencies patch 1.5.01.5.6 age confidence
androidx.wear.compose:compose-material3 (source) dependencies patch 1.5.01.5.6 age confidence
androidx.wear.watchfacepush:watchfacepush (source) dependencies patch 1.0.0-alpha011.0.0-beta01 age confidence
com.google.android.wearable.watchface.validator:validator-push-cli dependencies patch 1.0.0-alpha081.0.0-alpha09 age confidence
com.google.android.wearable.watchface.validator:validator-push-android dependencies patch 1.0.0-alpha081.0.0-alpha09 age confidence
androidx.compose.ui:ui-tooling (source) dependencies patch 1.10.01.10.2 age confidence
androidx.compose.ui:ui-text-google-fonts (source) dependencies minor 1.9.31.10.2 age confidence
com.diffplug.spotless plugin minor 8.0.08.2.1 age confidence
org.robolectric:robolectric (source) dependencies patch 4.164.16.1 age confidence
com.squareup.retrofit2:converter-kotlinx-serialization dependencies major 2.11.03.0.0 age confidence
com.squareup.retrofit2:retrofit dependencies major 2.11.03.0.0 age confidence
com.squareup.okhttp3:okhttp (source) dependencies major 4.12.05.3.2 age confidence
androidx.media3:media3-ui-compose dependencies minor 1.8.01.9.1 age confidence
androidx.media3:media3-ui dependencies minor 1.8.01.9.1 age confidence
androidx.media3:media3-exoplayer dependencies minor 1.8.01.9.1 age confidence
androidx.compose.material3:material3 (source) dependencies patch 1.5.0-alpha101.5.0-alpha13 age confidence
org.jetbrains.kotlinx:kotlinx-serialization-protobuf dependencies minor 1.9.01.10.0 age confidence
org.jetbrains.kotlinx:kotlinx-serialization-json dependencies minor 1.9.01.10.0 age confidence
com.google.devtools.ksp (source) plugin patch 2.3.42.3.5 age confidence
com.google.guava:guava dependencies patch 33.5.0-android33.5.0-jre age confidence
com.google.mlkit:genai-prompt dependencies patch 1.0.0-alpha11.0.0-beta1 age confidence
com.google.firebase:firebase-bom dependencies minor 34.4.034.8.0 age confidence
androidx.datastore:datastore-preferences (source) dependencies minor 1.1.71.2.0 age confidence
androidx.datastore:datastore (source) dependencies minor 1.1.71.2.0 age confidence
androidx.core:core-splashscreen (source) dependencies minor 1.0.11.2.0 age confidence
com.squareup.retrofit2:converter-gson dependencies major 2.11.03.0.0 age confidence
androidx.compose:compose-bom dependencies major 2025.12.002026.01.01 age confidence
androidx.camera:camera-lifecycle (source) dependencies patch 1.5.21.5.3 age confidence
androidx.camera:camera-core (source) dependencies patch 1.5.21.5.3 age confidence
androidx.camera:camera-compose (source) dependencies patch 1.5.21.5.3 age confidence
androidx.camera:camera-camera2 (source) dependencies patch 1.5.21.5.3 age confidence
androidx.baselineprofile (source) plugin patch 1.5.0-alpha011.5.0-alpha02 age confidence
com.android.tools.build:apksig (source) dependencies patch 9.0.0-alpha069.0.0 age confidence
androidx.activity:activity-compose (source) dependencies patch 1.12.11.12.3 age confidence
com.android.extensions.xr:extensions-xr dependencies minor 1.1.01.2.0 age confidence
com.diffplug.spotless:spotless-plugin-gradle dependencies major 7.0.28.2.1 age confidence

Release Notes

actions/checkout (actions/checkout)

v6

Compare Source

v5

Compare Source

actions/setup-java (actions/setup-java)

v5

Compare Source

actions/upload-artifact (actions/upload-artifact)

v6

Compare Source

v5

Compare Source

rust-mobile/android_logger-rs (android_logger)

v0.15.0

Compare Source

What's Changed

New Contributors

Full Changelog: rust-mobile/android_logger-rs@0.14.1...v0.15.0

v0.14.1

Compare Source

gradle/gradle (gradle)

v9.3.1

Compare Source

gradle/actions (gradle/actions)

v5

Compare Source

rust-lang/log (log)

v0.4.29

Compare Source

v0.4.28

Compare Source

stefanzweifel/git-auto-commit-action (stefanzweifel/git-auto-commit-action)

v7

Compare Source

Added
Changes
Dependency Updates

v6

Compare Source

Fixed
square/retrofit (com.squareup.retrofit2:converter-kotlinx-serialization)

v3.0.0

Compare Source

Changed

  • Upgrade to OkHttp 4.12 (from 3.14).

    This is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the supported version of OkHttp whereas the previous version was out of support for nearly 4 years.

Note: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.
This means libraries compiled against 2.x can still be used with the 3.x versions.

v2.12.0

Compare Source

New

  • First-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using Call.enqueue directly.

    The following converters support this feature through a new withStreaming() factory method:

    • Gson
    • Jackson
    • Moshi
    • Protobuf
    • Wire

Fixed

  • Primitive types used with @Tag now work by storing the value boxed with the boxed class as the key.
square/okhttp (com.squareup.okhttp3:okhttp)

v5.3.2

2025-11-18

  • Fix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused
    timeouts to fire later than they were supposed to.

  • Upgrade: [Okio 3.16.4][okio_3_16_4].

v5.3.1

2025-11-16

This release is the same as 5.3.0. Okio 3.16.3 didn't have a necessary fix!

  • Upgrade: [Okio 3.16.3][okio_3_16_3].

v5.3.0

2025-10-30

  • New: Add tags to Call, including computable tags. Use this to attach application-specific
    metadata to a Call in an EventListener or Interceptor. The tag can be read in any other
    EventListener or Interceptor.

      override fun intercept(chain: Interceptor.Chain): Response {
        chain.call().tag(MyAnalyticsTag::class) {
          MyAnalyticsTag(...)
        }
    
        return chain.proceed(chain.request())
      }
  • New: Support request bodies on HTTP/1.1 connection upgrades.

  • New: EventListener.plus() makes it easier to observe events in multiple listeners.

  • Fix: Don't spam logs with ‘Method isLoggable in android.util.Log not mocked.’ when using
    OkHttp in Robolectric and Paparazzi tests.

  • Upgrade: [Kotlin 2.2.21][kotlin_2_2_21].

  • Upgrade: [Okio 3.16.2][okio_3_16_2].

  • Upgrade: [ZSTD-KMP 0.4.0][zstd_kmp_0_4_0]. This update fixes a bug that caused APKs to fail
    [16 KB ELF alignment checks][elf_alignment].

v5.2.3

2025-11-18

  • Fix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused
    timeouts to fire later than they were supposed to.

  • Upgrade: [Okio 3.16.4][okio_3_16_4].

v5.2.2

2025-11-16

This release is the same as 5.2.1. Okio 3.16.3 didn't have a necessary fix!

  • Upgrade: [Okio 3.16.3][okio_3_16_3].

v5.2.1

2025-10-09

  • Fix: Don't crash when calling Socket.shutdownOutput() or shutdownInput() on an SSLSocket
    on Android API 21 through 23. This method throws an UnsupportedOperationException, so we now
    catch that and close the underlying stream instead.

  • Upgrade: [Okio 3.16.1][okio_3_16_1].

v5.2.0

2025-10-07

  • New: Support [HTTP 101] responses with Response.socket. This mechanism is only supported on
    HTTP/1.1. We also reimplemented our websocket client to use this new mechanism.

  • New: The okhttp-zstd module negotiates [Zstandard (zstd)][zstd] compression with servers that
    support it. It integrates a new (unstable) [ZSTD-KMP] library, also from Square. Enable it like
    this:

    val client = OkHttpClient.Builder()
      .addInterceptor(CompressionInterceptor(Zstd, Gzip))
      .build()
  • New: Support the QUERY HTTP method. You will need to set the Request.cacheUrlOverride
    property to cache calls made with this method. The RequestBody.sha256() may be helpful here;
    use it to compose a cache URL from the query body.

  • New: Publish events when calls must wait to execute. EventListener.dispatcherQueueStart()
    is invoked when a call starts waiting, and dispatcherQueueEnd() is invoked when it's done.

  • New: Request.toCurl() returns a copy-pasteable [curl] command consistent with Chrome’s and
    Firefox’s ‘copy as cURL’ features.

  • New: Support [JPMS]. We replaced our Automatic-Module-Name metadata with proper
    module-info.java files.

  • Fix: Recover gracefully when worker threads are interrupted. When we introduced fast fallback in
    OkHttp 5.0, we started using background threads while connecting. Sadly that code didn't handle
    interruptions well. This is now fixed.

  • Upgrade: [Kotlin 2.2.20][kotlin_2_2_20].

  • Upgrade: [Okio 3.16.0][okio_3_16_0].

v5.1.0

2025-07-07

  • New: Response.peekTrailers(). When we changed Response.trailers() to block instead of
    throwing in 5.0.0, we inadvertently removed the ability for callers to peek the trailers
    (by catching the IllegalStateException if they weren't available). This new API restores that
    capability.

  • Fix: Don't crash on trailers() if the response doesn't have a body. We broke [Retrofit] users
    who read the trailers on the raw() OkHttp response, after its body was decoded.

v5.0.0

2025-07-02

This is our first stable release of OkHttp since 2023. Here's the highlights if you're upgrading
from OkHttp 4.x:

OkHttp is now packaged as separate JVM and Android artifacts. This allows us to offer
platform-specific features and optimizations. If your build system handles [Gradle module metadata],
this change should be automatic.

MockWebServer has a new coordinate and package name. We didn’t like that our old artifact
depends on JUnit 4 so the new one doesn’t. It also has a better API built on immutable values. (We
intend to continue publishing the old okhttp3.mockwebserver artifact so there’s no urgency to
migrate.)

Coordinate Package Name Description
com.squareup.okhttp3:mockwebserver3:5.0.0 mockwebserver3 Core module. No JUnit dependency!
com.squareup.okhttp3:mockwebserver3-junit4:5.0.0 mockwebserver3.junit4 Optional JUnit 4 integration.
com.squareup.okhttp3:mockwebserver3-junit5:5.0.0 mockwebserver3.junit5 Optional JUnit 5 integration.
com.squareup.okhttp3:mockwebserver:5.0.0 okhttp3.mockwebserver Obsolete. Depends on JUnit 4.

OkHttp now supports Happy Eyeballs ([RFC 8305][rfc_8305]) for IPv4+IPv6 networks. It attempts
both IPv6 and IPv4 connections concurrently, keeping whichever connects first.

We’ve improved our Kotlin APIs. You can skip the builder:

val request = Request(
  url = "https://cash.app/".toHttpUrl(),
)

OkHttp now supports [GraalVM].

Here’s what has changed since 5.0.0-alpha.17:

  • Upgrade: [Okio 3.15.0][okio_3_15_0].
  • Upgrade: [Kotlin 2.2.0][kotlin_2_2_0].
  • Fix: Don't crash with a NoSuchMethodError when using OkHttp with the Sentry SDK.
  • Fix: Retain the query data in the old okhttp3.mockwebserver.RecordedRequest.path property. We
    inadvertently changed this behavior when we introduced the mockwebserver3 API.
androidx/media (androidx.media3:media3-ui-compose)

v1.9.1

Compare Source

This release includes the following changes since
1.9.0 release:

  • Common Library:
    • Support date-time strings with only hours in the timezone offset
      (#​2929).
  • ExoPlayer:
    • Allow dynamic scheduling to slow doSomeWork interval only after audio
      starts to support smoother A/V sync at beginning of playback.
    • Fix bug in DefaultLoadErrorHandlingPolicy where
      FileNotFoundException and similar exception types were retried
      multiple times.
    • Fix bug with dynamic scheduling where the calculated time for the next
      doSomeWork was mistakenly reduced by the elapsed time of the current
      iteration of doSomeWork. Addressing this hopefully extends CPU idle
      time and saves power.
    • Fix issue where some playbacks of Dolby Vision files fail when
      attempting to use a fallback AVC or HEVC codec.
    • Fix bug where loading continues after playback ended when removing the
      currently playing item from a playlist
      (#​2873).
    • Avoid leaking MediaItem instances when repeatedly using
      ExoPlayer.replaceMediaItem on the same item
      (#​2993).
    • Prevent potential ANRs caused by emergency wake lock releases
      (#​2979).
  • Extractors:
    • MP3: Parse LAME ReplayGain data
      (#​2840).
  • Audio:
    • Correctly remove support for AC4Profile22 and other legacy profiles
      when assessing AC-4 decoder support in Automotive scenarios
      (#​2609).
  • Video:
    • Discard video codecs on devices below API 30 when the content frame rate
      changes to avoid stuttering playback
      (#​2941).
  • Text:
    • VobSub: Fix some missing subtitles by correctly handling SPUs that
      either contain only a single control sequence, or have critical info
      split across multiple control sequences
      (#​2935).
  • IMA extension:
    • Bug fix: Corrected an issue where the ad MIME type did not match the
      MIME type provided in the IMA LOADED event. The fix now maps the ad MIME
      type using the ad pod index and ad position.
    • Add a null check before accessing result of getAdsManager() and
      AdEvent.getAd().
  • Session:
    • Fix bug where stopping a MediaController connected to a platform
      session crashed the app if stop happened during ad playback
      (#​2948).
    • Add additional verifications on extras Bundle instances in various
      classes to guard against malformed Bundle instances sent from other
      processes.
    • Fix issue where missing commands for COMMAND_SEEK_NEXT or
      COMMAND_SEEK_BACK can cause gaps in the system media notification
      (#​2976).
    • Move bitmap scaling for notification icon off the main thread
      (#​2829).
    • Fix bug where author, writer and composer were not used as a fallback
      when converting from legacy MediaMetadataCompat and
      MediaDescriptionCompat
      (#​3018).
  • Downloads:
    • Fix potential infinite loops when a PriorityTooLowException is handled
      by SegmentDownloader (for DASH, HLS and SmoothStreaming). Custom
      overrides of SegmentDownloader using the protected execute method
      need to provide their task wrapped in a Supplier so it can be
      recreated (#​2931).
  • HLS extension:
    • Pass the raw asset list JSON document to
      Listener.onAssetListLoadCompleted callback. This is a breaking change
      in an unstable API that requires apps that implement this callback to
      add an additional argument of type JSONObject
      (#​2950).
  • RTSP extension:
    • Correctly handle RTP Packets with timestamps that wrap around
      (#​2930).
  • Decoder extensions (FFmpeg, VP9, AV1, etc.):
    • Fix potential NullPointerException that can occur when seeking prior
      to processing the first video frame
      (#​2965).
  • Cast extension:
    • Fix bug preventing the RemoteCastPlayer timeline from updating
      correctly when replacing the playlist.

v1.9.0

Compare Source

  • Common Library:
    • Update minSdk to 23 in line with other AndroidX libraries.
    • Add PlayerTransferState, which facilitates transferring the playback
      state across Player instances.
    • Add void mute() and void unmute() methods to Player that preserve
      and consequently restore Player's volume before and after setting it to
      zero.
    • Publish utility classes WakeLockManager, WifiLockManager,
      AudioFocusManager, AudioBecomingNoisyManager and
      StuckPlayerDetector previously used by ExoPlayer internally to allow
      reuse for other players
      (#​1893).
    • Fix ForwardingPlayer listener handling when the underlying delegate
      player uses reference equality for comparing listener instances
      (#​2675).
    • Add a Player.listenTo suspending extension function in the
      media3-common-ktx library that specifies the particular
      Player.Events that should be acted upon.
    • Fix a crash in BasePlayer.getBufferedPercentage resulting from integer
      overflow when the reported buffered position is implausibly much larger
      than the reported duration
      (#​2750).
    • Fix auto-detection of TrackGroup track type by not ignoring custom
      sample MIME type and falling back to using the potentially wrong track
      type from the container MIME type
      (#​2860).
  • ExoPlayer:
    • Add a stuck player detection that triggers a StuckPlayerException
      player error if the player seems stuck. This happens in the following
      cases, where each default timeout can be configured in
      ExoPlayer.Builder if required:
      • After 10 minutes of STATE_BUFFERING while trying to play and no
        buffering progress.
      • After 10 seconds of STATE_READY while trying to play and no
        playback progress.
      • After 1 minute of STATE_READY beyond the declared duration without
        reaching the end of the item.
      • After 10 minutes with a playback suppression reason while trying to
        play.
    • Enable wake lock handling by default to fix issues with buffering during
      background playback. This is equivalent to setting
      ExoPlayer.Builder.setWakeMode to C.WAKE_MODE_LOCAL.
    • Add listening logic to automatically update the virtual device ID when a
      change is reported to the Context originally passed to
      ExoPlayer.Builder.
    • Add ExoPlayer.setVirtualDeviceId to manually update the virtual device
      ID obtained from the Context passed to ExoPlayer.Builder.
    • Ensure renderers don't consume data from the next playlist item more
      than 10 seconds before the end of the current item.
    • Add setSeekBackIncrementMs, setSeekForwardIncrementMs and
      setMaxSeekToPreviousPositionMs to ExoPlayer to update these settings
      after construction
      (#​2736).
    • Add pre-caching functionality in DefaultPreloadManager. Apps now can
      return
      DefaultPreloadManager.PreloadStatus.specifiedRangeCached(startPositionMs, durationMs) or
      DefaultPreloadManager.PreloadStatus.specifiedRangeCached(durationMs)
      via TargetPreloadStatusControl.getTargetPreloadStatus(T rankingData)
      to indicate that a media item needs to be pre-cached.
    • Use pre-caching functionality of DefaultPreloadManager in shortform
      demo app.
    • Add DefaultLoadControl.Builder setters for local playback and adjust
      default values of DefaultLoadControl to work well with a wide range of
      local files.
    • Fix bug where setting an empty playlist can leave the player in
      STATE_READY or STATE_BUFFERING.
    • Enhance the preload manager APIs:
      • Add addMediaItems(List<MediaItem>, List<T>) and
        addMediaSources(List<MediaSource>, List<T>) that add the media
        items or media sources in batch, and automatically call
        invalidate() afterwards.
      • Add removeMediaItems((List<MediaItem>) and
        removeMediaSources(List<MediaSource>) that remove the media items
        or media sources in batch, and make sure that preload manager does
        not start to preload or continue preloading any of them after
        removal.
      • Allow DefaultPreloadManager.setCurrentPlayingIndex(int) to
        invalidate itself automatically. Apps don't need to call
        invalidate() explicitly anymore after updating the current playing
        index.
    • Add capability to skip keyframe reset for forward seeks within the same
      group of pictures while in scrubbing mode.
    • Add DefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int)
      for apps to set a value of target buffer bytes for a player with the
      specified playerName. The DefaultLoadControl can now make decisions
      of each player separately based on its own allocated bytes and target
      buffer bytes.
    • Add SkipInfo to the AdPlaybackState.AdGroup to carry skip
      information for each ad in the ad group.
    • Fix bug where calling removeMediaItems(List) during playing a
      post-roll created a crash
      (#​2746).
    • Fix some stuttering in playlist playback where frames were mistakenly
      always set as the last sample and rendered.
    • Enable retry path if player fails to generate audio session ID
      (#​2382,
      #​2678).
    • Add support to control the total buffer bytes for the sources in
      DefaultPreloadManager to avoid total buffer bytes for preloading from
      growing arbitrarily. To use the default control logic, Apps can set the
      target buffer bytes for preloading via
      DefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int) for
      a playerName of PlayerId.Preload.name ("preload"), and inject the
      created DefaultLoadControl via
      DefaultPreloadManager.Builder.setLoadControl(LoadControl).
    • Add cloneAndSet(int, int) to ShuffleOrder with a default
      implementation (#​2834).
    • Append content resume offset when skipping ad playback after seek
      adjustment or auto transition
      (#​2484).
    • Add API to set and observe codec parameters for audio and video tracks.
      This feature is implemented for MediaCodec based renderers and
      requires API 29+.
      • Use ExoPlayer.setAudioCodecParameters() and
        ExoPlayer.setVideoCodecParameters() to apply parameters.
      • Use ExoPlayer.addAudioCodecParametersChangeListener() and
        ExoPlayer.addVideoCodecParametersChangeListener() to listen for
        changes. Observing vendor-specific keys requires API 31+.
    • Fix IllegalStateException caused by setting an empty media source
      after seeking to a non-zero position and then preparing the player with
      a non-empty media source.
    • Fix bug where seeking into other media items while in scrubbing mode
      could cause IllegalStateException.
    • Fix potential NullPointerException in DefaultPlaybackSessionManager
      (#​2885).
    • Enable improvements in seeking performance for eligible videos.
    • Re-enable use of asynchronous decryption in MediaCodec on API 36+ where
      timeout issues with this platform API have been fixed
      (#​1641).
    • Change the default value of
      MediaCodecVideoRenderer.experimentalSetLateThresholdToDropDecoderInputUs
      to 15ms and enable more efficient dropping of video frames before
      decoding for eligible videos.
    • Add maximum memory limit to the automatic memory calculation in
      DefaultLoadControl. This should only take effect if an excessive
      number of tracks get selected
      (#​2860).
    • Fix bug where, if playing in a playlist or repeat mode, seeking in scrub
      mode near the end could cause a seek to the next media item.
  • CompositionPlayer:
    • Publish CompositionPlayer under a new @ExperimentalApi annotation to
      indicate it is available for experimentation, but is still under
      development. Some APIs are likely to change significantly in future
      releases, and there are known issues and limitations with some use-cases
      (some undocumented).
    • Add support for COMMAND_SET_AUDIO_ATTRIBUTES and audio focus handling
      in CompositionPlayer.
    • Add support for speed changing in secondary sequences in
      CompositionPlayer.
    • Add support for EditedMediaItem.removeVideo.
  • Transformer:
    • Use InAppMp4Muxer as default muxer.
    • Add EditedMediaItem.Builder#setSpeed() and deprecate
      Effects#createExperimentalSpeedChangingEffects().
    • Replace forceAudioTrack and forceVideoTrack with trackTypes in
      EditedMediaItemSequence.
  • Track Selection:
    • Add TrackSelectionParameters.selectTextByDefault to prefer the
      selection of any text track without specifying other more specific
      preferences.
    • Add preferredVideoLabels, preferredAudioLabels and
      preferredTextLabels in TrackSelectionParameters to specify a
      preference for tracks with a specific label, for example those read from
      HLS NAME tags (#​1666).
  • Extractors:
    • FLAC: Tighten header detection to reduce the chance of finding spurious
      headers in the encoded FLAC data, resulting in decoding errors
      (#​558).
    • MP3: Allow gaps between (and before) ID3 tags at the beginning of MP3
      files (#​811,
      #​5718).
    • MP3: Increase sniffing limit to 128kB to match the existing search limit
      for a sync byte
      (#​2713).
    • MP3: Change FLAG_ENABLE_INDEX_SEEKING to prefer seeking information
      from metadata headers (like Xing and VBRI) when available, falling back
      to index-based seeking if no other seeking information is present. This
      improves performance for files with seeking metadata
      (#​2839).
    • MP3: Change Mp3Extractor to default to a constant bitrate (CBR)
      assumption when no seeking metadata (e.g., Xing, VBRI) is found, even
      when FLAG_ENABLE_INDEX_SEEKING is set. This is based on the MP3
      specification's history, where CBR was standard and VBR requires
      explicit headers. This improves immediate seekability for files without
      metadata at the cost of potential accuracy for VBR files lacking
      headers. Index seeking is now used as a fallback if the CBR assumption
      is not seekable (e.g., for streams of unknown length)
      (#​2848).
    • MP4: Disambiguate between audio/mpeg (MP3), audio/mpeg-L1 and
      audio/mpeg-L2 MIME types by peeking the layer value of the first
      sample before emitting a track format from the extractor
      (#​2683).
    • MP4: Improve sniffing efficiency of very large files by assuming a
      stbl box larger than 1MB implies the file must be non-fragmented
      (#​2650).
    • MP4: Add support for ©mvn (movement name) and ©mvi (movement index)
      metadata, these are now emitted as TextInformationFrame objects in
      Format.metadata with IDs of MVNM and MVIN respectively
      (#​2754).
    • MP4: Ignore tracks with missing stsd box (instead of failing to parse
      the whole file).
    • Matroska: Add support for DTS-HD detection
      (#​6225).
    • Fix an issue in MatroskaExtractor where seeking could be inaccurate
      for files with multiple tracks. Cue points are now correctly associated
      with their respective tracks, leading to more precise seeking.
    • MPEG-TS: Fix IllegalArgumentException from ReorderingBufferQueue
      caused by PES packets with no timestamp
      (#​2764).
    • Add support for extracting HEIC Motion Photos. The HeifExtractor can
      now parse HEIC files containing embedded video and audio tracks.
  • Inspector:
    • Introduced a new :media3-inspector module to serve as the dedicated
      home for media inspection utilities. This module now houses a new
      androidx.media3.inspector.MetadataRetriever, which will provide a
      unified API for both metadata and frame extraction. The existing
      androidx.media3.exoplayer.MetadataRetriever is now deprecated in favor
      of this new version.
    • Introduced androidx.media3.inspector.FrameExtractor, a new public API
      for frame extraction. This AutoCloseable class provides a way to
      extract frames with support for HDR video, video effects, and custom
      decoder selection. It should be created via its Builder for a specific
      MediaItem.
    • FrameExtractor: Add getThumbnail() to extract a representative
      thumbnail frame from a media file without requiring a specific
      timestamp.
    • Add androidx.media3.inspector.MediaExtractorCompat, a drop-in
      replacement for the platform's android.media.MediaExtractor that
      provides a way to extract raw, encoded media samples from a media file.
      The existing androidx.media3.exoplayer.MediaExtractorCompat is now
      deprecated in favor of this new class.
  • Audio:
    • Make AudioProcessor instances aware of seeking.
    • Allow injecting the new AudioOutputProvider interface into
      DefaultAudioSink.Builder to support custom audio output paths. The
      default is AudioTrackAudioOutputProvider.
    • Handle seeks in GainProcessor.
    • Utilize AC-4 decoder profile and level capabilities in track format
      support assessment
      (#​2580).
    • Avoid potential delays caused by handling routing change callbacks at
      the beginning of playback
      (#​2646).
    • Allow codec reuse for EAC3, EAC3-JOC and AC-4 formats
      ([#​1346](https://re

Configuration

📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, 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 requested review from riggaroo and tiwiz as code owners January 30, 2026 03:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants