You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
The key has expired.
Core library:
Sleep and retry when creating a MediaCodec instance fails. This works around an issue that occurs on some devices when switching a surface from a secure codec to another codec (#8696).
Add MediaCodecAdapter.getMetrics() to allow users obtain metrics data from MediaCodec (#9766).
Disable automatic speed adjustment for live streams that neither have low-latency features nor a user request setting the speed (#9329).
Rename DecoderCounters#inputBufferCount to queuedInputBufferCount.
Make SimpleExoPlayer.renderers private. Renderers can be accessed via ExoPlayer.getRenderer.
Updated some AnalyticsListener.EventFlags constant values to match values in Player.EventFlags.
Split AnalyticsCollector into an interface and default implementation to allow it to be stripped by R8 if an app doesn't need it.
Track selection:
Support preferred video role flags in track selection (#9402).
Update video track selection logic to take preferred MIME types and role flags into account when selecting multiple video tracks for adaptation (#9519).
Update video and audio track selection logic to only choose formats for adaptive selections that have the same level of decoder and hardware support (#9565).
Update video track selection logic to prefer more efficient codecs if multiple codecs are supported by primary, hardware-accelerated decoders (#4835).
Prefer audio content preferences (for example, the "default" audio track or a track matching the system locale language) over technical track selection constraints (for example, preferred MIME type, or maximum channel count).
Prohibit duplicate TrackGroups in a TrackGroupArray. TrackGroups can always be made distinguishable by setting an id in the TrackGroup constructor. This fixes a crash when resuming playback after backgrounding the app with an active track override
(#9718).
Amend logic in AdaptiveTrackSelection to allow a quality increase under sufficient network bandwidth even if playback is very close to the
live edge (#9784).
Video:
Fix decoder fallback logic for Dolby Vision to use a compatible H264/H265 decoder if needed.
Audio:
Fix decoder fallback logic for Dolby Atmos (E-AC3-JOC) to use a compatible E-AC3 decoder if needed.
Change AudioCapabilities APIs to require passing explicitly AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES instead of null.
Allow customization of the AudioTrack buffer size calculation by injecting an AudioTrackBufferSizeProvider to DefaultAudioSink (#8891).
Retry AudioTrack creation if the requested buffer size was > 1MB (#9712).
Extractors:
Fix incorrect parsing of H.265 SPS NAL units (#9719).
Parse Vorbis Comments (including METADATA_BLOCK_PICTURE) in Ogg Opus and Ogg Vorbis files.
Text:
Add a MediaItem.SubtitleConfiguration.id field which is propagated to the Format.id field of the subtitle track created from the configuration (#9673).
Add basic support for WebVTT subtitles in Matroska containers (#9886).
Prevent Cea708Decoder from reading more than the declared size of a service block.
DRM:
Remove playbackLooper from DrmSessionManager.(pre)acquireSession. When a DrmSessionManager is used by an app in a custom MediaSource, the playbackLooper needs to be passed to DrmSessionManager.setPlayer instead.
Use chunkless preparation by default to improve start up time. If your renditions contain muxed closed-caption tracks that are not declared in the master playlist, you should add them to the master playlist to be available for playback, or turn off chunkless preparation with HlsMediaSource.Factory.setAllowChunklessPreparation(false).
Support key-frame accurate seeking in HLS (#2882).
Correctly populate Format.label for audio only HLS streams (#9608).
RTSP:
Provide a client API to override the SocketFactory used for any server connection (#9606).
Prefer DIGEST authentication method over BASIC if both are present (#9800).
Handle when RTSP track timing is not available (#9775).
TransformationException is now used to describe errors that occur during a transformation.
Add TransformationRequest for specifying the transformation options.
Allow multiple listeners to be registered.
Fix Transformer being stuck when the codec output is partially read.
Fix potential NPE in Transformer.getProgress when releasing the muxer throws.
Add a demo app for applying transformations.
The transformer module is no longer included by depending on com.google.android.exoplayer:exoplayer. To continue using transformer, add an additional dependency on com.google.android.exoplayer:exoplayer-transformer.
MediaSession extension:
By default, MediaSessionConnector now clears the playlist on stop. Apps that want the playlist to be retained can call setClearMediaItemsOnStop(false) on the connector.
Cast extension:
Fix bug that prevented CastPlayer from calling onIsPlayingChanged correctly (#9792).
Support audio metadata including artwork with DefaultMediaItemConverter (#9663).
FFmpeg extension:
Make build_ffmpeg.sh depend on LLVM's bin utils instead of GNU's (#9933).
Android 12 compatibility:
Upgrade the Cast extension to depend on com.google.android.gms:play-services-cast-framework:20.1.0. Earlier versions of play-services-cast-framework are not compatible with apps targeting Android 12, and will crash with an IllegalArgumentException when creating PendingIntents (#9528).
Remove deprecated symbols:
Remove Player.EventListener. Use Player.Listener instead.
Remove MediaSourceFactory#setDrmSessionManager, MediaSourceFactory#setDrmHttpDataSourceFactory, and MediaSourceFactory#setDrmUserAgent. Use MediaSourceFactory#setDrmSessionManagerProvider instead.
Remove MediaSourceFactory#setStreamKeys. Use MediaItem.Builder#setStreamKeys instead.
Remove MediaSourceFactory#createMediaSource(Uri). Use MediaSourceFactory#createMediaSource(MediaItem) instead.
Remove setTag from DashMediaSource, HlsMediaSource and SsMediaSource. Use MediaItem.Builder#setTag instead.
Remove DashMediaSource#setLivePresentationDelayMs(long, boolean). Use MediaItem.Builder#setLiveConfiguration and MediaItem.LiveConfiguration.Builder#setTargetOffsetMs to override the manifest, or DashMediaSource#setFallbackTargetLiveOffsetMs to provide a fallback value.
Remove (Simple)ExoPlayer.setThrowsWhenUsingWrongThread. Opting out of the thread enforcement is no longer possible.
Remove ActionFile and ActionFileUpgradeUtil. Use ExoPlayer 2.16.1 or before to use ActionFileUpgradeUtil to merge legacy action files into DefaultDownloadIndex.
Remove ProgressiveMediaSource#setExtractorsFactory. Use ProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory) constructor instead.
Remove ProgressiveMediaSource.Factory#setTag and, ProgressiveMediaSource.Factory#setCustomCacheKey. Use MediaItem.Builder#setTag and MediaItem.Builder#setCustomCacheKey instead.
Remove DefaultRenderersFactory(Context, @ExtensionRendererMode int) and DefaultRenderersFactory(Context, @ExtensionRendererMode int, long) constructors. Use the DefaultRenderersFactory(Context) constructor, DefaultRenderersFactory#setExtensionRendererMode, and DefaultRenderersFactory#setAllowedVideoJoiningTimeMs instead.
Remove all public CronetDataSource constructors. Use CronetDataSource.Factory instead.
Change the following IntDefs to @Target(TYPE_USE) only. This may break the compilation of usages in Kotlin, which can be fixed by moving the annotation to annotate the type (Int).
@AacAudioObjectType
@Ac3Util.SyncFrameInfo.StreamType
@AdLoadException.Type
@AdtsExtractor.Flags
@AmrExtractor.Flags
@AspectRatioFrameLayout.ResizeMode
@AudioFocusManager.PlayerCommand
@AudioSink.SinkFormatSupport
@BinarySearchSeeker.TimestampSearchResult.Type
@BufferReplacementMode
@C.BufferFlags
@C.ColorRange
@C.ColorSpace
@C.ColorTransfer
@C.CryptoMode
@C.Encoding
@C.PcmEncoding
@C.Projection
@C.SelectionReason
@C.StereoMode
@C.VideoOutputMode
@CacheDataSource.Flags
@CaptionStyleCompat.EdgeType
@DataSpec.Flags
@DataSpec.HttpMethods
@DecoderDiscardReasons
@DecoderReuseResult
@DefaultAudioSink.OutputMode
@DefaultDrmSessionManager.Mode
@DefaultTrackSelector.SelectionEligibility
@DefaultTsPayloadReaderFactory.Flags
@EGLSurfaceTexture.SecureMode
@EbmlProcessor.ElementType
@ExoMediaDrm.KeyRequest.RequestType
@ExtensionRendererMode
@Extractor.ReadResult
@FileTypes.Type
@FlacExtractor.Flags (in com.google.android.exoplayer2.ext.flac package)
@FlacExtractor.Flags (in com.google.android.exoplayer2.extractor.flac package)