Misc clean-up in ExoPlayerImpl.
This brings listener invocations closer together and removes unnecessary methods. Also fixes a bug where a change in track selection parameters only queued a callback but never flushed it to actually inform the listeners. #minor-release PiperOrigin-RevId: 427201691
This commit is contained in:
parent
6dbf9cac8c
commit
9042aa7c7a
@ -757,29 +757,6 @@ import java.util.concurrent.TimeoutException;
|
|||||||
playWhenReady, playerCommand, getPlayWhenReadyChangeReason(playWhenReady, playerCommand));
|
playWhenReady, playerCommand, getPlayWhenReadyChangeReason(playWhenReady, playerCommand));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPlayWhenReady(
|
|
||||||
boolean playWhenReady,
|
|
||||||
@PlaybackSuppressionReason int playbackSuppressionReason,
|
|
||||||
@PlayWhenReadyChangeReason int playWhenReadyChangeReason) {
|
|
||||||
if (playbackInfo.playWhenReady == playWhenReady
|
|
||||||
&& playbackInfo.playbackSuppressionReason == playbackSuppressionReason) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
pendingOperationAcks++;
|
|
||||||
PlaybackInfo playbackInfo =
|
|
||||||
this.playbackInfo.copyWithPlayWhenReady(playWhenReady, playbackSuppressionReason);
|
|
||||||
internalPlayer.setPlayWhenReady(playWhenReady, playbackSuppressionReason);
|
|
||||||
updatePlaybackInfo(
|
|
||||||
playbackInfo,
|
|
||||||
/* ignored */ TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED,
|
|
||||||
playWhenReadyChangeReason,
|
|
||||||
/* seekProcessed= */ false,
|
|
||||||
/* positionDiscontinuity= */ false,
|
|
||||||
/* ignored */ DISCONTINUITY_REASON_INTERNAL,
|
|
||||||
/* ignored */ C.TIME_UNSET,
|
|
||||||
/* ignored */ C.INDEX_UNSET);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean getPlayWhenReady() {
|
public boolean getPlayWhenReady() {
|
||||||
verifyApplicationThread();
|
verifyApplicationThread();
|
||||||
return playbackInfo.playWhenReady;
|
return playbackInfo.playWhenReady;
|
||||||
@ -1201,7 +1178,7 @@ import java.util.concurrent.TimeoutException;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
trackSelector.setParameters(parameters);
|
trackSelector.setParameters(parameters);
|
||||||
listeners.queueEvent(
|
listeners.sendEvent(
|
||||||
EVENT_TRACK_SELECTION_PARAMETERS_CHANGED,
|
EVENT_TRACK_SELECTION_PARAMETERS_CHANGED,
|
||||||
listener -> listener.onTrackSelectionParametersChanged(parameters));
|
listener -> listener.onTrackSelectionParametersChanged(parameters));
|
||||||
}
|
}
|
||||||
@ -1211,20 +1188,6 @@ import java.util.concurrent.TimeoutException;
|
|||||||
return mediaMetadata;
|
return mediaMetadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onMetadata(Metadata metadata) {
|
|
||||||
staticAndDynamicMediaMetadata =
|
|
||||||
staticAndDynamicMediaMetadata.buildUpon().populateFromMetadata(metadata).build();
|
|
||||||
|
|
||||||
MediaMetadata newMediaMetadata = buildUpdatedMediaMetadata();
|
|
||||||
|
|
||||||
if (newMediaMetadata.equals(mediaMetadata)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mediaMetadata = newMediaMetadata;
|
|
||||||
listeners.sendEvent(
|
|
||||||
EVENT_MEDIA_METADATA_CHANGED, listener -> listener.onMediaMetadataChanged(mediaMetadata));
|
|
||||||
}
|
|
||||||
|
|
||||||
public MediaMetadata getPlaylistMetadata() {
|
public MediaMetadata getPlaylistMetadata() {
|
||||||
verifyApplicationThread();
|
verifyApplicationThread();
|
||||||
return playlistMetadata;
|
return playlistMetadata;
|
||||||
@ -2371,7 +2334,7 @@ import java.util.concurrent.TimeoutException;
|
|||||||
*
|
*
|
||||||
* <p>{@link MediaItem} {@link MediaMetadata} is prioritized, with any gaps/missing fields
|
* <p>{@link MediaItem} {@link MediaMetadata} is prioritized, with any gaps/missing fields
|
||||||
* populated by metadata from static ({@link TrackGroup} {@link Format}) and dynamic ({@link
|
* populated by metadata from static ({@link TrackGroup} {@link Format}) and dynamic ({@link
|
||||||
* #onMetadata(Metadata)}) sources.
|
* MetadataOutput#onMetadata(Metadata)}) sources.
|
||||||
*/
|
*/
|
||||||
private MediaMetadata buildUpdatedMediaMetadata() {
|
private MediaMetadata buildUpdatedMediaMetadata() {
|
||||||
Timeline timeline = getCurrentTimeline();
|
Timeline timeline = getCurrentTimeline();
|
||||||
@ -2511,7 +2474,23 @@ import java.util.concurrent.TimeoutException;
|
|||||||
playWhenReady && playerCommand != AudioFocusManager.PLAYER_COMMAND_PLAY_WHEN_READY
|
playWhenReady && playerCommand != AudioFocusManager.PLAYER_COMMAND_PLAY_WHEN_READY
|
||||||
? Player.PLAYBACK_SUPPRESSION_REASON_TRANSIENT_AUDIO_FOCUS_LOSS
|
? Player.PLAYBACK_SUPPRESSION_REASON_TRANSIENT_AUDIO_FOCUS_LOSS
|
||||||
: Player.PLAYBACK_SUPPRESSION_REASON_NONE;
|
: Player.PLAYBACK_SUPPRESSION_REASON_NONE;
|
||||||
setPlayWhenReady(playWhenReady, playbackSuppressionReason, playWhenReadyChangeReason);
|
if (playbackInfo.playWhenReady == playWhenReady
|
||||||
|
&& playbackInfo.playbackSuppressionReason == playbackSuppressionReason) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
pendingOperationAcks++;
|
||||||
|
PlaybackInfo playbackInfo =
|
||||||
|
this.playbackInfo.copyWithPlayWhenReady(playWhenReady, playbackSuppressionReason);
|
||||||
|
internalPlayer.setPlayWhenReady(playWhenReady, playbackSuppressionReason);
|
||||||
|
updatePlaybackInfo(
|
||||||
|
playbackInfo,
|
||||||
|
/* ignored */ TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED,
|
||||||
|
playWhenReadyChangeReason,
|
||||||
|
/* seekProcessed= */ false,
|
||||||
|
/* positionDiscontinuity= */ false,
|
||||||
|
/* ignored */ DISCONTINUITY_REASON_INTERNAL,
|
||||||
|
/* ignored */ C.TIME_UNSET,
|
||||||
|
/* ignored */ C.INDEX_UNSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateWakeAndWifiLock() {
|
private void updateWakeAndWifiLock() {
|
||||||
@ -2810,7 +2789,15 @@ import java.util.concurrent.TimeoutException;
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMetadata(Metadata metadata) {
|
public void onMetadata(Metadata metadata) {
|
||||||
ExoPlayerImpl.this.onMetadata(metadata);
|
staticAndDynamicMediaMetadata =
|
||||||
|
staticAndDynamicMediaMetadata.buildUpon().populateFromMetadata(metadata).build();
|
||||||
|
MediaMetadata newMediaMetadata = buildUpdatedMediaMetadata();
|
||||||
|
if (!newMediaMetadata.equals(mediaMetadata)) {
|
||||||
|
mediaMetadata = newMediaMetadata;
|
||||||
|
listeners.sendEvent(
|
||||||
|
EVENT_MEDIA_METADATA_CHANGED,
|
||||||
|
listener -> listener.onMediaMetadataChanged(mediaMetadata));
|
||||||
|
}
|
||||||
// TODO(internal b/187152483): Events should be dispatched via ListenerSet
|
// TODO(internal b/187152483): Events should be dispatched via ListenerSet
|
||||||
for (Listener listener : listenerArraySet) {
|
for (Listener listener : listenerArraySet) {
|
||||||
listener.onMetadata(metadata);
|
listener.onMetadata(metadata);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user