From 6ebcac3883ef2a65e5432a71003af187bfc308b6 Mon Sep 17 00:00:00 2001 From: ibaker Date: Mon, 14 Oct 2019 10:46:27 +0100 Subject: [PATCH] Remove DefaultHlsExtractorFactory from null-checking blacklist PiperOrigin-RevId: 274537528 --- .../hls/DefaultHlsExtractorFactory.java | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/DefaultHlsExtractorFactory.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/DefaultHlsExtractorFactory.java index 2495c8439f..8db6166bb8 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/DefaultHlsExtractorFactory.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/DefaultHlsExtractorFactory.java @@ -185,8 +185,8 @@ public final class DefaultHlsExtractorFactory implements HlsExtractorFactory { private Extractor createExtractorByFileExtension( Uri uri, Format format, - List muxedCaptionFormats, - DrmInitData drmInitData, + @Nullable List muxedCaptionFormats, + @Nullable DrmInitData drmInitData, TimestampAdjuster timestampAdjuster) { String lastPathSegment = uri.getLastPathSegment(); if (lastPathSegment == null) { @@ -226,7 +226,7 @@ public final class DefaultHlsExtractorFactory implements HlsExtractorFactory { @DefaultTsPayloadReaderFactory.Flags int userProvidedPayloadReaderFactoryFlags, boolean exposeCea608WhenMissingDeclarations, Format format, - List muxedCaptionFormats, + @Nullable List muxedCaptionFormats, TimestampAdjuster timestampAdjuster) { @DefaultTsPayloadReaderFactory.Flags int payloadReaderFactoryFlags = @@ -270,26 +270,34 @@ public final class DefaultHlsExtractorFactory implements HlsExtractorFactory { private static FragmentedMp4Extractor createFragmentedMp4Extractor( TimestampAdjuster timestampAdjuster, Format format, - DrmInitData drmInitData, + @Nullable DrmInitData drmInitData, @Nullable List muxedCaptionFormats) { - boolean isVariant = false; - for (int i = 0; i < format.metadata.length(); i++) { - Metadata.Entry entry = format.metadata.get(i); - if (entry instanceof HlsTrackMetadataEntry) { - isVariant = !((HlsTrackMetadataEntry) entry).variantInfos.isEmpty(); - break; - } - } // Only enable the EMSG TrackOutput if this is the 'variant' track (i.e. the main one) to avoid // creating a separate EMSG track for every audio track in a video stream. return new FragmentedMp4Extractor( - /* flags= */ isVariant ? FragmentedMp4Extractor.FLAG_ENABLE_EMSG_TRACK : 0, + /* flags= */ isFmp4Variant(format) ? FragmentedMp4Extractor.FLAG_ENABLE_EMSG_TRACK : 0, timestampAdjuster, /* sideloadedTrack= */ null, drmInitData, muxedCaptionFormats != null ? muxedCaptionFormats : Collections.emptyList()); } + /** Returns true if this {@code format} represents a 'variant' track (i.e. the main one). */ + private static boolean isFmp4Variant(Format format) { + Metadata metadata = format.metadata; + if (metadata == null) { + return false; + } + for (int i = 0; i < metadata.length(); i++) { + Metadata.Entry entry = metadata.get(i); + if (entry instanceof HlsTrackMetadataEntry) { + return !((HlsTrackMetadataEntry) entry).variantInfos.isEmpty(); + } + } + return false; + } + + @Nullable private static Result buildResultForSameExtractorType( Extractor previousExtractor, Format format, TimestampAdjuster timestampAdjuster) { if (previousExtractor instanceof WebvttExtractor) {