Move Player components to ExoPlayer. For example Player.VideoComponent is now ExoPlayer.VideoComponent.
The most used methods of Player's audio, video, text and metadata components have been added directly to Player.
Add Player.getAvailableCommands, Player.isCommandAvailable and Listener.onAvailableCommandsChanged to query which commands that can be executed on the player.
Add a Player.Listener interface to receive all player events. Component listeners and EventListener have been deprecated.
Add Player.getMediaMetadata, which returns a combined and structured MediaMetadata object. Changes to metadata are reported to Listener.onMediaMetadataChanged.
Player.setPlaybackParameters no longer accepts null, use PlaybackParameters.DEFAULT instead.
Report information about the old and the new playback positions to Listener.onPositionDiscontinuity. Add DISCONTINUITY_REASON_SKIP and DISCONTINUITY_REASON_REMOVE as discontinuity reasons, and rename DISCONTINUITY_REASON_PERIOD_TRANSITION to DISCONTINUITY_REASON_AUTO_TRANSITION. Remove DISCONTINUITY_REASON_AD_INSERTION, for which DISCONTINUITY_REASON_AUTO_TRANSITION is used instead (#6163, #4768).
Deprecate ExoPlayer.Builder. Use SimpleExoPlayer.Builder instead.
Move Player.getRendererCount and Player.getRendererType to ExoPlayer.
Use an empty string instead of the URI if the media ID is not explicitly set with MediaItem.Builder.setMediaId(String).
Remove MediaCodecRenderer.configureCodec() and add MediaCodecRenderer.getMediaCodecConfiguration(). The new method is called just before the MediaCodec is created and returns the parameters needed to create and configure the MediaCodec instance. Applications can override MediaCodecRenderer.onCodecInitialized() to be notified after a MediaCodec is initialized, or they can inject a custom MediaCodecAdapter.Factory if they want to control how the MediaCodec is configured.
Promote AdaptiveTrackSelection.AdaptationCheckpoint to public visibility to allow Kotlin subclasses of AdaptiveTrackSelection.Factory (#8830).
Fix bug when transitions from content to ad periods called onMediaItemTransition by mistake.
AdsLoader.AdViewProvider and AdsLoader.OverlayInfo have been renamed com.google.android.exoplayer2.ui.AdViewProvider and com.google.android.exoplayer2.ui.AdOverlayInfo respectively.
CaptionStyleCompat has been moved to the com.google.android.exoplayer2.ui package.
DebugTextViewHelper has been moved from the ui package to the util package.
Fix CacheWriter to correctly handle cases where the request DataSpec extends beyond the end of the underlying resource. Caching will now succeed in this case, with data up to the end of the resource being cached. This behaviour is enabled by default, and so the allowShortContent parameter has been removed (#7326).
Fix CacheWriter to correctly handle DataSource.close failures, for which it cannot be assumed that data was successfully written to the cache.
DRM:
Prepare DRM sessions (and fetch keys) ahead of the playback position (#4133).
Only dispatch DRM session acquire and release events once per period when playing content that uses the same encryption keys for both audio & video tracks. Previously, separate acquire and release events were dispatched for each track in each period.
Include the session state in DRM session-acquired listener methods.
UI:
Add PlayerNotificationManager.Builder, with the ability to specify which group the notification should belong to.
Remove setUseSensorRotation from PlayerView and StyledPlayerView. Instead, cast the view returned by getVideoSurfaceView to SphericalGLSurfaceView, and then call setUseSensorRotation on the SphericalGLSurfaceView directly.
Analytics:
Add onAudioCodecError and onVideoCodecError to AnalyticsListener.
Video:
Add Player.getVideoSize() to retrieve the current size of the video stream. Add Listener.onVideoSizeChanged(VideoSize) and deprecate Listener.onVideoSizeChanged(int, int, int, float).
Audio:
Report unexpected audio discontinuities to AnalyticsListener.onAudioSinkError (#6384).
Allow forcing offload for gapless content even if gapless playback is not supported.
Allow fall back from DTS-HD to DTS when playing via passthrough.
Text:
Fix overlapping lines when using SubtitleView.VIEW_TYPE_WEB.
Parse SSA/ASS underline & strikethrough info in Style: lines (#8435).
Ensure TTML tts:textAlign is correctly propagated from <p> nodes to child nodes.
Support TTML ebutts:multiRowAlign attributes.
Allow the use of Android platform extractors through MediaParser:
Supported on API 30+:
You can use platform extractors for progressive media by passing MediaParserExtractorAdapter.FACTORY when creating a ProgressiveMediaSource.Factory.
You can use platform extractors for HLS by passing MediaParserHlsMediaChunkExtractor.FACTORY when creating a HlsMediaSource.Factory.
You can use platform extractors for DASH by passing a DefaultDashChunkSource that uses MediaParserChunkExtractor.FACTORY when creating a DashMediaSource.Factory.
Cast extension:
Trigger onMediaItemTransition event for all reasons except MEDIA_ITEM_TRANSITION_REASON_REPEAT.
Move Player components to ExoPlayer. For example
Player.VideoComponent is now ExoPlayer.VideoComponent.
The most used methods of Player's audio, video, text and metadata
components have been added directly to Player.
Add Player.getAvailableCommands, Player.isCommandAvailable and
Listener.onAvailableCommandsChanged to query which commands
that can be executed on the player.
Add a Player.Listener interface to receive all player events.
Component listeners and EventListener have been deprecated.
Add Player.getMediaMetadata, which returns a combined and structured
MediaMetadata object. Changes to metadata are reported to
Listener.onMediaMetadataChanged.
Player.setPlaybackParameters no longer accepts null, use
PlaybackParameters.DEFAULT instead.
Report information about the old and the new playback positions to
Listener.onPositionDiscontinuity. Add DISCONTINUITY_REASON_SKIP
and DISCONTINUITY_REASON_REMOVE as discontinuity reasons, and rename
DISCONTINUITY_REASON_PERIOD_TRANSITION to
DISCONTINUITY_REASON_AUTO_TRANSITION. Remove
DISCONTINUITY_REASON_AD_INSERTION, for which
DISCONTINUITY_REASON_AUTO_TRANSITION is used instead
(#6163,
#4768).
Deprecate ExoPlayer.Builder. Use SimpleExoPlayer.Builder instead.
Move Player.getRendererCount and Player.getRendererType to
ExoPlayer.
Use an empty string instead of the URI if the media ID is not explicitly
set with MediaItem.Builder.setMediaId(String).
Remove MediaCodecRenderer.configureCodec() and add
MediaCodecRenderer.getMediaCodecConfiguration(). The new method is
called just before the MediaCodec is created and returns the
parameters needed to create and configure the MediaCodec instance.
Applications can override MediaCodecRenderer.onCodecInitialized() to
be notified after a MediaCodec is initialized, or they can inject a
custom MediaCodecAdapter.Factory if they want to control how the
MediaCodec is configured.
Promote AdaptiveTrackSelection.AdaptationCheckpoint to public
visibility to allow Kotlin subclasses of
AdaptiveTrackSelection.Factory
(#8830).
Fix bug when transitions from content to ad periods called
onMediaItemTransition by mistake.
AdsLoader.AdViewProvider and AdsLoader.OverlayInfo have been renamed
com.google.android.exoplayer2.ui.AdViewProvider and
com.google.android.exoplayer2.ui.AdOverlayInfo respectively.
CaptionStyleCompat has been moved to the
com.google.android.exoplayer2.ui package.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
Bumps exoplayer from r1.5.7 to 2.14.0.
Release notes
Sourced from exoplayer's releases.
... (truncated)
Changelog
Sourced from exoplayer's changelog.
... (truncated)
Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Automerge options (never/patch/minor, and dev/runtime dependencies) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)