Skip to content

2024-12-20

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 21 Dec 18:40
· 1 commit to main since this release

Media3: v1.6.0-alpha01

December 20, 2024

androidx.media3:media3-*:1.6.0-alpha01 is released. Version 1.6.0-alpha01 contains these commits.

  • Common Library:
    • Remove Format.toBundle(boolean excludeMetadata) method, use Format.toBundle() instead.
    • Add AudioManagerCompat and AudioFocusRequestCompat to replace the equivalent classes in androidx.media.
  • ExoPlayer:
    • 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).
    • Reduce default values for bufferForPlaybackMs and bufferForPlaybackAfterRebufferMs in DefaultLoadControl to 1000 and 2000 ms respectively.
    • Add MediaExtractorCompat, a new class that provides equivalent features to platform MediaExtractor.
    • 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.
  • Transformer:
    • Update parameters of VideoFrameProcessor.registerInputStream and VideoFrameProcessor.Listener.onInputStreamRegistered to use Format.
    • Add support for transmuxing into alternative backward compatible formats.
    • Generate HDR static metadata when using DefaultEncoderFactory.
  • 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.
  • Audio:
    • Fix onAudioPositionAdvancing to be called when playback resumes (previously it was called when playback was paused).
  • Video:
    • Fix MediaCodecVideoRenderer such that when without a Surface, the renderer skips just-early frames only if the VideoFrameReleaseControl.getFrameReleaseAction is not FRAME_RELEASE_TRY_AGAIN_LATER.
  • Text:
    • Stop eagerly loading all subtitle files configured with MediaItem.Builder.setSubtitleConfigurations, and instead only load one if it is selected by track selection (#1721).
  • Effect:
    • Moved the functionality of OverlaySettings into StaticOverlaySettings. OverlaySettings can be subclassed to allow dynamic overlay settings.
  • Muxers:
    • Moved MuxerException out of Muxer interface to avoid a very long fully qualified name.
  • Session:
    • Add 'Context' as a parameter to 'MediaButtonReceiver.shouldStartForegroundService` (#1887).
  • UI:
    • Add PlayerSurface Composable to media3-ui-compose module.
    • Add PlayPauseButtonState, NextButtonState, PreviousButtonState, RepeatButtonState, ShuffleButtonState classes and the corresponding rememberPlayPauseButtonState, rememberNextButtonState, rememberPreviousButtonState, rememberRepeatButtonState, rememberShuffleButtonState composables to media3-ui-compose module.
  • HLS Extension:
    • Add a first version of HlsInterstitialsAdsLoader. The ads loader reads the HLS interstitials of an HLS media playlist and maps them to the AdPlaybackState that is passed to the AdsMediaSource. This initial version only supports HLS VOD streams with X-ASSET-URI attributes.
    • Add HlsInterstitialsAdsLoader.AdsMediaSourceFactory. Apps can use it to create AdsMediaSource instances that use an HlsInterstitialsAdsLoader in a convenient and safe way.
  • DASH Extension:
    • Add AC-4 Level-4 format support for DASH (#1898).
  • Decoder Extensions (FFmpeg, VP9, AV1, etc.):
    • Add the MPEG-H decoder module which uses the native MPEG-H decoder module to decode MPEG-H audio (#1826).
  • Demo app:
    • Add MinimalControls (PlayPauseButton, NextButton, PreviousButton) and ExtraControls (RepeatButton, ShuffleButton) Composable UI elements to demo-compose utilizing PlayPauseButtonState, NextButtonState, PreviousButtonState, RepeatButtonState, ShuffleButtonState.
  • Remove deprecated symbols:
    • Remove deprecated AudioMixer.create() method. Use DefaultAudioMixer.Factory().create() instead.
    • Remove the following deprecated Transformer.Builder methods:
      • setTransformationRequest(), use setAudioMimeType(), setVideoMimeType(), and setHdrMode() instead.
      • setAudioProcessors(), set the audio processor in an EditedMediaItem.Builder.setEffects(), and pass it to Transformer.start() instead.
      • setVideoEffects(), set video effect in an EditedMediaItem.Builder.setEffects(), and pass it to Transformer.start() instead.
      • setRemoveAudio(), use EditedMediaItem.Builder.setRemoveAudio() to remove the audio from the EditedMediaItem passed to Transformer.start() instead.
      • setRemoveVideo(), use EditedMediaItem.Builder.setRemoveVideo() to remove the video from the EditedMediaItem passed to Transformer.start() instead.
      • setFlattenForSlowMotion(), use EditedMediaItem.Builder.setFlattenForSlowMotion() to flatten the EditedMediaItem passed to Transformer.start() instead.
      • setListener(), use addListener(), removeListener() or removeAllListeners() instead.
    • Remove the following deprecated Transformer.Listener methods:
      • onTransformationCompleted(MediaItem), use onCompleted(Composition, ExportResult) instead.
      • onTransformationCompleted(MediaItem, TransformationResult), use onCompleted(Composition, ExportResult) instead.
      • onTransformationError(MediaItem, Exception), use onError(Composition, ExportResult, ExportException) instead.
      • onTransformationError(MediaItem, TransformationException), use onError(Composition, ExportResult, ExportException) instead.
      • onTransformationError(MediaItem, TransformationResult, TransformationException), use onError(Composition, ExportResult, ExportException) instead.
      • onFallbackApplied(MediaItem, TransformationRequest, TransformationRequest), use onFallbackApplied(Composition, TransformationRequest, TransformationRequest) instead.
    • Remove deprecated TransformationResult class. Use ExportResult instead.
    • Remove deprecated TransformationException class. Use ExportException instead.
    • Remove deprecated Transformer.PROGRESS_STATE_NO_TRANSFORMATION. Use Transformer.PROGRESS_STATE_NOT_STARTED instead.
    • Remove deprecated Transformer.setListener(). Use Transformer.addListener(), Transformer.removeListener() or Transformer.removeAllListeners() instead.
    • Remove deprecated Transformer.startTransformation(). Use Transformer.start(MediaItem, String) instead.
    • Remove deprecated SingleFrameGlShaderProgram. Use BaseGlShaderProgram instead.
    • Remove Transformer.flattenForSlowMotion. Use EditedMediaItem.flattenForSlowMotion instead.