github androidx/media 1.10.0-alpha01

pre-release11 hours ago
  • Common Library:
    • Promote Player.mute() and Player.unmute() from UnstableApi to stable.
    • Promote Format.pcmEncoding and C.PcmEncoding from UnstableApi to stable.
  • ExoPlayer:
    • Add clipping capabilities to AdsMediaSource.
    • Add support for dynamic scheduling in MediaCodecVideoRenderer to better align scheduling work and CPU wake-cycles to when video frames can be processed. You can enable this using experimentalSetEnableMediaCodecVideoRendererDurationToProgressUs() via the DefaultRenderersFactory.
    • Allow setting a custom DataSource.Factory in DefaultPreloadManager.Builder.
    • Allow ExoPlayer to be mocked without Robolectric by moving some default constants to ExoPlayer.Builder. Mocking this complex interface is not generally encouraged - only when the usage is minimal/simple/incidental (#2985).
      • This required moving DEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS from ExoPlayer to ExoPlayer.Builder (without deprecation).
    • Fix bug where ProgressiveMediaSource propagates out-of-date timeline info to player and the queued periods unexpectedly get removed (#3016).
  • CompositionPlayer:
    • Add support for EditedMediaItem.removeVideo.
  • Transformer:
    • EditedMediaItem.Builder.setFrameRate() can now set a maximum output frame rate for video, which is particularly helpful when increasing media speed with setSpeed().
  • Inspector:
    • Breaking change: Removed FrameExtractor. Users should now depend on the new :media3-inspector-frame module and update imports to androidx.media3.inspector.frame.FrameExtractor.
  • Inspector Frame:
    • Introduced a new module for extracting and processing decoded video frames.
  • Audio:
    • Change underlying decoding library for IAMF decoder extension from libiamf to iamf_tools.
    • IAMF decoding supports binaural output either through the decoder (when using the IAMF decoder extension) or through the Android Spatializer.
    • Correctly remove support for AC4Profile22 and other legacy profiles when assessing AC-4 decoder support in Automotive scenarios (#2609).
    • Improve the retry logic of AudioOutput initialization in DefaultAudioSink (#2905).
  • Text:
    • VobSub: Use START and STOP SPU control commands to derive cue duration instead of always defaulting to 5s (#2935).
  • Effect:
    • Moved LottieOverlay to a new :media3-effect-lottie module (which also involved renaming it from androidx.media3.effect.LottieOverlay to androidx.media3.effect.lottie.LottieOverlay).
  • Effect Lottie:
    • Introduced a new :media3-effect-lottie module which provides functionality for applying lottie effects to video frames.
  • IMA extension:
    • Update the IMA SDK version to 3.39.0 in order to have access to the latest Ad media info API.
    • 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 media info provided by IMA.
    • Added setEnableCustomTabs to ImaAdsLoader and ImaServerSideAdInsertionMediaSource, allowing users to control whether ad click-through URLs are launched using Custom Tabs.
    • Add the ImaAdTagUriBuilder, a class that offers an alternative way to construct an adTagUri. It contains the setPreferredLinearOrientation API. This is an API in alpha testing that will allow you to set your preferred orientation for linear ads. If you wish to join the alpha testing group, please reach out to your account partner.
  • Session:
    • Fix bug where large arrays in MediaMetadata.artworkData can crash the app.
    • Use type int for @Player.Command argument in the ActionFactory interface (#2933).
    • Make MediaSessionService and MediaLibraryService a LifecycleService, more easily allowing to attach lifecycle-aware operations to the service's lifecycle (#187).
    • Stop supporting device volume change commands from MediaController and MediaBrowser for local playbacks. Apps should not change the local device volume, and if required, can use AudioManager APIs for this purpose.
    • Detect stale Intent instances that started the service as a foreground service. This prevents a ForegroundServiceDidNotStartInTimeException being thrown by the system. This is a breaking change on an unstable API for apps implementing a custom MediaNotification.Provider as there is a new required method.
    • Add builders for PendingIntent instances to be used with home screen widgets (#2933).
    • Add static methods for creating Intent instances for Compose-based home screen widgets (#2933).
    • Fix bug where the media item transition wasn't reported to controllers when playback transitioned from a given media item index to another with the same media item for discontinuity reason AUTO and SEEK (#2997).
  • UI:
    • Add PlaybackSpeedControl Composable to media3-ui-compose for displaying and modifying playback speed.
    • Add PlaybackSpeedToggleButton Composable to media3-ui-compose-material3 for controlling playback speed.
    • Add ProgressSlider Composable to media3-ui-compose-material3 for displaying player progress and performing seeks using dragging and tapping (#2288).
    • Avoid large offscreen buffer in animating PlayerControlView.
  • HLS extension:
    • Support X-PLAYOUT-LIMIT with HLS interstitials (#2484).
    • Support the QUERYPARAM attribute with #EXT-X-DEFINE (#1854).
    • Optimize HLS playlist parsing by caching regex Matchers (#3008).
  • Cast extension:
    • Add RemoteCastPlayer.Builder#setTrackSelector method that enables the implementation of track selection for Cast playbacks.
  • Remove deprecated symbols:
    • Removed ExperimentalFrameExtractor. Use androidx.media3.inspector.frame.FrameExtractor instead.
    • Removed ChannelMixingMatrix.create(). Use ChannelMixingMatrix.createForConstantGain() instead.

Don't miss a new media release

NewReleases is sending notifications on new releases.