github androidx/media 1.3.0-alpha01

latest releases: 1.8.0, 1.8.0-rc02, 1.8.0-rc01...
pre-release20 months ago

This release includes the following changes since the 1.2.1 release:

  • Common Library:
    • Implement support for android.resource://package/[type/]name raw resource URIs where package is different to the package of the current application. This has always been documented to work, but wasn't correctly implemented until now.
    • Normalize MIME types set by app code or read from media to be fully lower-case.
    • Define ads with a full MediaItem instead of a single Uri in AdPlaybackState.
    • Increase minSdk to 19 (Android KitKat). This is aligned with all other AndroidX libraries, and is required for us to upgrade to the latest versions of our AndroidX dependencies.
  • ExoPlayer:
    • Add PreloadMediaSource and PreloadMediaPeriod that allows apps to preload a content media source at a specific start position before playback. PreloadMediaSource takes care of preparing the content media source to receive the Timeline, preparing and caching the period at the given start position, selecting tracks and loading media data for the period. Apps control the preload progress by implementing PreloadMediaSource.PreloadControl and set the preloaded source to the player for playback.
    • Add ExoPlayer.setImageOutput that allows apps to set ImageRenderer.ImageOutput.
    • DefaultRenderersFactory now provides an ImageRenderer to the player by default with null ImageOutput and ImageDecoder.Factory.DEFAULT.
    • Emit Player.Listener.onPositionDiscontinuity event when silence is skipped (#765).
    • Add experimental support for parsing subtitles during extraction. You can enable this using MediaSource.Factory.experimentalParseSubtitlesDuringExtraction().
    • Support adaptive media sources with PreloadMediaSource.
    • Implement HttpEngineDataSource, an HttpDataSource using the HttpEngine API.
  • Transformer:
    • Add support for flattening H.265/HEVC SEF slow motion videos.
    • Increase transmuxing speed, especially for 'remove video' edits.
    • Add API to ensure that the output file starts on a video frame. This can make the output of trimming operations more compatible with player implementations that don't show the first video frame until its presentation timestamp (#829).
  • Track Selection:
    • Add DefaultTrackSelector.selectImageTrack to enable image track selection.
    • Add TrackSelectionParameters.isPrioritizeImageOverVideoEnabled to determine whether to select an image track if both an image track and a video track are available. The default value is false which means selecting a video track is prioritized.
  • Extractors:
    • Add additional AV1C parsing to MP4 extractor to retrieve ColorInfo.colorSpace, ColorInfo.colorTransfer, and ColorInfo.colorRange values (#692).
  • Video:
    • Change the MediaCodecVideoRenderer constructor that takes a VideoFrameProcessor.Factory argument and replace it with a constructor that takes a VideoSinkProvider argument. Apps that want to inject a custom VideoFrameProcessor.Factory can instantiate a CompositingVideoSinkProvider that uses the custom VideoFrameProcessor.Factory and pass the video sink provider to MediaCodecVideoRenderer.
  • Text:
    • Fix serialization of bitmap cues to resolve Tried to marshall a Parcel that contained Binder objects error when using DefaultExtractorsFactory.setTextTrackTranscodingEnabled (#836).
    • CEA-708: Ignore rowLock value. The CEA-708-E S-2023 spec states that rowLock and columnLock should both be assumed to be true, regardless of the values present in the stream (columnLock support is not implemented, so it's effectively assumed to always be false).
  • DRM:
  • IMA extension:
    • Fix issue where DASH and HLS ads without the appropriate file extension can't be played.
  • HLS Extension:
    • Reduce HlsMediaPeriod to package-private visibility. This type shouldn't be directly depended on from outside the HLS package.
  • Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
    • MIDI decoder: Ignore SysEx event messages (#710).
  • Test Utilities:
    • Don't pause playback in TestPlayerRunHelper.playUntilPosition. The test keeps the playback in a playing state, but suspends progress until the test is able to add assertions and further actions.
  • Demo app:
    • Add a shortform demo module to demo the usage of PreloadMediaSource with the short-form content use case.

Don't miss a new media release

NewReleases is sending notifications on new releases.