Update MediaItem.Builder javadoc to discourage calling setters that will be (currently) ignored if another setter is not also called.
Extractors:
Add support for MPEG-H 3D Audio in MP4 extractors (#8860).
Video:
Fix bug that could cause CodecException: Error 0xffffffff to be thrown from MediaCodec.native_setSurface in use cases that involve both swapping the output Surface and a mixture of secure and non-secure content being played (#8776).
HLS:
Use the PRECISE attribute in EXT-X-START to select the default start position.
Fix a bug where skipping into spliced-in chunks triggered an assertion error (#8937).
DRM:
Keep secure MediaCodec instances initialized when disabling (but not resetting) MediaCodecRenderer. This helps re-use secure decoders in more contexts, which avoids the 'black flash' caused by detaching a Surface from a secure decoder on some devices (#8842). It will also result in DRM license refresh network requests while the player is stopped if Player#setForegroundMode is true.
Fix issue where offline keys were unnecessarily (and incorrectly) restored into a session before being released. This call sequence is explicitly disallowed in OEMCrypto v16.
UI:
Keep subtitle language features embedded (e.g. rubies & tate-chu-yoko) in Cue.text even when SubtitleView#setApplyEmbeddedStyles() is false.
Fix NullPointerException in StyledPlayerView that could occur after calling StyledPlayerView.setPlayer(null) (#8985).
RTSP:
Add support for RTSP basic and digest authentication (#8941).
Enable using repeat mode and playlist with RTSP (#8994).
Add RtspMediaSource.Factory option to set the RTSP user agent.
Add RtspMediaSource.Factory option to force using TCP for streaming.
GL demo app:
Fix texture transformation to avoid green bars shown on some videos (#8992).
r2.14.0
Core Library:
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.
Update MediaItem.Builder javadoc to discourage calling setters that
will be (currently) ignored if another setter is not also called.
Extractors:
Add support for MPEG-H 3D Audio in MP4 extractors
(#8860).
Video:
Fix bug that could cause CodecException: Error 0xffffffff to be thrown
from MediaCodec.native_setSurface in use cases that involve both
swapping the output Surface and a mixture of secure and non-secure
content being played
(#8776).
HLS:
Use the PRECISE attribute in EXT-X-START to select the default start
position.
Fix a bug where skipping into spliced-in chunks triggered an assertion
error (#8937).
DRM:
Keep secure MediaCodec instances initialized when disabling (but not
resetting) MediaCodecRenderer. This helps re-use secure decoders in
more contexts, which avoids the 'black flash' caused by detaching a
Surface from a secure decoder on some devices
(#8842). It will also
result in DRM license refresh network requests while the player is
stopped if Player#setForegroundMode is true.
Fix issue where offline keys were unnecessarily (and incorrectly)
restored into a session before being released. This call sequence is
explicitly disallowed in OEMCrypto v16.
UI:
Keep subtitle language features embedded (e.g. rubies & tate-chu-yoko)
in Cue.text even when SubtitleView#setApplyEmbeddedStyles() is
false.
Fix NullPointerException in StyledPlayerView that could occur after
calling StyledPlayerView.setPlayer(null)
(#8985).
RTSP:
Add support for RTSP basic and digest authentication
(#8941).
Enable using repeat mode and playlist with RTSP
(#8994).
Add RtspMediaSource.Factory option to set the RTSP user agent.
Add RtspMediaSource.Factory option to force using TCP for streaming.
GL demo app:
Fix texture transformation to avoid green bars shown on some videos
(#8992).
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.1.
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)