Skip to content

1.1.0-alpha01

Pre-release
Pre-release
Compare
Choose a tag to compare
@tof-tof tof-tof released this 10 May 19:42
· 3636 commits to release since this release
  • Core library:
    • Add suppression reason for unsuitable audio route and play when ready change reason for suppressed too long. (#15).
    • Add ExoPlayer.setVideoEffects() for using Effect during video playback.
    • Update SampleQueue to store sourceId as a long rather than an int. This changes the signatures of public methods SampleQueue.sourceId and SampleQueue.peekSourceId.
    • Add parameters to LoadControl methods shouldStartPlayback and onTracksSelected that allow associating these methods with the relevant MediaPeriod.
    • Change signature of ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>) by adding a timeline parameter that contains the periods with the UIDs used as keys in the map. This is required to avoid concurrency issues with multi-period live streams.
    • Deprecate EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs) and BaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs). The variant of the methods without the mediaTimeOffsetUs can be called instead. Note that even for the deprecated variants, the offset is not anymore added to startTimeUs and endTimeUs of the MediaLoadData objects that are dispatched by the dispatcher.
    • Rename ExoTrackSelection.blacklist to excludeTrack and isBlacklisted to isTrackExcluded.
    • Deprecate Player.COMMAND_GET_MEDIA_ITEMS_METADATA and COMMAND_SET_MEDIA_ITEMS_METADATA. Use COMMAND_GET_METADATA and COMMAND_SET_PLAYLIST_METADATA instead.
    • Add Buffer.isLastSample() that denotes if Buffer contains flag C.BUFFER_FLAG_LAST_SAMPLE.
    • Fix issue where last frame may not be rendered if the last sample with frames is dequeued without reading the 'end of stream' sample. (#11079).
    • Add Builder for DeviceInfo and deprecate existing constructor.
    • Add DeviceInfo.routingControllerId to specify the routing controller ID for remote playbacks.
    • Fix inconsistent behavior between ExoPlayer.setMediaItem(s) and addMediaItem(s) when called on an empty playlist.
  • Extractors:
    • Fix parsing of H.265 SPS in MPEG-TS files by re-using the parsing logic already used by RTSP and MP4 extractors (#303).
  • Session:
    • Deprecate 4 volume-controlling methods in Player and add overloaded methods which allow users to specify volume flags:
      • void setDeviceVolume(int, int)
      • void increaseDeviceVolume(int)
      • void decreaseDeviceVolume(int)
      • void setDeviceMuted(boolean, int)
    • Fix issue where MediaController doesn't update its available commands when connected to a legacy MediaSessionCompat that updates its actions.
    • Add helper method MediaSession.getControllerForCurrentRequest to obtain information about the controller that is currently calling aPlayer method.
    • Fix bug that prevented the MediaLibraryService from returning null for a call from System UI to Callback.onGetLibraryRoot with params.isRecent == true on API 30 (#355).
    • Fix memory leak of MediaSessionService or MediaLibraryService (#346).
  • UI:
    • Add Util methods shouldShowPlayButton and handlePlayPauseButtonAction to write custom UI elements with a play/pause button.
  • Track selection:
    • Add DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange which is disabled by default. When enabled, the DefaultTrackSelector will trigger a new track selection when the renderer capabilities changed.
  • Audio:
    • Fix bug where some playbacks fail when tunneling is enabled and AudioProcessors are active, e.g. for gapless trimming (#10847).
    • Encapsulate Opus frames in Ogg packets in direct playbacks (offload).
    • Extrapolate current position during sleep with offload scheduling.
    • Add Renderer.release() and AudioSink.release() for releasing the resources at the end of player's lifecycle.
    • Listen to audio capabilities changes in DefaultAudioSink. Add a required parameter context in the constructor of DefaultAudioSink, with which the DefaultAudioSink will register as the listener to the AudioCapabilitiesReceiver and update its audioCapabilities property when informed with a capabilities change.
    • Propagate audio capabilities changes via a new event onAudioCapabilitiesChanged in AudioSink.Listener interface, and a new interface RendererCapabilities.Listener which triggers onRendererCapabilitiesChanged events.
    • Add ChannelMixingAudioProcessor for applying scaling/mixing to audio channels.
    • Add new int value DISCARD_REASON_AUDIO_BYPASS_POSSIBLE to DecoderDiscardReasons to discard audio decoder when bypass mode is possible after audio capabilities change.
  • Metadata:
    • Deprecate MediaMetadata.folderType in favor of isBrowsable and mediaType.
  • DRM:
    • Reduce the visibility of several internal-only methods on DefaultDrmSession that aren't expected to be called from outside the DRM package:
      • void onMediaDrmEvent(int)
      • void provision()
      • void onProvisionCompleted()
      • onProvisionError(Exception, boolean)
  • Transformer:
    • Remove Transformer.Builder.setMediaSourceFactory(MediaSource.Factory). Use ExoPlayerAssetLoader.Factory(MediaSource.Factory) and Transformer.Builder.setAssetLoaderFactory(AssetLoader.Factory) instead.
    • Remove Transformer.startTransformation(MediaItem, ParcelFileDescriptor).
    • Fix a bug where transformation could get stuck (leading to muxer timeout) if the end of the video stream was signaled at the moment when an input frame was pending processing.
    • Query codecs via MediaCodecList instead of using findDecoder/EncoderForFormat utilities, to expand support.
    • Remove B-frame configuration in DefaultEncoderFactory because it doesn't work on some devices.
  • Muxer:
    • Add a new muxer library which can be used to create an MP4 container file.
  • DASH:
    • Remove the media time offset from MediaLoadData.startTimeMs and MediaLoadData.endTimeMs for multi period DASH streams.
  • RTSP:
    • For MPEG4-LATM, use default profile-level-id value if absent in Describe Response SDP message (#302).
  • IMA DAI extension:
  • Text:
    • Fix a bug where a new ad group is inserted in live streams because the calculated content position in consecutive timelines varies slightly.
    • SSA: Add support for UTF-16 files if they start with a byte order mark (#319).
  • Test Utilities:
    • Check for URI scheme case insensitivity in DataSourceContractTest.
  • Remove deprecated symbols:
    • Remove DefaultAudioSink constructors, use DefaultAudioSink.Builder instead.
    • Remove HlsMasterPlaylist, use HlsMultivariantPlaylist instead.
    • Remove Player.stop(boolean). Use Player.stop() and Player.clearMediaItems() (if reset is true) instead.