DecodeOneFrameUtil: do not access release players

A player that is being released may report an error with
null `player.getPlayerError()`. Do not try to read errors
of players that are released.

PiperOrigin-RevId: 690953083
This commit is contained in:
dancho 2024-10-29 03:45:31 -07:00 committed by Copybara-Service
parent dd6e88889a
commit b0df3b2da3

View File

@ -90,6 +90,9 @@ public final class DecodeOneFrameUtil {
@Override @Override
public void onRenderedFirstFrame(EventTime eventTime, Object output, long renderTimeMs) { public void onRenderedFirstFrame(EventTime eventTime, Object output, long renderTimeMs) {
if (exoPlayer.isReleased()) {
return;
}
listener.onFrameDecoded( listener.onFrameDecoded(
createMediaFormatFromFormat(checkNotNull(exoPlayer.getVideoFormat()))); createMediaFormatFromFormat(checkNotNull(exoPlayer.getVideoFormat())));
firstFrameRenderedOrError.open(); firstFrameRenderedOrError.open();
@ -97,6 +100,9 @@ public final class DecodeOneFrameUtil {
@Override @Override
public void onEvents(Player player, Events events) { public void onEvents(Player player, Events events) {
if (exoPlayer.isReleased()) {
return;
}
if (events.contains(EVENT_PLAYER_ERROR)) { if (events.contains(EVENT_PLAYER_ERROR)) {
playbackExceptionReference.set(checkNotNull(player.getPlayerError())); playbackExceptionReference.set(checkNotNull(player.getPlayerError()));
firstFrameRenderedOrError.open(); firstFrameRenderedOrError.open();