Miscellaneous renamings in FilenameUtils

PiperOrigin-RevId: 314723830
This commit is contained in:
kimvde 2020-06-04 15:17:58 +01:00 committed by Oliver Woodman
parent 3474c39c10
commit 12a9351781
5 changed files with 207 additions and 250 deletions

View File

@ -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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -15,10 +15,7 @@
*/ */
package com.google.android.exoplayer2.util; package com.google.android.exoplayer2.util;
import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_MATROSKA; import static com.google.android.exoplayer2.util.FileTypes.getFormatFromExtension;
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.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import android.net.Uri; import android.net.Uri;
@ -26,24 +23,23 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
/** Tests for {@link FilenameUtilTest}. */ /** Tests for {@link FileTypesTest}. */
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class FilenameUtilTest { public class FileTypesTest {
@Test @Test
public void getFormatFromExtension_withExtension_returnsExpectedFormat() { 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 @Test
public void getFormatFromExtension_withExtensionPrefix_returnsExpectedFormat() { 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 @Test
public void getFormatFromExtension_withUnknownExtension_returnsUnknownFormat() { public void getFormatFromExtension_withUnknownExtension_returnsUnknownFormat() {
assertThat(getFormatFromExtension(Uri.parse("filename.unknown"))) assertThat(getFormatFromExtension(Uri.parse("filename.unknown"))).isEqualTo(FileTypes.UNKNOWN);
.isEqualTo(FILE_FORMAT_UNKNOWN);
} }
@Test @Test
@ -51,11 +47,11 @@ public class FilenameUtilTest {
assertThat( assertThat(
getFormatFromExtension( getFormatFromExtension(
Uri.parse("http://www.example.com/filename.mp3?query=myquery#fragment"))) Uri.parse("http://www.example.com/filename.mp3?query=myquery#fragment")))
.isEqualTo(FILE_FORMAT_MP3); .isEqualTo(FileTypes.MP3);
} }
@Test @Test
public void getFormatFromExtension_withNullFilename_returnsUnknownFormat() { public void getFormatFromExtension_withNullFilename_returnsUnknownFormat() {
assertThat(getFormatFromExtension(Uri.EMPTY)).isEqualTo(FILE_FORMAT_UNKNOWN); assertThat(getFormatFromExtension(Uri.EMPTY)).isEqualTo(FileTypes.UNKNOWN);
} }
} }

View File

@ -15,20 +15,7 @@
*/ */
package com.google.android.exoplayer2.extractor; package com.google.android.exoplayer2.extractor;
import static com.google.android.exoplayer2.util.FilenameUtil.FILE_FORMAT_AC3; import static com.google.android.exoplayer2.util.FileTypes.getFormatFromExtension;
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 android.net.Uri; import android.net.Uri;
import androidx.annotation.Nullable; 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.TsExtractor;
import com.google.android.exoplayer2.extractor.ts.TsPayloadReader; import com.google.android.exoplayer2.extractor.ts.TsPayloadReader;
import com.google.android.exoplayer2.extractor.wav.WavExtractor; 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 com.google.android.exoplayer2.util.TimestampAdjuster;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.util.ArrayList; import java.util.ArrayList;
@ -86,19 +73,19 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
// https://docs.google.com/document/d/1w2mKaWMxfz2Ei8-LdxqbPs1VLe_oudB-eryXXw9OvQQ. // https://docs.google.com/document/d/1w2mKaWMxfz2Ei8-LdxqbPs1VLe_oudB-eryXXw9OvQQ.
private static final int[] DEFAULT_EXTRACTOR_ORDER = private static final int[] DEFAULT_EXTRACTOR_ORDER =
new int[] { new int[] {
FILE_FORMAT_FLV, FileTypes.FLV,
FILE_FORMAT_FLAC, FileTypes.FLAC,
FILE_FORMAT_WAV, FileTypes.WAV,
FILE_FORMAT_MP4, FileTypes.MP4,
FILE_FORMAT_AMR, FileTypes.AMR,
FILE_FORMAT_PS, FileTypes.PS,
FILE_FORMAT_OGG, FileTypes.OGG,
FILE_FORMAT_TS, FileTypes.TS,
FILE_FORMAT_MATROSKA, FileTypes.MATROSKA,
FILE_FORMAT_ADTS, FileTypes.ADTS,
FILE_FORMAT_AC3, FileTypes.AC3,
FILE_FORMAT_AC4, FileTypes.AC4,
FILE_FORMAT_MP3, FileTypes.MP3,
}; };
@Nullable @Nullable
@ -285,7 +272,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
public synchronized Extractor[] createExtractors(Uri uri) { public synchronized Extractor[] createExtractors(Uri uri) {
List<Extractor> extractors = new ArrayList<>(/* initialCapacity= */ 14); List<Extractor> extractors = new ArrayList<>(/* initialCapacity= */ 14);
@FilenameUtil.FileFormat int extensionFormat = getFormatFromExtension(uri); @FileTypes.Type int extensionFormat = getFormatFromExtension(uri);
addExtractorsForFormat(extensionFormat, extractors); addExtractorsForFormat(extensionFormat, extractors);
for (int format : DEFAULT_EXTRACTOR_ORDER) { for (int format : DEFAULT_EXTRACTOR_ORDER) {
@ -297,16 +284,15 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
return extractors.toArray(new Extractor[extractors.size()]); return extractors.toArray(new Extractor[extractors.size()]);
} }
private void addExtractorsForFormat( private void addExtractorsForFormat(@FileTypes.Type int fileFormat, List<Extractor> extractors) {
@FilenameUtil.FileFormat int fileFormat, List<Extractor> extractors) {
switch (fileFormat) { switch (fileFormat) {
case FILE_FORMAT_AC3: case FileTypes.AC3:
extractors.add(new Ac3Extractor()); extractors.add(new Ac3Extractor());
break; break;
case FILE_FORMAT_AC4: case FileTypes.AC4:
extractors.add(new Ac4Extractor()); extractors.add(new Ac4Extractor());
break; break;
case FILE_FORMAT_ADTS: case FileTypes.ADTS:
extractors.add( extractors.add(
new AdtsExtractor( new AdtsExtractor(
adtsFlags adtsFlags
@ -314,7 +300,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
? AdtsExtractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING ? AdtsExtractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
: 0))); : 0)));
break; break;
case FILE_FORMAT_AMR: case FileTypes.AMR:
extractors.add( extractors.add(
new AmrExtractor( new AmrExtractor(
amrFlags amrFlags
@ -322,7 +308,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
? AmrExtractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING ? AmrExtractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
: 0))); : 0)));
break; break;
case FILE_FORMAT_FLAC: case FileTypes.FLAC:
if (FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR != null) { if (FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR != null) {
try { try {
extractors.add(FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR.newInstance()); extractors.add(FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR.newInstance());
@ -334,13 +320,13 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
extractors.add(new FlacExtractor(coreFlacFlags)); extractors.add(new FlacExtractor(coreFlacFlags));
} }
break; break;
case FILE_FORMAT_FLV: case FileTypes.FLV:
extractors.add(new FlvExtractor()); extractors.add(new FlvExtractor());
break; break;
case FILE_FORMAT_MATROSKA: case FileTypes.MATROSKA:
extractors.add(new MatroskaExtractor(matroskaFlags)); extractors.add(new MatroskaExtractor(matroskaFlags));
break; break;
case FILE_FORMAT_MP3: case FileTypes.MP3:
extractors.add( extractors.add(
new Mp3Extractor( new Mp3Extractor(
mp3Flags mp3Flags
@ -348,20 +334,20 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
? Mp3Extractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING ? Mp3Extractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
: 0))); : 0)));
break; break;
case FILE_FORMAT_MP4: case FileTypes.MP4:
extractors.add(new FragmentedMp4Extractor(fragmentedMp4Flags)); extractors.add(new FragmentedMp4Extractor(fragmentedMp4Flags));
extractors.add(new Mp4Extractor(mp4Flags)); extractors.add(new Mp4Extractor(mp4Flags));
break; break;
case FILE_FORMAT_OGG: case FileTypes.OGG:
extractors.add(new OggExtractor()); extractors.add(new OggExtractor());
break; break;
case FILE_FORMAT_PS: case FileTypes.PS:
extractors.add(new PsExtractor()); extractors.add(new PsExtractor());
break; break;
case FILE_FORMAT_TS: case FileTypes.TS:
extractors.add(new TsExtractor(tsMode, tsFlags)); extractors.add(new TsExtractor(tsMode, tsFlags));
break; break;
case FILE_FORMAT_WAV: case FileTypes.WAV:
extractors.add(new WavExtractor()); extractors.add(new WavExtractor());
break; break;
default: default:

View File

@ -15,14 +15,7 @@
*/ */
package com.google.android.exoplayer2.source.hls; 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.FileTypes.getFormatFromExtension;
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 android.net.Uri; import android.net.Uri;
import android.text.TextUtils; 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.extractor.ts.TsExtractor;
import com.google.android.exoplayer2.metadata.Metadata; import com.google.android.exoplayer2.metadata.Metadata;
import com.google.android.exoplayer2.util.Assertions; 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.MimeTypes;
import com.google.android.exoplayer2.util.TimestampAdjuster; import com.google.android.exoplayer2.util.TimestampAdjuster;
import java.io.EOFException; import java.io.EOFException;
@ -195,21 +188,21 @@ public final class DefaultHlsExtractorFactory implements HlsExtractorFactory {
if (MimeTypes.TEXT_VTT.equals(format.sampleMimeType)) { if (MimeTypes.TEXT_VTT.equals(format.sampleMimeType)) {
return new WebvttExtractor(format.language, timestampAdjuster); return new WebvttExtractor(format.language, timestampAdjuster);
} }
@FilenameUtil.FileFormat int fileFormat = getFormatFromExtension(uri); @FileTypes.Type int fileFormat = getFormatFromExtension(uri);
switch (fileFormat) { switch (fileFormat) {
case FILE_FORMAT_WEBVTT: case FileTypes.WEBVTT:
return new WebvttExtractor(format.language, timestampAdjuster); return new WebvttExtractor(format.language, timestampAdjuster);
case FILE_FORMAT_ADTS: case FileTypes.ADTS:
return new AdtsExtractor(); return new AdtsExtractor();
case FILE_FORMAT_AC3: case FileTypes.AC3:
return new Ac3Extractor(); return new Ac3Extractor();
case FILE_FORMAT_AC4: case FileTypes.AC4:
return new Ac4Extractor(); return new Ac4Extractor();
case FILE_FORMAT_MP3: case FileTypes.MP3:
return new Mp3Extractor(/* flags= */ 0, /* forcedFirstSampleTimestampUs= */ 0); return new Mp3Extractor(/* flags= */ 0, /* forcedFirstSampleTimestampUs= */ 0);
case FILE_FORMAT_MP4: case FileTypes.MP4:
return createFragmentedMp4Extractor(timestampAdjuster, format, muxedCaptionFormats); return createFragmentedMp4Extractor(timestampAdjuster, format, muxedCaptionFormats);
case FILE_FORMAT_TS: case FileTypes.TS:
return createTsExtractor( return createTsExtractor(
payloadReaderFactoryFlags, payloadReaderFactoryFlags,
exposeCea608WhenMissingDeclarations, exposeCea608WhenMissingDeclarations,