From 4fb2255eb994bf8e6a84f7b3b68caeddc222eafd Mon Sep 17 00:00:00 2001 From: ibaker Date: Fri, 24 May 2024 01:41:56 -0700 Subject: [PATCH] Print underlying extractor name in `UnrecognizedInputFormatException` If subtitle-parsing-during-extraction is enabled (now defaults to on), the 'outer' extractor class name is often `SubtitleTranscodingExtractor`, leading to some slightly useless error messages like: `None of the available extractors (FragmentedMp4Extractor, Mp4Extractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, TsExtractor, MatroskaExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, AviExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor, SubtitleTranscodingExtractor)` PiperOrigin-RevId: 636834354 --- .../exoplayer/source/BundledExtractorsAdapter.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/BundledExtractorsAdapter.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/BundledExtractorsAdapter.java index f0b2f7e816..c3a2a19318 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/BundledExtractorsAdapter.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/BundledExtractorsAdapter.java @@ -21,7 +21,6 @@ import androidx.media3.common.C; import androidx.media3.common.DataReader; import androidx.media3.common.util.Assertions; import androidx.media3.common.util.UnstableApi; -import androidx.media3.common.util.Util; import androidx.media3.extractor.DefaultExtractorInput; import androidx.media3.extractor.Extractor; import androidx.media3.extractor.ExtractorInput; @@ -30,7 +29,9 @@ import androidx.media3.extractor.ExtractorsFactory; import androidx.media3.extractor.PositionHolder; import androidx.media3.extractor.SniffFailure; import androidx.media3.extractor.mp3.Mp3Extractor; +import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; import java.io.EOFException; import java.io.IOException; import java.util.List; @@ -96,7 +97,12 @@ public final class BundledExtractorsAdapter implements ProgressiveMediaExtractor if (extractor == null) { throw new UnrecognizedInputFormatException( "None of the available extractors (" - + Util.getCommaDelimitedSimpleClassNames(extractors) + + Joiner.on(", ") + .join( + Lists.transform( + ImmutableList.copyOf(extractors), + extractor -> + extractor.getUnderlyingImplementation().getClass().getSimpleName())) + ") could read the stream.", Assertions.checkNotNull(uri), sniffFailures.build());