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
e5ec8e6b
authored
Jun 09, 2020
by
olly
Committed by
Oliver Woodman
Jun 17, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Prevent shutter closing for within-window seeks to unprepared periods
Issue: #5507 PiperOrigin-RevId: 315512207
parent
80f4197e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
0 deletions
RELEASENOTES.md
library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java
RELEASENOTES.md
View file @
e5ec8e6b
# Release notes #
### 2.11.6 (not yet released) ###
*
UI: Prevent
`PlayerView`
from temporarily hiding the video surface when
seeking to an unprepared period within the current window. For example when
seeking over an ad group, or to the next period in a multi-period DASH
stream (
[
#5507
](
https://github.com/google/ExoPlayer/issues/5507
)
).
### 2.11.5 (2020-06-05) ###
*
Improve the smoothness of video playback immediately after starting, seeking
...
...
library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerView.java
View file @
e5ec8e6b
...
...
@@ -48,6 +48,8 @@ import com.google.android.exoplayer2.ExoPlaybackException;
import
com.google.android.exoplayer2.PlaybackPreparer
;
import
com.google.android.exoplayer2.Player
;
import
com.google.android.exoplayer2.Player.DiscontinuityReason
;
import
com.google.android.exoplayer2.Timeline
;
import
com.google.android.exoplayer2.Timeline.Period
;
import
com.google.android.exoplayer2.metadata.Metadata
;
import
com.google.android.exoplayer2.metadata.flac.PictureFrame
;
import
com.google.android.exoplayer2.metadata.id3.ApicFrame
;
...
...
@@ -1506,6 +1508,13 @@ public class PlayerView extends FrameLayout implements AdsLoader.AdViewProvider
SingleTapListener
,
PlayerControlView
.
VisibilityListener
{
private
final
Period
period
;
private
@Nullable
Object
lastPeriodUidWithTracks
;
public
ComponentListener
()
{
period
=
new
Period
();
}
// TextOutput implementation
@Override
...
...
@@ -1554,6 +1563,29 @@ public class PlayerView extends FrameLayout implements AdsLoader.AdViewProvider
@Override
public
void
onTracksChanged
(
TrackGroupArray
tracks
,
TrackSelectionArray
selections
)
{
// Suppress the update if transitioning to an unprepared period within the same window. This
// is necessary to avoid closing the shutter when such a transition occurs. See:
// https://github.com/google/ExoPlayer/issues/5507.
Player
player
=
Assertions
.
checkNotNull
(
PlayerView
.
this
.
player
);
Timeline
timeline
=
player
.
getCurrentTimeline
();
if
(
timeline
.
isEmpty
())
{
lastPeriodUidWithTracks
=
null
;
}
else
if
(!
player
.
getCurrentTrackGroups
().
isEmpty
())
{
lastPeriodUidWithTracks
=
timeline
.
getPeriod
(
player
.
getCurrentPeriodIndex
(),
period
,
/* setIds= */
true
).
uid
;
}
else
if
(
lastPeriodUidWithTracks
!=
null
)
{
int
lastPeriodIndexWithTracks
=
timeline
.
getIndexOfPeriod
(
lastPeriodUidWithTracks
);
if
(
lastPeriodIndexWithTracks
!=
C
.
INDEX_UNSET
)
{
int
lastWindowIndexWithTracks
=
timeline
.
getPeriod
(
lastPeriodIndexWithTracks
,
period
).
windowIndex
;
if
(
player
.
getCurrentWindowIndex
()
==
lastWindowIndexWithTracks
)
{
// We're in the same window. Suppress the update.
return
;
}
}
lastPeriodUidWithTracks
=
null
;
}
updateForCurrentTrackSelections
(
/* isNewPlayer= */
false
);
}
...
...
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