Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
90fc24c9
authored
May 10, 2021
by
olly
Committed by
Oliver Woodman
May 10, 2021
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Bump version to 2.14.0 and tidy release notes
PiperOrigin-RevId: 372910834
parent
207825fb
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
130 additions
and
127 deletions
RELEASENOTES.md
constants.gradle
library/common/src/main/java/com/google/android/exoplayer2/ExoPlayerLibraryInfo.java
RELEASENOTES.md
View file @
90fc24c9
...
...
@@ -2,38 +2,62 @@
### dev-v2 (not yet released)
*
Remove deprecated symbols:
*
Remove
`PlaybackPreparer`
. UI components that previously had
`setPlaybackPreparer`
methods will now call
`Player.prepare`
by default.
If this behavior is sufficient, use of
`PlaybackPreparer`
can be removed
from application code without replacement. For custom preparation logic,
replace calls to
`setPlaybackPreparer`
with calls to
`setControlDispatcher`
on the same components, passing a
`ControlDispatcher`
that implements custom preparation logic in
`dispatchPrepare`
. Extend
`DefaultControlDispatcher`
to avoid having to
implement the other
`ControlDispatcher`
methods.
*
Remove
`setRewindIncrementMs`
and
`setFastForwardIncrementMs`
from UI
components. Use
`setControlDispatcher`
on the same components, passing a
`DefaultControlDispatcher`
built using
`DefaultControlDispatcher(long,
long)`
.
*
Remove
`PlayerNotificationManager`
constructors and
`createWith`
methods. Use
`PlayerNotificationManager.Builder`
instead.
*
Remove
`PlayerNotificationManager.setNotificationListener`
. Use
`PlayerNotificationManager.Builder.setNotificationListener`
instead.
*
Remove
`PlayerNotificationManager`
`setUseNavigationActions`
and
`setUseNavigationActionsInCompactView`
. Use
`setUseNextAction`
,
`setUsePreviousAction`
,
`setUseNextActionInCompactView`
and
`setUsePreviousActionInCompactView`
instead.
*
Remove
`Format.create`
methods. Use
`Format.Builder`
instead.
*
Remove
`CastPlayer`
specific playlist manipulation methods. Use
`setMediaItems`
,
`addMediaItems`
,
`removeMediaItem`
and
`moveMediaItem`
instead.
### 2.14.0 (2021-05-13)
*
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/metadata components
have been added to
`Player`
. Support can be queried using
`Player.isCommandAvailable`
instead of testing for component nullness.
*
Add position info of the old and the new position as arguments to
`EventListener.onPositionDiscontinuity`
. Add the new reasons
`DISCONTINUITY_REASON_SKIP`
and
`DISCONTINUITY_REASON_REMOVE`
and rename
*
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. Deprecate the
`onPositionDiscontinuity(int)`
callback
`DISCONTINUITY_REASON_AD_INSERTION`
, for which
`DISCONTINUITY_REASON_AUTO_TRANSITION`
is used instead
(
[
#6163
](
https://github.com/google/ExoPlayer/issues/6163
)
,
[
#4768
](
https://github.com/google/ExoPlayer/issues/4768
)
).
*
Add methods
`Player.getAvailableCommands`
,
`PLayer.isCommandAvailable`
and
`EventListener.onAvailableCommandsChanged`
to query the commands
that can be executed on the player.
*
`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.
*
Move
`getRendererCount`
and
`getRendererType`
methods from
`Player`
to
*
Deprecate
`ExoPlayer.Builder`
. Use
`SimpleExoPlayer.Builder`
instead.
*
Move
`Player.getRendererCount`
and
`Player.getRendererType`
to
`ExoPlayer`
.
*
Add
`getMediaMetadata`
to
`Player`
interface.
*
Add a
`Listener`
interface to receive all player events in a single
object. Component Listeners and
`EventListener`
have been deprecated in
its favor.
*
`Player.setPlaybackParameters`
no longer accepts null, use
`PlaybackParameters.DEFAULT`
instead.
*
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
...
...
@@ -41,39 +65,25 @@
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
get notified after MediaCodec
is initialized, or they can inject a
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
in order
to allow Kotlin subclasses of
visibility to allow Kotlin subclasses of
`AdaptiveTrackSelection.Factory`
(
[
#8830
](
https://github.com/google/ExoPlayer/issues/8830
)
).
*
Added a combined and structured metadata object (
`MediaMetadata`
) to
Player, accessible through
`getMediaMetadata`
or by listening to
`EventListener.onMediaMetadataChanged`
.
*
Fix bug when transitions from content to ad periods called
`onMediaItemTransition`
by mistake.
*
Deprecate
`ExoPlayer.Builder`
. Use
`SimpleExoPlayer.Builder`
instead.
*
UI:
*
Add builder for
`PlayerNotificationManager`
.
*
Add group setting to
`PlayerNotificationManager`
.
*
Remove
`setUseSensorRotation`
from
`PlayerView`
and
`StyledPlayerView`
.
Instead, cast the view returned by
`getVideoSurfaceView`
to
`SphericalGLSurfaceView`
, and then call
`setUseSensorRotation`
on the
`SphericalGLSurfaceView`
directly.
*
Audio:
*
Report unexpected discontinuities in
`AnalyticsListener.onAudioSinkError`
(
[
#6384
](
https://github.com/google/ExoPlayer/issues/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.
*
Video:
*
Add
`Player.getVideoSize()`
to retrieve the current size of the video
stream. Add
`Listener.onVideoSizeChanged(VideoSize)`
and deprecate
`Listener.onVideoSizeChanged(int weight, int height...)`
.
*
Analytics:
*
Add
`onAudioCodecError`
and
`onVideoCodecError`
to
`AnalyticsListener`
.
*
`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.
*
RTSP:
*
Initial support for RTSP playbacks
(
[
#55
](
https://github.com/google/ExoPlayer/issues/55
)
).
*
Downloads and caching:
*
Fix
`CacheWriter`
to correctly handle cases where the request
`DataSpec`
extends beyond the end of the underlying resource. Caching will now
...
...
@@ -84,92 +94,85 @@
*
Fix
`CacheWriter`
to correctly handle
`DataSource.close`
failures, for
which it cannot be assumed that data was successfully written to the
cache.
*
Library restructuring:
*
`DebugTextViewHelper`
moved from
`ui`
package to
`util`
package.
*
Remove deprecated symbols:
*
Remove
`ExoPlayerFactory`
. Use
`SimpleExoPlayer.Builder`
instead.
*
Remove
`Player.DefaultEventListener`
. Use
`Player.EventListener`
instead.
*
Remove
`DownloadNotificationUtil`
. Use
`DownloadNotificationHelper`
instead.
*
Remove
`extension-jobdispatcher`
module. Use the
`extension-workmanager`
module instead.
*
Remove
`DefaultMediaSourceEventListener`
. Use
`MediaSourceEventListener`
instead.
*
Remove
`ExtractorMediaSource`
. Use
`ProgressiveMediaSource`
instead.
*
Remove
`NotificationUtil.createNotificationChannel(Context, String, int,
int)`
. Use
`createNotificationChannel(Context, String, int, int, int)`
instead.
*
Remove
`PlayerNotificationManager.NotificationListener`
`onNotificationStarted(int, Notification)`
and
`onNotificationCancelled(int)`
. Use
`onNotificationPosted(int,
Notification, boolean)`
and
`onNotificationCancelled(int, boolean)`
instead.
*
Remove
`PlayerNotificationManager.setNotificationListener`
. Use
`PlayerNotificationManager.Builder.setNotificationListener`
instead.
*
Remove
`DashManifest`
constructor. Use the remaining constructor with
`programInformation`
and
`serviceDescription`
set to
`null`
instead.
*
Remove
`CryptoInfo.getFrameworkCryptoInfoV16`
. Use
`CryptoInfo.getFrameworkCryptoInfo`
instead.
*
Remove
`CastPlayer`
specific playlist manipulation methods. Use
`setMediaItems`
,
`addMediaItems`
,
`removeMediaItem`
and
`moveMediaItem`
instead.
*
Remove
`PlaybackPreparer`
. UI components that previously had
`setPlaybackPreparer`
methods will now call
`Player.prepare`
by default.
If this behavior is sufficient, use of
`PlaybackPreparer`
can be removed
from application code without replacement. For custom preparation logic,
replace calls to
`setPlaybackPreparer`
with calls to
`setControlDispatcher`
on the same components, passing a
`ControlDispatcher`
that implements custom preparation logic in
`dispatchPrepare`
. Extend
`DefaultControlDispatcher`
to avoid having to
implement the other
`ControlDispatcher`
methods.
*
Remove
`setRewindIncrementMs`
and
`setFastForwardIncrementMs`
from UI
components. Use
`setControlDispatcher`
on the same components, passing a
`DefaultControlDispatcher`
built using
`DefaultControlDispatcher(long,
long)`
.
*
Remove
`PlayerNotificationManager`
constructors and
`createWith`
methods. Use
`PlayerNotificationManager.Builder`
instead.
*
Remove
`PlayerNotificationManager`
`setUseNavigationActions`
and
`setUseNavigationActionsInCompactView`
. Use
`setUseNextAction`
,
`setUsePreviousAction`
,
`setUseNextActionInCompactView`
and
`setUsePreviousActionInCompactView`
instead.
*
DRM:
*
Prepare DRM sessions (and fetch keys) ahead of the playback position
(
[
#4133
](
https://github.com/google/ExoPlayer/issues/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
)
.
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.
*
Prepare DRM sessions (and fetch keys) ahead of the playback position
(
[
#4133
](
https://github.com/google/ExoPlayer/issues/4133
)
).
*
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
](
https://github.com/google/ExoPlayer/issues/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
lines overlapping
when using
`SubtitleView.VIEW_TYPE_WEB`
.
*
Fix
overlapping lines
when using
`SubtitleView.VIEW_TYPE_WEB`
.
*
Parse SSA/ASS underline & strikethrough info in
`Style:`
lines
(
[
#8435
](
https://github.com/google/ExoPlayer/issues/8435
)
).
*
Ensure TTML
`tts:textAlign`
is correctly propagated from
`<p>`
nodes to
child nodes.
*
Support TTML
`ebutts:multiRowAlign`
attributes.
*
MediaSession extension: Remove dependency to core module and rely on common
only. The
`TimelineQueueEditor`
uses a new
`MediaDescriptionConverter`
for
this purpose and does not rely on the
`ConcatenatingMediaSource`
anymore.
*
Cast extension:
*
Trigger
`onMediaItemTransition`
event for all reasons except
`MEDIA_ITEM_TRANSITION_REASON_REPEAT`
.
*
Allow the use of platform extractors through
*
Allow the use of Android platform extractors through
[
MediaParser
](
https://developer.android.com/reference/android/media/MediaParser
)
.
Only supported on API 30+.
*
You can use
it for progressive media by passing a
`MediaParserExtractorAdapter.FACTORY`
when creating
the
*
You can use
platform extractors for progressive media by passing
`MediaParserExtractorAdapter.FACTORY`
when creating
a
`ProgressiveMediaSource.Factory`
.
*
You can use
it for HLS by passing a
`MediaParserHlsMediaChunkExtractor.FACTORY`
when creating
the
*
You can use
platform extractors for HLS by passing
`MediaParserHlsMediaChunkExtractor.FACTORY`
when creating
a
`HlsMediaSource.Factory`
.
*
You can use it for DASH by passing a
`DefaultDashChunkSource`
which
depends on
`MediaParserChunkExtractor.FACTORY`
when creating the
`DashMediaSource.Factory`
.
*
We don't currently support using platform extractors with
SmoothStreaming.
*
RTSP
*
Release the initial version of ExoPlayer's RTSP support.
*
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`
.
*
MediaSession extension:
*
Remove dependency on
`exoplayer-core`
, relying only
`exoplayer-common`
instead. To achieve this,
`TimelineQueueEditor`
uses a new
`MediaDescriptionConverter`
interface, and no longer relies on
`ConcatenatingMediaSource`
.
*
Remove deprecated symbols:
*
Remove
`ExoPlayerFactory`
. Use
`SimpleExoPlayer.Builder`
instead.
*
Remove
`Player.DefaultEventListener`
. Use
`Player.Listener`
instead.
*
Remove
`ExtractorMediaSource`
. Use
`ProgressiveMediaSource`
instead.
*
Remove
`DefaultMediaSourceEventListener`
. Use
`MediaSourceEventListener`
instead.
*
Remove
`DashManifest`
constructor. Use the remaining constructor with
`programInformation`
and
`serviceDescription`
set to
`null`
instead.
*
Remove
`CryptoInfo.getFrameworkCryptoInfoV16`
. Use
`CryptoInfo.getFrameworkCryptoInfo`
instead.
*
Remove
`NotificationUtil.createNotificationChannel(Context, String, int,
int)`
. Use
`createNotificationChannel(Context, String, int, int, int)`
instead.
*
Remove
`PlayerNotificationManager.setNotificationListener`
. Use
`PlayerNotificationManager.Builder.setNotificationListener`
instead.
*
Remove
`PlayerNotificationManager.NotificationListener`
`onNotificationStarted(int, Notification)`
and
`onNotificationCancelled(int)`
. Use
`onNotificationPosted(int,
Notification, boolean)`
and
`onNotificationCancelled(int, boolean)`
instead.
*
Remove
`DownloadNotificationUtil`
. Use
`DownloadNotificationHelper`
instead.
*
Remove
`extension-jobdispatcher`
module. Use the
`extension-workmanager`
module instead.
### 2.13.3 (2021-04-14)
...
...
constants.gradle
View file @
90fc24c9
...
...
@@ -13,8 +13,8 @@
// limitations under the License.
project
.
ext
{
// ExoPlayer version and version code.
releaseVersion
=
'2.1
3.3
'
releaseVersionCode
=
201
3003
releaseVersion
=
'2.1
4.0
'
releaseVersionCode
=
201
4000
minSdkVersion
=
16
appTargetSdkVersion
=
29
targetSdkVersion
=
28
// TODO: Bump once b/143232359 is resolved. Also fix TODOs in UtilTest.
...
...
library/common/src/main/java/com/google/android/exoplayer2/ExoPlayerLibraryInfo.java
View file @
90fc24c9
...
...
@@ -28,11 +28,11 @@ public final class ExoPlayerLibraryInfo {
/** The version of the library expressed as a string, for example "1.2.3". */
// Intentionally hardcoded. Do not derive from other constants (e.g. VERSION_INT) or vice versa.
public
static
final
String
VERSION
=
"2.1
3.3
"
;
public
static
final
String
VERSION
=
"2.1
4.0
"
;
/** The version of the library expressed as {@code "ExoPlayerLib/" + VERSION}. */
// Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa.
public
static
final
String
VERSION_SLASHY
=
"ExoPlayerLib/2.1
3.3
"
;
public
static
final
String
VERSION_SLASHY
=
"ExoPlayerLib/2.1
4.0
"
;
/**
* The version of the library expressed as an integer, for example 1002003.
...
...
@@ -42,7 +42,7 @@ public final class ExoPlayerLibraryInfo {
* integer version 123045006 (123-045-006).
*/
// Intentionally hardcoded. Do not derive from other constants (e.g. VERSION) or vice versa.
public
static
final
int
VERSION_INT
=
201
3003
;
public
static
final
int
VERSION_INT
=
201
4000
;
/**
* The default user agent for requests made by the library.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment