mirror of
https://github.com/samsonjs/media.git
synced 2026-04-02 10:45:51 +00:00
Remove onSeekProcessed dependency from playback stats tracking.
The method is used to finish a brief "seeking" state that can be removed entirely now state changes for seeking are masked. PiperOrigin-RevId: 308237009
This commit is contained in:
parent
b3dc05933d
commit
4df7470da5
2 changed files with 26 additions and 45 deletions
|
|
@ -163,9 +163,8 @@ public final class PlaybackStats {
|
|||
* #PLAYBACK_STATE_JOINING_FOREGROUND}, {@link #PLAYBACK_STATE_JOINING_BACKGROUND}, {@link
|
||||
* #PLAYBACK_STATE_PLAYING}, {@link #PLAYBACK_STATE_PAUSED}, {@link #PLAYBACK_STATE_SEEKING},
|
||||
* {@link #PLAYBACK_STATE_BUFFERING}, {@link #PLAYBACK_STATE_PAUSED_BUFFERING}, {@link
|
||||
* #PLAYBACK_STATE_SEEK_BUFFERING}, {@link #PLAYBACK_STATE_SUPPRESSED}, {@link
|
||||
* #PLAYBACK_STATE_SUPPRESSED_BUFFERING}, {@link #PLAYBACK_STATE_ENDED}, {@link
|
||||
* #PLAYBACK_STATE_STOPPED}, {@link #PLAYBACK_STATE_FAILED}, {@link
|
||||
* #PLAYBACK_STATE_SUPPRESSED}, {@link #PLAYBACK_STATE_SUPPRESSED_BUFFERING}, {@link
|
||||
* #PLAYBACK_STATE_ENDED}, {@link #PLAYBACK_STATE_STOPPED}, {@link #PLAYBACK_STATE_FAILED}, {@link
|
||||
* #PLAYBACK_STATE_INTERRUPTED_BY_AD} or {@link #PLAYBACK_STATE_ABANDONED}.
|
||||
*/
|
||||
@Documented
|
||||
|
|
@ -180,7 +179,6 @@ public final class PlaybackStats {
|
|||
PLAYBACK_STATE_SEEKING,
|
||||
PLAYBACK_STATE_BUFFERING,
|
||||
PLAYBACK_STATE_PAUSED_BUFFERING,
|
||||
PLAYBACK_STATE_SEEK_BUFFERING,
|
||||
PLAYBACK_STATE_SUPPRESSED,
|
||||
PLAYBACK_STATE_SUPPRESSED_BUFFERING,
|
||||
PLAYBACK_STATE_ENDED,
|
||||
|
|
@ -206,8 +204,6 @@ public final class PlaybackStats {
|
|||
public static final int PLAYBACK_STATE_BUFFERING = 6;
|
||||
/** Playback is buffering while paused. */
|
||||
public static final int PLAYBACK_STATE_PAUSED_BUFFERING = 7;
|
||||
/** Playback is buffering after a seek. */
|
||||
public static final int PLAYBACK_STATE_SEEK_BUFFERING = 8;
|
||||
/** Playback is suppressed (e.g. due to audio focus loss). */
|
||||
public static final int PLAYBACK_STATE_SUPPRESSED = 9;
|
||||
/** Playback is suppressed (e.g. due to audio focus loss) while buffering to resume a playback. */
|
||||
|
|
@ -769,8 +765,7 @@ public final class PlaybackStats {
|
|||
* milliseconds.
|
||||
*/
|
||||
public long getTotalSeekTimeMs() {
|
||||
return getPlaybackStateDurationMs(PLAYBACK_STATE_SEEKING)
|
||||
+ getPlaybackStateDurationMs(PLAYBACK_STATE_SEEK_BUFFERING);
|
||||
return getPlaybackStateDurationMs(PLAYBACK_STATE_SEEKING);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -799,8 +794,7 @@ public final class PlaybackStats {
|
|||
public long getTotalWaitTimeMs() {
|
||||
return getPlaybackStateDurationMs(PLAYBACK_STATE_JOINING_FOREGROUND)
|
||||
+ getPlaybackStateDurationMs(PLAYBACK_STATE_BUFFERING)
|
||||
+ getPlaybackStateDurationMs(PLAYBACK_STATE_SEEKING)
|
||||
+ getPlaybackStateDurationMs(PLAYBACK_STATE_SEEK_BUFFERING);
|
||||
+ getPlaybackStateDurationMs(PLAYBACK_STATE_SEEKING);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ public final class PlaybackStatsListener
|
|||
@Player.State private int playbackState;
|
||||
private boolean isSuppressed;
|
||||
private float playbackSpeed;
|
||||
private boolean isSeeking;
|
||||
private boolean onSeekStartedCalled;
|
||||
|
||||
/**
|
||||
* Creates listener for playback stats.
|
||||
|
|
@ -170,7 +170,7 @@ public final class PlaybackStatsListener
|
|||
@Override
|
||||
public void onSessionCreated(EventTime eventTime, String session) {
|
||||
PlaybackStatsTracker tracker = new PlaybackStatsTracker(keepHistory, eventTime);
|
||||
if (isSeeking) {
|
||||
if (onSeekStartedCalled) {
|
||||
tracker.onSeekStarted(eventTime, /* belongsToPlayback= */ true);
|
||||
}
|
||||
tracker.onPlaybackStateChanged(eventTime, playbackState, /* belongsToPlayback= */ true);
|
||||
|
|
@ -269,7 +269,7 @@ public final class PlaybackStatsListener
|
|||
|
||||
@Override
|
||||
public void onPlaybackSuppressionReasonChanged(
|
||||
EventTime eventTime, int playbackSuppressionReason) {
|
||||
EventTime eventTime, @Player.PlaybackSuppressionReason int playbackSuppressionReason) {
|
||||
isSuppressed = playbackSuppressionReason != Player.PLAYBACK_SUPPRESSION_REASON_NONE;
|
||||
maybeAddSession(eventTime);
|
||||
for (String session : playbackStatsTrackers.keySet()) {
|
||||
|
|
@ -281,23 +281,29 @@ public final class PlaybackStatsListener
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onTimelineChanged(EventTime eventTime, int reason) {
|
||||
public void onTimelineChanged(EventTime eventTime, @Player.TimelineChangeReason int reason) {
|
||||
sessionManager.handleTimelineUpdate(eventTime);
|
||||
maybeAddSession(eventTime);
|
||||
for (String session : playbackStatsTrackers.keySet()) {
|
||||
if (sessionManager.belongsToSession(eventTime, session)) {
|
||||
playbackStatsTrackers.get(session).onPositionDiscontinuity(eventTime);
|
||||
playbackStatsTrackers.get(session).onPositionDiscontinuity(eventTime, /* isSeek= */ false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPositionDiscontinuity(EventTime eventTime, int reason) {
|
||||
public void onPositionDiscontinuity(EventTime eventTime, @Player.DiscontinuityReason int reason) {
|
||||
sessionManager.handlePositionDiscontinuity(eventTime, reason);
|
||||
maybeAddSession(eventTime);
|
||||
if (reason == Player.DISCONTINUITY_REASON_SEEK) {
|
||||
onSeekStartedCalled = false;
|
||||
}
|
||||
for (String session : playbackStatsTrackers.keySet()) {
|
||||
if (sessionManager.belongsToSession(eventTime, session)) {
|
||||
playbackStatsTrackers.get(session).onPositionDiscontinuity(eventTime);
|
||||
playbackStatsTrackers
|
||||
.get(session)
|
||||
.onPositionDiscontinuity(
|
||||
eventTime, /* isSeek= */ reason == Player.DISCONTINUITY_REASON_SEEK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -309,17 +315,7 @@ public final class PlaybackStatsListener
|
|||
boolean belongsToPlayback = sessionManager.belongsToSession(eventTime, session);
|
||||
playbackStatsTrackers.get(session).onSeekStarted(eventTime, belongsToPlayback);
|
||||
}
|
||||
isSeeking = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSeekProcessed(EventTime eventTime) {
|
||||
maybeAddSession(eventTime);
|
||||
for (String session : playbackStatsTrackers.keySet()) {
|
||||
boolean belongsToPlayback = sessionManager.belongsToSession(eventTime, session);
|
||||
playbackStatsTrackers.get(session).onSeekProcessed(eventTime, belongsToPlayback);
|
||||
}
|
||||
isSeeking = false;
|
||||
onSeekStartedCalled = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -551,6 +547,9 @@ public final class PlaybackStatsListener
|
|||
if (state != Player.STATE_IDLE) {
|
||||
hasFatalError = false;
|
||||
}
|
||||
if (state != Player.STATE_BUFFERING) {
|
||||
isSeeking = false;
|
||||
}
|
||||
if (state == Player.STATE_IDLE || state == Player.STATE_ENDED) {
|
||||
isInterruptedByAd = false;
|
||||
}
|
||||
|
|
@ -589,8 +588,12 @@ public final class PlaybackStatsListener
|
|||
* Notifies the tracker of a position discontinuity or timeline update for the current playback.
|
||||
*
|
||||
* @param eventTime The {@link EventTime}.
|
||||
* @param isSeek Whether the position discontinuity is for a seek.
|
||||
*/
|
||||
public void onPositionDiscontinuity(EventTime eventTime) {
|
||||
public void onPositionDiscontinuity(EventTime eventTime, boolean isSeek) {
|
||||
if (isSeek && playerPlaybackState == Player.STATE_IDLE) {
|
||||
isSeeking = false;
|
||||
}
|
||||
isInterruptedByAd = false;
|
||||
maybeUpdatePlaybackState(eventTime, /* belongsToPlayback= */ true);
|
||||
}
|
||||
|
|
@ -607,18 +610,6 @@ public final class PlaybackStatsListener
|
|||
maybeUpdatePlaybackState(eventTime, belongsToPlayback);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies the tracker that a seek has been processed, including all seeks while the playback
|
||||
* is not in the foreground.
|
||||
*
|
||||
* @param eventTime The {@link EventTime}.
|
||||
* @param belongsToPlayback Whether the {@code eventTime} belongs to the current playback.
|
||||
*/
|
||||
public void onSeekProcessed(EventTime eventTime, boolean belongsToPlayback) {
|
||||
isSeeking = false;
|
||||
maybeUpdatePlaybackState(eventTime, belongsToPlayback);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies the tracker of fatal player error in the current playback.
|
||||
*
|
||||
|
|
@ -934,10 +925,6 @@ public final class PlaybackStatsListener
|
|||
|| currentPlaybackState == PlaybackStats.PLAYBACK_STATE_INTERRUPTED_BY_AD) {
|
||||
return PlaybackStats.PLAYBACK_STATE_JOINING_FOREGROUND;
|
||||
}
|
||||
if (currentPlaybackState == PlaybackStats.PLAYBACK_STATE_SEEKING
|
||||
|| currentPlaybackState == PlaybackStats.PLAYBACK_STATE_SEEK_BUFFERING) {
|
||||
return PlaybackStats.PLAYBACK_STATE_SEEK_BUFFERING;
|
||||
}
|
||||
if (!playWhenReady) {
|
||||
return PlaybackStats.PLAYBACK_STATE_PAUSED_BUFFERING;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue