From 011342f4cfe5aa0cc1d3b46e9bed3c55338fd742 Mon Sep 17 00:00:00 2001 From: krocard Date: Thu, 17 Dec 2020 15:25:42 +0000 Subject: [PATCH] Explicitly fail playback if new format has no sampleMimeType This avoids a NullPointerException later when the format is used. Fixes https://github.com/google/ExoPlayer/issues/8283. PiperOrigin-RevId: 348017149 --- .../android/exoplayer2/mediacodec/MediaCodecRenderer.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java index a2ba72dbc0..4cecf7ce3c 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java @@ -1455,6 +1455,11 @@ public abstract class MediaCodecRenderer extends BaseRenderer { protected void onInputFormatChanged(FormatHolder formatHolder) throws ExoPlaybackException { waitingForFirstSampleInFormat = true; Format newFormat = Assertions.checkNotNull(formatHolder.format); + if (newFormat.sampleMimeType == null) { + // If the new format is invalid, it is either a media bug or it is not intended to be played. + // See also https://github.com/google/ExoPlayer/issues/8283. + throw createRendererException(new IllegalArgumentException(), newFormat); + } setSourceDrmSession(formatHolder.drmSession); inputFormat = newFormat;