github androidx/media 1.8.0-beta01

latest releases: 1.9.0-alpha01, 1.8.0, 1.8.0-rc02...
pre-release4 months ago

This release includes the following changes since the 1.8.0-alpha01 release:

  • Common Library:
    • Add support for replacing the player in ForwardingSimpleBasePlayer.
  • ExoPlayer:
    • 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.
  • 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.
  • Extractors:
    • 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).
  • Audio:
    • 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().
  • Video:
    • 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).
  • Text:
    • Fix a playback stall when a subtitle segment initially fails to load and later loads successfully, followed by several empty subtitle segments (#2517).
  • 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).
  • Muxers:
    • Fix a bug where correct sample flags were not set for audio samples in fragmented MP4.
  • Session:
    • 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).
  • Cronet extension:
    • Add automatic cookie handling (#5975).
  • HLS extension:
    • 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).
  • DASH extension:
    • 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:
    • Fix RtspClient to use the location uri as provided when processing an HTTP 302 response (#2398).
  • 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.
  • 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.

Don't miss a new media release

NewReleases is sending notifications on new releases.