From 12a93517814b6cdb44c4b4f71a20abce2f827ade Mon Sep 17 00:00:00 2001 From: kimvde Date: Thu, 4 Jun 2020 15:17:58 +0100 Subject: [PATCH] Miscellaneous renamings in FilenameUtils PiperOrigin-RevId: 314723830 --- .../android/exoplayer2/util/FileTypes.java | 159 ++++++++++++++++ .../android/exoplayer2/util/FilenameUtil.java | 177 ------------------ ...lenameUtilTest.java => FileTypesTest.java} | 20 +- .../extractor/DefaultExtractorsFactory.java | 74 +++----- .../hls/DefaultHlsExtractorFactory.java | 27 +-- 5 files changed, 207 insertions(+), 250 deletions(-) create mode 100644 library/common/src/main/java/com/google/android/exoplayer2/util/FileTypes.java delete mode 100644 library/common/src/main/java/com/google/android/exoplayer2/util/FilenameUtil.java rename library/common/src/test/java/com/google/android/exoplayer2/util/{FilenameUtilTest.java => FileTypesTest.java} (72%) diff --git a/library/common/src/main/java/com/google/android/exoplayer2/util/FileTypes.java b/library/common/src/main/java/com/google/android/exoplayer2/util/FileTypes.java new file mode 100644 index 0000000000..62fdb48e01 --- /dev/null +++ b/library/common/src/main/java/com/google/android/exoplayer2/util/FileTypes.java @@ -0,0 +1,159 @@ +/* + * Copyright 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer2.util; + +import android.net.Uri; +import androidx.annotation.IntDef; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** Defines common file type constants and helper methods. */ +public final class FileTypes { + + /** + * File types. One of {@link #UNKNOWN}, {@link #AC3}, {@link #AC4}, {@link #ADTS}, {@link #AMR}, + * {@link #FLAC}, {@link #FLV}, {@link #MATROSKA}, {@link #MP3}, {@link #MP4}, {@link #OGG}, + * {@link #PS}, {@link #TS}, {@link #WAV} and {@link #WEBVTT}. + */ + @Documented + @Retention(RetentionPolicy.SOURCE) + @IntDef({UNKNOWN, AC3, AC4, ADTS, AMR, FLAC, FLV, MATROSKA, MP3, MP4, OGG, PS, TS, WAV, WEBVTT}) + public @interface Type {} + /** Unknown file type. */ + public static final int UNKNOWN = -1; + /** File type for the AC-3 and E-AC-3 formats. */ + public static final int AC3 = 0; + /** File type for the AC-4 format. */ + public static final int AC4 = 1; + /** File type for the ADTS format. */ + public static final int ADTS = 2; + /** File type for the AMR format. */ + public static final int AMR = 3; + /** File type for the FLAC format. */ + public static final int FLAC = 4; + /** File type for the FLV format. */ + public static final int FLV = 5; + /** File type for the Matroska and WebM formats. */ + public static final int MATROSKA = 6; + /** File type for the MP3 format. */ + public static final int MP3 = 7; + /** File type for the MP4 format. */ + public static final int MP4 = 8; + /** File type for the Ogg format. */ + public static final int OGG = 9; + /** File type for the MPEG-PS format. */ + public static final int PS = 10; + /** File type for the MPEG-TS format. */ + public static final int TS = 11; + /** File type for the WAV format. */ + public static final int WAV = 12; + /** File type for the WebVTT format. */ + public static final int WEBVTT = 13; + + private static final String EXTENSION_AC3 = ".ac3"; + private static final String EXTENSION_EC3 = ".ec3"; + private static final String EXTENSION_AC4 = ".ac4"; + private static final String EXTENSION_ADTS = ".adts"; + private static final String EXTENSION_AAC = ".aac"; + private static final String EXTENSION_AMR = ".amr"; + private static final String EXTENSION_FLAC = ".flac"; + private static final String EXTENSION_FLV = ".flv"; + private static final String EXTENSION_PREFIX_MK = ".mk"; + private static final String EXTENSION_WEBM = ".webm"; + private static final String EXTENSION_PREFIX_OG = ".og"; + private static final String EXTENSION_OPUS = ".opus"; + private static final String EXTENSION_MP3 = ".mp3"; + private static final String EXTENSION_MP4 = ".mp4"; + private static final String EXTENSION_PREFIX_M4 = ".m4"; + private static final String EXTENSION_PREFIX_MP4 = ".mp4"; + private static final String EXTENSION_PREFIX_CMF = ".cmf"; + private static final String EXTENSION_PS = ".ps"; + private static final String EXTENSION_MPEG = ".mpeg"; + private static final String EXTENSION_MPG = ".mpg"; + private static final String EXTENSION_M2P = ".m2p"; + private static final String EXTENSION_TS = ".ts"; + private static final String EXTENSION_PREFIX_TS = ".ts"; + private static final String EXTENSION_WAV = ".wav"; + private static final String EXTENSION_WAVE = ".wave"; + private static final String EXTENSION_VTT = ".vtt"; + private static final String EXTENSION_WEBVTT = ".webvtt"; + + private FileTypes() {} + + /** + * Returns the {@link Type} corresponding to the filename extension of the provided {@link Uri}. + * The filename is considered to be the last segment of the {@link Uri} path. + */ + @FileTypes.Type + public static int getFormatFromExtension(Uri uri) { + String filename = uri.getLastPathSegment(); + if (filename == null) { + return FileTypes.UNKNOWN; + } else if (filename.endsWith(EXTENSION_AC3) || filename.endsWith(EXTENSION_EC3)) { + return FileTypes.AC3; + } else if (filename.endsWith(EXTENSION_AC4)) { + return FileTypes.AC4; + } else if (filename.endsWith(EXTENSION_ADTS) || filename.endsWith(EXTENSION_AAC)) { + return FileTypes.ADTS; + } else if (filename.endsWith(EXTENSION_AMR)) { + return FileTypes.AMR; + } else if (filename.endsWith(EXTENSION_FLAC)) { + return FileTypes.FLAC; + } else if (filename.endsWith(EXTENSION_FLV)) { + return FileTypes.FLV; + } else if (filename.startsWith( + EXTENSION_PREFIX_MK, + /* toffset= */ filename.length() - (EXTENSION_PREFIX_MK.length() + 1)) + || filename.endsWith(EXTENSION_WEBM)) { + return FileTypes.MATROSKA; + } else if (filename.endsWith(EXTENSION_MP3)) { + return FileTypes.MP3; + } else if (filename.endsWith(EXTENSION_MP4) + || filename.startsWith( + EXTENSION_PREFIX_M4, + /* toffset= */ filename.length() - (EXTENSION_PREFIX_M4.length() + 1)) + || filename.startsWith( + EXTENSION_PREFIX_MP4, + /* toffset= */ filename.length() - (EXTENSION_PREFIX_MP4.length() + 1)) + || filename.startsWith( + EXTENSION_PREFIX_CMF, + /* toffset= */ filename.length() - (EXTENSION_PREFIX_CMF.length() + 1))) { + return FileTypes.MP4; + } else if (filename.startsWith( + EXTENSION_PREFIX_OG, + /* toffset= */ filename.length() - (EXTENSION_PREFIX_OG.length() + 1)) + || filename.endsWith(EXTENSION_OPUS)) { + return FileTypes.OGG; + } else if (filename.endsWith(EXTENSION_PS) + || filename.endsWith(EXTENSION_MPEG) + || filename.endsWith(EXTENSION_MPG) + || filename.endsWith(EXTENSION_M2P)) { + return FileTypes.PS; + } else if (filename.endsWith(EXTENSION_TS) + || filename.startsWith( + EXTENSION_PREFIX_TS, + /* toffset= */ filename.length() - (EXTENSION_PREFIX_TS.length() + 1))) { + return FileTypes.TS; + } else if (filename.endsWith(EXTENSION_WAV) || filename.endsWith(EXTENSION_WAVE)) { + return FileTypes.WAV; + } else if (filename.endsWith(EXTENSION_VTT) || filename.endsWith(EXTENSION_WEBVTT)) { + return FileTypes.WEBVTT; + } else { + return FileTypes.UNKNOWN; + } + } +} diff --git a/library/common/src/main/java/com/google/android/exoplayer2/util/FilenameUtil.java b/library/common/src/main/java/com/google/android/exoplayer2/util/FilenameUtil.java deleted file mode 100644 index 614f58e94b..0000000000 --- a/library/common/src/main/java/com/google/android/exoplayer2/util/FilenameUtil.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.google.android.exoplayer2.util; - -import android.net.Uri; -import androidx.annotation.IntDef; -import java.lang.annotation.Documented; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** Filename related utility methods. */ -public final class FilenameUtil { - - /** - * File formats. One of {@link #FILE_FORMAT_UNKNOWN}, {@link #FILE_FORMAT_AC3}, {@link - * #FILE_FORMAT_AC4}, {@link #FILE_FORMAT_ADTS}, {@link #FILE_FORMAT_AMR}, {@link - * #FILE_FORMAT_FLAC}, {@link #FILE_FORMAT_FLV}, {@link #FILE_FORMAT_MATROSKA}, {@link - * #FILE_FORMAT_MP3}, {@link #FILE_FORMAT_MP4}, {@link #FILE_FORMAT_OGG}, {@link #FILE_FORMAT_PS}, - * {@link #FILE_FORMAT_TS}, {@link #FILE_FORMAT_WAV} and {@link #FILE_FORMAT_WEBVTT}. - */ - @Documented - @Retention(RetentionPolicy.SOURCE) - @IntDef({ - FILE_FORMAT_UNKNOWN, - FILE_FORMAT_AC3, - FILE_FORMAT_AC4, - FILE_FORMAT_ADTS, - FILE_FORMAT_AMR, - FILE_FORMAT_FLAC, - FILE_FORMAT_FLV, - FILE_FORMAT_MATROSKA, - FILE_FORMAT_MP3, - FILE_FORMAT_MP4, - FILE_FORMAT_OGG, - FILE_FORMAT_PS, - FILE_FORMAT_TS, - FILE_FORMAT_WAV, - FILE_FORMAT_WEBVTT - }) - public @interface FileFormat {} - /** Unknown file format. */ - public static final int FILE_FORMAT_UNKNOWN = -1; - /** File format for AC-3 and E-AC-3. */ - public static final int FILE_FORMAT_AC3 = 0; - /** File format for AC-4. */ - public static final int FILE_FORMAT_AC4 = 1; - /** File format for ADTS. */ - public static final int FILE_FORMAT_ADTS = 2; - /** File format for AMR. */ - public static final int FILE_FORMAT_AMR = 3; - /** File format for FLAC. */ - public static final int FILE_FORMAT_FLAC = 4; - /** File format for FLV. */ - public static final int FILE_FORMAT_FLV = 5; - /** File format for Matroska and WebM. */ - public static final int FILE_FORMAT_MATROSKA = 6; - /** File format for MP3. */ - public static final int FILE_FORMAT_MP3 = 7; - /** File format for MP4. */ - public static final int FILE_FORMAT_MP4 = 8; - /** File format for Ogg. */ - public static final int FILE_FORMAT_OGG = 9; - /** File format for MPEG-PS. */ - public static final int FILE_FORMAT_PS = 10; - /** File format for MPEG-TS. */ - public static final int FILE_FORMAT_TS = 11; - /** File format for WAV. */ - public static final int FILE_FORMAT_WAV = 12; - /** File format for WebVTT. */ - public static final int FILE_FORMAT_WEBVTT = 13; - - private static final String FILE_EXTENSION_AC3 = ".ac3"; - private static final String FILE_EXTENSION_EC3 = ".ec3"; - private static final String FILE_EXTENSION_AC4 = ".ac4"; - private static final String FILE_EXTENSION_ADTS = ".adts"; - private static final String FILE_EXTENSION_AAC = ".aac"; - private static final String FILE_EXTENSION_AMR = ".amr"; - private static final String FILE_EXTENSION_FLAC = ".flac"; - private static final String FILE_EXTENSION_FLV = ".flv"; - private static final String FILE_EXTENSION_PREFIX_MK = ".mk"; - private static final String FILE_EXTENSION_WEBM = ".webm"; - private static final String FILE_EXTENSION_PREFIX_OG = ".og"; - private static final String FILE_EXTENSION_OPUS = ".opus"; - private static final String FILE_EXTENSION_MP3 = ".mp3"; - private static final String FILE_EXTENSION_MP4 = ".mp4"; - private static final String FILE_EXTENSION_PREFIX_M4 = ".m4"; - private static final String FILE_EXTENSION_PREFIX_MP4 = ".mp4"; - private static final String FILE_EXTENSION_PREFIX_CMF = ".cmf"; - private static final String FILE_EXTENSION_PS = ".ps"; - private static final String FILE_EXTENSION_MPEG = ".mpeg"; - private static final String FILE_EXTENSION_MPG = ".mpg"; - private static final String FILE_EXTENSION_M2P = ".m2p"; - private static final String FILE_EXTENSION_TS = ".ts"; - private static final String FILE_EXTENSION_PREFIX_TS = ".ts"; - private static final String FILE_EXTENSION_WAV = ".wav"; - private static final String FILE_EXTENSION_WAVE = ".wave"; - private static final String FILE_EXTENSION_VTT = ".vtt"; - private static final String FILE_EXTENSION_WEBVTT = ".webvtt"; - - private FilenameUtil() {} - - /** - * Returns the {@link FileFormat} corresponding to the filename extension of the provided {@link - * Uri}. The filename is considered to be the last segment of the {@link Uri} path. - */ - @FileFormat - public static int getFormatFromExtension(Uri uri) { - String filename = uri.getLastPathSegment(); - if (filename == null) { - return FILE_FORMAT_UNKNOWN; - } else if (filename.endsWith(FILE_EXTENSION_AC3) || filename.endsWith(FILE_EXTENSION_EC3)) { - return FILE_FORMAT_AC3; - } else if (filename.endsWith(FILE_EXTENSION_AC4)) { - return FILE_FORMAT_AC4; - } else if (filename.endsWith(FILE_EXTENSION_ADTS) || filename.endsWith(FILE_EXTENSION_AAC)) { - return FILE_FORMAT_ADTS; - } else if (filename.endsWith(FILE_EXTENSION_AMR)) { - return FILE_FORMAT_AMR; - } else if (filename.endsWith(FILE_EXTENSION_FLAC)) { - return FILE_FORMAT_FLAC; - } else if (filename.endsWith(FILE_EXTENSION_FLV)) { - return FILE_FORMAT_FLV; - } else if (filename.startsWith( - FILE_EXTENSION_PREFIX_MK, - /* toffset= */ filename.length() - (FILE_EXTENSION_PREFIX_MK.length() + 1)) - || filename.endsWith(FILE_EXTENSION_WEBM)) { - return FILE_FORMAT_MATROSKA; - } else if (filename.endsWith(FILE_EXTENSION_MP3)) { - return FILE_FORMAT_MP3; - } else if (filename.endsWith(FILE_EXTENSION_MP4) - || filename.startsWith( - FILE_EXTENSION_PREFIX_M4, - /* toffset= */ filename.length() - (FILE_EXTENSION_PREFIX_M4.length() + 1)) - || filename.startsWith( - FILE_EXTENSION_PREFIX_MP4, - /* toffset= */ filename.length() - (FILE_EXTENSION_PREFIX_MP4.length() + 1)) - || filename.startsWith( - FILE_EXTENSION_PREFIX_CMF, - /* toffset= */ filename.length() - (FILE_EXTENSION_PREFIX_CMF.length() + 1))) { - return FILE_FORMAT_MP4; - } else if (filename.startsWith( - FILE_EXTENSION_PREFIX_OG, - /* toffset= */ filename.length() - (FILE_EXTENSION_PREFIX_OG.length() + 1)) - || filename.endsWith(FILE_EXTENSION_OPUS)) { - return FILE_FORMAT_OGG; - } else if (filename.endsWith(FILE_EXTENSION_PS) - || filename.endsWith(FILE_EXTENSION_MPEG) - || filename.endsWith(FILE_EXTENSION_MPG) - || filename.endsWith(FILE_EXTENSION_M2P)) { - return FILE_FORMAT_PS; - } else if (filename.endsWith(FILE_EXTENSION_TS) - || filename.startsWith( - FILE_EXTENSION_PREFIX_TS, - /* toffset= */ filename.length() - (FILE_EXTENSION_PREFIX_TS.length() + 1))) { - return FILE_FORMAT_TS; - } else if (filename.endsWith(FILE_EXTENSION_WAV) || filename.endsWith(FILE_EXTENSION_WAVE)) { - return FILE_FORMAT_WAV; - } else if (filename.endsWith(FILE_EXTENSION_VTT) || filename.endsWith(FILE_EXTENSION_WEBVTT)) { - return FILE_FORMAT_WEBVTT; - } else { - return FILE_FORMAT_UNKNOWN; - } - } -} diff --git a/library/common/src/test/java/com/google/android/exoplayer2/util/FilenameUtilTest.java b/library/common/src/test/java/com/google/android/exoplayer2/util/FileTypesTest.java similarity index 72% rename from library/common/src/test/java/com/google/android/exoplayer2/util/FilenameUtilTest.java rename to library/common/src/test/java/com/google/android/exoplayer2/util/FileTypesTest.java index d3849356f3..ed7c17055d 100644 --- a/library/common/src/test/java/com/google/android/exoplayer2/util/FilenameUtilTest.java +++ b/library/common/src/test/java/com/google/android/exoplayer2/util/FileTypesTest.java @@ -15,10 +15,7 @@ */ package com.google.android.exoplayer2.util; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_MATROSKA; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_MP3; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_UNKNOWN; -import static com.google.android.exoplayer2.util.FilenameUtil.getFormatFromExtension; +import static com.google.android.exoplayer2.util.FileTypes.getFormatFromExtension; import static com.google.common.truth.Truth.assertThat; import android.net.Uri; @@ -26,24 +23,23 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; -/** Tests for {@link FilenameUtilTest}. */ +/** Tests for {@link FileTypesTest}. */ @RunWith(AndroidJUnit4.class) -public class FilenameUtilTest { +public class FileTypesTest { @Test public void getFormatFromExtension_withExtension_returnsExpectedFormat() { - assertThat(getFormatFromExtension(Uri.parse("filename.mp3"))).isEqualTo(FILE_FORMAT_MP3); + assertThat(getFormatFromExtension(Uri.parse("filename.mp3"))).isEqualTo(FileTypes.MP3); } @Test public void getFormatFromExtension_withExtensionPrefix_returnsExpectedFormat() { - assertThat(getFormatFromExtension(Uri.parse("filename.mka"))).isEqualTo(FILE_FORMAT_MATROSKA); + assertThat(getFormatFromExtension(Uri.parse("filename.mka"))).isEqualTo(FileTypes.MATROSKA); } @Test public void getFormatFromExtension_withUnknownExtension_returnsUnknownFormat() { - assertThat(getFormatFromExtension(Uri.parse("filename.unknown"))) - .isEqualTo(FILE_FORMAT_UNKNOWN); + assertThat(getFormatFromExtension(Uri.parse("filename.unknown"))).isEqualTo(FileTypes.UNKNOWN); } @Test @@ -51,11 +47,11 @@ public class FilenameUtilTest { assertThat( getFormatFromExtension( Uri.parse("http://www.example.com/filename.mp3?query=myquery#fragment"))) - .isEqualTo(FILE_FORMAT_MP3); + .isEqualTo(FileTypes.MP3); } @Test public void getFormatFromExtension_withNullFilename_returnsUnknownFormat() { - assertThat(getFormatFromExtension(Uri.EMPTY)).isEqualTo(FILE_FORMAT_UNKNOWN); + assertThat(getFormatFromExtension(Uri.EMPTY)).isEqualTo(FileTypes.UNKNOWN); } } diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/DefaultExtractorsFactory.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/DefaultExtractorsFactory.java index 431b96a5ea..3e329573ba 100644 --- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/DefaultExtractorsFactory.java +++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/DefaultExtractorsFactory.java @@ -15,20 +15,7 @@ */ package com.google.android.exoplayer2.extractor; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_AC3; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_AC4; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_ADTS; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_AMR; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_FLAC; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_FLV; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_MATROSKA; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_MP3; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_MP4; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_OGG; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_PS; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_TS; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_WAV; -import static com.google.android.exoplayer2.util.FilenameUtil.getFormatFromExtension; +import static com.google.android.exoplayer2.util.FileTypes.getFormatFromExtension; import android.net.Uri; import androidx.annotation.Nullable; @@ -48,7 +35,7 @@ import com.google.android.exoplayer2.extractor.ts.PsExtractor; import com.google.android.exoplayer2.extractor.ts.TsExtractor; import com.google.android.exoplayer2.extractor.ts.TsPayloadReader; import com.google.android.exoplayer2.extractor.wav.WavExtractor; -import com.google.android.exoplayer2.util.FilenameUtil; +import com.google.android.exoplayer2.util.FileTypes; import com.google.android.exoplayer2.util.TimestampAdjuster; import java.lang.reflect.Constructor; import java.util.ArrayList; @@ -86,19 +73,19 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory { // https://docs.google.com/document/d/1w2mKaWMxfz2Ei8-LdxqbPs1VLe_oudB-eryXXw9OvQQ. private static final int[] DEFAULT_EXTRACTOR_ORDER = new int[] { - FILE_FORMAT_FLV, - FILE_FORMAT_FLAC, - FILE_FORMAT_WAV, - FILE_FORMAT_MP4, - FILE_FORMAT_AMR, - FILE_FORMAT_PS, - FILE_FORMAT_OGG, - FILE_FORMAT_TS, - FILE_FORMAT_MATROSKA, - FILE_FORMAT_ADTS, - FILE_FORMAT_AC3, - FILE_FORMAT_AC4, - FILE_FORMAT_MP3, + FileTypes.FLV, + FileTypes.FLAC, + FileTypes.WAV, + FileTypes.MP4, + FileTypes.AMR, + FileTypes.PS, + FileTypes.OGG, + FileTypes.TS, + FileTypes.MATROSKA, + FileTypes.ADTS, + FileTypes.AC3, + FileTypes.AC4, + FileTypes.MP3, }; @Nullable @@ -285,7 +272,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory { public synchronized Extractor[] createExtractors(Uri uri) { List extractors = new ArrayList<>(/* initialCapacity= */ 14); - @FilenameUtil.FileFormat int extensionFormat = getFormatFromExtension(uri); + @FileTypes.Type int extensionFormat = getFormatFromExtension(uri); addExtractorsForFormat(extensionFormat, extractors); for (int format : DEFAULT_EXTRACTOR_ORDER) { @@ -297,16 +284,15 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory { return extractors.toArray(new Extractor[extractors.size()]); } - private void addExtractorsForFormat( - @FilenameUtil.FileFormat int fileFormat, List extractors) { + private void addExtractorsForFormat(@FileTypes.Type int fileFormat, List extractors) { switch (fileFormat) { - case FILE_FORMAT_AC3: + case FileTypes.AC3: extractors.add(new Ac3Extractor()); break; - case FILE_FORMAT_AC4: + case FileTypes.AC4: extractors.add(new Ac4Extractor()); break; - case FILE_FORMAT_ADTS: + case FileTypes.ADTS: extractors.add( new AdtsExtractor( adtsFlags @@ -314,7 +300,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory { ? AdtsExtractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING : 0))); break; - case FILE_FORMAT_AMR: + case FileTypes.AMR: extractors.add( new AmrExtractor( amrFlags @@ -322,7 +308,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory { ? AmrExtractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING : 0))); break; - case FILE_FORMAT_FLAC: + case FileTypes.FLAC: if (FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR != null) { try { extractors.add(FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR.newInstance()); @@ -334,13 +320,13 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory { extractors.add(new FlacExtractor(coreFlacFlags)); } break; - case FILE_FORMAT_FLV: + case FileTypes.FLV: extractors.add(new FlvExtractor()); break; - case FILE_FORMAT_MATROSKA: + case FileTypes.MATROSKA: extractors.add(new MatroskaExtractor(matroskaFlags)); break; - case FILE_FORMAT_MP3: + case FileTypes.MP3: extractors.add( new Mp3Extractor( mp3Flags @@ -348,20 +334,20 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory { ? Mp3Extractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING : 0))); break; - case FILE_FORMAT_MP4: + case FileTypes.MP4: extractors.add(new FragmentedMp4Extractor(fragmentedMp4Flags)); extractors.add(new Mp4Extractor(mp4Flags)); break; - case FILE_FORMAT_OGG: + case FileTypes.OGG: extractors.add(new OggExtractor()); break; - case FILE_FORMAT_PS: + case FileTypes.PS: extractors.add(new PsExtractor()); break; - case FILE_FORMAT_TS: + case FileTypes.TS: extractors.add(new TsExtractor(tsMode, tsFlags)); break; - case FILE_FORMAT_WAV: + case FileTypes.WAV: extractors.add(new WavExtractor()); break; default: 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 010b6e2417..32a156f66d 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 @@ -15,14 +15,7 @@ */ package com.google.android.exoplayer2.source.hls; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_AC3; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_AC4; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_ADTS; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_MP3; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_MP4; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_TS; -import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_WEBVTT; -import static com.google.android.exoplayer2.util.FilenameUtil.getFormatFromExtension; +import static com.google.android.exoplayer2.util.FileTypes.getFormatFromExtension; import android.net.Uri; import android.text.TextUtils; @@ -39,7 +32,7 @@ import com.google.android.exoplayer2.extractor.ts.DefaultTsPayloadReaderFactory; import com.google.android.exoplayer2.extractor.ts.TsExtractor; import com.google.android.exoplayer2.metadata.Metadata; import com.google.android.exoplayer2.util.Assertions; -import com.google.android.exoplayer2.util.FilenameUtil; +import com.google.android.exoplayer2.util.FileTypes; import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.TimestampAdjuster; import java.io.EOFException; @@ -195,21 +188,21 @@ public final class DefaultHlsExtractorFactory implements HlsExtractorFactory { if (MimeTypes.TEXT_VTT.equals(format.sampleMimeType)) { return new WebvttExtractor(format.language, timestampAdjuster); } - @FilenameUtil.FileFormat int fileFormat = getFormatFromExtension(uri); + @FileTypes.Type int fileFormat = getFormatFromExtension(uri); switch (fileFormat) { - case FILE_FORMAT_WEBVTT: + case FileTypes.WEBVTT: return new WebvttExtractor(format.language, timestampAdjuster); - case FILE_FORMAT_ADTS: + case FileTypes.ADTS: return new AdtsExtractor(); - case FILE_FORMAT_AC3: + case FileTypes.AC3: return new Ac3Extractor(); - case FILE_FORMAT_AC4: + case FileTypes.AC4: return new Ac4Extractor(); - case FILE_FORMAT_MP3: + case FileTypes.MP3: return new Mp3Extractor(/* flags= */ 0, /* forcedFirstSampleTimestampUs= */ 0); - case FILE_FORMAT_MP4: + case FileTypes.MP4: return createFragmentedMp4Extractor(timestampAdjuster, format, muxedCaptionFormats); - case FILE_FORMAT_TS: + case FileTypes.TS: return createTsExtractor( payloadReaderFactoryFlags, exposeCea608WhenMissingDeclarations,