diff --git a/library/common/src/main/java/com/google/android/exoplayer2/util/MimeTypes.java b/library/common/src/main/java/com/google/android/exoplayer2/util/MimeTypes.java
index a3bf921172..7320847483 100644
--- a/library/common/src/main/java/com/google/android/exoplayer2/util/MimeTypes.java
+++ b/library/common/src/main/java/com/google/android/exoplayer2/util/MimeTypes.java
@@ -19,8 +19,6 @@ import android.text.TextUtils;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import com.google.android.exoplayer2.C;
-import com.google.android.exoplayer2.audio.AacUtil;
-import com.google.android.exoplayer2.audio.Ac3Util;
import com.google.common.base.Ascii;
import java.util.ArrayList;
import java.util.regex.Matcher;
@@ -120,6 +118,14 @@ public final class MimeTypes {
public static final String IMAGE_JPEG = BASE_TYPE_IMAGE + "/jpeg";
+ /**
+ * A non-standard codec string for E-AC3-JOC. Use of this constant allows for disambiguation
+ * between regular E-AC3 ("ec-3") and E-AC3-JOC ("ec+3") streams from the codec string alone. The
+ * standard is to use "ec-3" for both, as per the MP4RA
+ * registered codec types.
+ */
+ public static final String CODEC_E_AC3_JOC = "ec+3";
+
private static final ArrayList customMimeTypes = new ArrayList<>();
private static final Pattern MP4A_RFC_6381_CODEC_PATTERN =
@@ -214,8 +220,7 @@ public final class MimeTypes {
if (objectType == null) {
return false;
}
- @C.Encoding
- int encoding = AacUtil.getEncodingForAudioObjectType(objectType.audioObjectTypeIndication);
+ @C.Encoding int encoding = objectType.getEncoding();
// xHE-AAC is an exception in which it's not true that all samples will be sync samples.
// Also return false for ENCODING_INVALID, which indicates we weren't able to parse the
// encoding from the codec string.
@@ -377,7 +382,7 @@ public final class MimeTypes {
return MimeTypes.AUDIO_AC3;
} else if (codec.startsWith("ec-3") || codec.startsWith("dec3")) {
return MimeTypes.AUDIO_E_AC3;
- } else if (codec.startsWith(Ac3Util.E_AC3_JOC_CODEC_STRING)) {
+ } else if (codec.startsWith(CODEC_E_AC3_JOC)) {
return MimeTypes.AUDIO_E_AC3_JOC;
} else if (codec.startsWith("ac-4") || codec.startsWith("dac4")) {
return MimeTypes.AUDIO_AC4;
@@ -514,7 +519,7 @@ public final class MimeTypes {
if (objectType == null) {
return C.ENCODING_INVALID;
}
- return AacUtil.getEncodingForAudioObjectType(objectType.audioObjectTypeIndication);
+ return objectType.getEncoding();
case MimeTypes.AUDIO_AC3:
return C.ENCODING_AC3;
case MimeTypes.AUDIO_E_AC3:
@@ -665,12 +670,34 @@ public final class MimeTypes {
/** The Object Type Indication of the MP4A codec. */
public final int objectTypeIndication;
/** The Audio Object Type Indication of the MP4A codec, or 0 if it is absent. */
- @AacUtil.AacAudioObjectType public final int audioObjectTypeIndication;
+ public final int audioObjectTypeIndication;
public Mp4aObjectType(int objectTypeIndication, int audioObjectTypeIndication) {
this.objectTypeIndication = objectTypeIndication;
this.audioObjectTypeIndication = audioObjectTypeIndication;
}
+
+ /** Returns the encoding for {@link #audioObjectTypeIndication}. */
+ @C.Encoding
+ public int getEncoding() {
+ // See AUDIO_OBJECT_TYPE_AAC_* constants in AacUtil.
+ switch (audioObjectTypeIndication) {
+ case 2:
+ return C.ENCODING_AAC_LC;
+ case 5:
+ return C.ENCODING_AAC_HE_V1;
+ case 29:
+ return C.ENCODING_AAC_HE_V2;
+ case 42:
+ return C.ENCODING_AAC_XHE;
+ case 23:
+ return C.ENCODING_AAC_ELD;
+ case 22:
+ return C.ENCODING_AAC_ER_BSAC;
+ default:
+ return C.ENCODING_INVALID;
+ }
+ }
}
private static final class CustomMimeType {
diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java
index f58e428a6f..970ddf0829 100644
--- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java
+++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java
@@ -24,7 +24,6 @@ import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.ParserException;
-import com.google.android.exoplayer2.audio.Ac3Util;
import com.google.android.exoplayer2.drm.DrmInitData;
import com.google.android.exoplayer2.drm.DrmInitData.SchemeData;
import com.google.android.exoplayer2.extractor.mp4.PsshAtomUtil;
@@ -776,7 +775,7 @@ public class DashManifestParser extends DefaultHandler
if (MimeTypes.AUDIO_E_AC3.equals(sampleMimeType)) {
sampleMimeType = parseEac3SupplementalProperties(supplementalProperties);
if (MimeTypes.AUDIO_E_AC3_JOC.equals(sampleMimeType)) {
- codecs = Ac3Util.E_AC3_JOC_CODEC_STRING;
+ codecs = MimeTypes.CODEC_E_AC3_JOC;
}
}
@C.SelectionFlags int selectionFlags = parseSelectionFlagsFromRoleDescriptors(roleDescriptors);
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java
similarity index 95%
rename from library/common/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java
rename to library/extractor/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java
index 2684273b2e..9fe10f1f86 100644
--- a/library/common/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java
@@ -300,27 +300,6 @@ public final class AacUtil {
return specificConfig;
}
- /** Returns the encoding for a given AAC audio object type. */
- @C.Encoding
- public static int getEncodingForAudioObjectType(@AacAudioObjectType int audioObjectType) {
- switch (audioObjectType) {
- case AUDIO_OBJECT_TYPE_AAC_LC:
- return C.ENCODING_AAC_LC;
- case AUDIO_OBJECT_TYPE_AAC_SBR:
- return C.ENCODING_AAC_HE_V1;
- case AUDIO_OBJECT_TYPE_AAC_PS:
- return C.ENCODING_AAC_HE_V2;
- case AUDIO_OBJECT_TYPE_AAC_XHE:
- return C.ENCODING_AAC_XHE;
- case AUDIO_OBJECT_TYPE_AAC_ELD:
- return C.ENCODING_AAC_ELD;
- case AUDIO_OBJECT_TYPE_AAC_ER_BSAC:
- return C.ENCODING_AAC_ER_BSAC;
- default:
- return C.ENCODING_INVALID;
- }
- }
-
/**
* Returns the AAC audio object type as specified in 14496-3 (2005) Table 1.14.
*
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java
similarity index 98%
rename from library/common/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java
rename to library/extractor/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java
index dbb234c5d8..f3dfb20f9b 100644
--- a/library/common/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java
+++ b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java
@@ -91,13 +91,6 @@ public final class Ac3Util {
}
}
- /**
- * A non-standard codec string for E-AC3-JOC. Use of this constant allows for disambiguation
- * between regular E-AC3 ("ec-3") and E-AC3-JOC ("ec+3") streams from the codec string alone. The
- * standard is to use "ec-3" for both, as per the MP4RA
- * registered codec types.
- */
- public static final String E_AC3_JOC_CODEC_STRING = "ec+3";
/** Maximum rate for an AC-3 audio stream, in bytes per second. */
public static final int AC3_MAX_RATE_BYTES_PER_SECOND = 640 * 1000 / 8;
/** Maximum rate for an E-AC-3 audio stream, in bytes per second. */
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/audio/Ac4Util.java b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/Ac4Util.java
similarity index 100%
rename from library/common/src/main/java/com/google/android/exoplayer2/audio/Ac4Util.java
rename to library/extractor/src/main/java/com/google/android/exoplayer2/audio/Ac4Util.java
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/audio/DtsUtil.java b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/DtsUtil.java
similarity index 100%
rename from library/common/src/main/java/com/google/android/exoplayer2/audio/DtsUtil.java
rename to library/extractor/src/main/java/com/google/android/exoplayer2/audio/DtsUtil.java
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/audio/MpegAudioUtil.java b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/MpegAudioUtil.java
similarity index 100%
rename from library/common/src/main/java/com/google/android/exoplayer2/audio/MpegAudioUtil.java
rename to library/extractor/src/main/java/com/google/android/exoplayer2/audio/MpegAudioUtil.java
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/audio/OpusUtil.java b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/OpusUtil.java
similarity index 100%
rename from library/common/src/main/java/com/google/android/exoplayer2/audio/OpusUtil.java
rename to library/extractor/src/main/java/com/google/android/exoplayer2/audio/OpusUtil.java
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/audio/WavUtil.java b/library/extractor/src/main/java/com/google/android/exoplayer2/audio/WavUtil.java
similarity index 100%
rename from library/common/src/main/java/com/google/android/exoplayer2/audio/WavUtil.java
rename to library/extractor/src/main/java/com/google/android/exoplayer2/audio/WavUtil.java
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/video/AvcConfig.java b/library/extractor/src/main/java/com/google/android/exoplayer2/video/AvcConfig.java
similarity index 100%
rename from library/common/src/main/java/com/google/android/exoplayer2/video/AvcConfig.java
rename to library/extractor/src/main/java/com/google/android/exoplayer2/video/AvcConfig.java
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/video/DolbyVisionConfig.java b/library/extractor/src/main/java/com/google/android/exoplayer2/video/DolbyVisionConfig.java
similarity index 100%
rename from library/common/src/main/java/com/google/android/exoplayer2/video/DolbyVisionConfig.java
rename to library/extractor/src/main/java/com/google/android/exoplayer2/video/DolbyVisionConfig.java
diff --git a/library/common/src/main/java/com/google/android/exoplayer2/video/HevcConfig.java b/library/extractor/src/main/java/com/google/android/exoplayer2/video/HevcConfig.java
similarity index 100%
rename from library/common/src/main/java/com/google/android/exoplayer2/video/HevcConfig.java
rename to library/extractor/src/main/java/com/google/android/exoplayer2/video/HevcConfig.java
diff --git a/library/common/src/test/java/com/google/android/exoplayer2/audio/Ac3UtilTest.java b/library/extractor/src/test/java/com/google/android/exoplayer2/audio/Ac3UtilTest.java
similarity index 100%
rename from library/common/src/test/java/com/google/android/exoplayer2/audio/Ac3UtilTest.java
rename to library/extractor/src/test/java/com/google/android/exoplayer2/audio/Ac3UtilTest.java
diff --git a/library/common/src/test/java/com/google/android/exoplayer2/audio/OpusUtilTest.java b/library/extractor/src/test/java/com/google/android/exoplayer2/audio/OpusUtilTest.java
similarity index 100%
rename from library/common/src/test/java/com/google/android/exoplayer2/audio/OpusUtilTest.java
rename to library/extractor/src/test/java/com/google/android/exoplayer2/audio/OpusUtilTest.java
diff --git a/library/common/src/test/java/com/google/android/exoplayer2/video/HevcConfigTest.java b/library/extractor/src/test/java/com/google/android/exoplayer2/video/HevcConfigTest.java
similarity index 100%
rename from library/common/src/test/java/com/google/android/exoplayer2/video/HevcConfigTest.java
rename to library/extractor/src/test/java/com/google/android/exoplayer2/video/HevcConfigTest.java
diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java
index ce44211b31..ac8bf1e5a8 100644
--- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java
+++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java
@@ -26,7 +26,6 @@ import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.ParserException;
-import com.google.android.exoplayer2.audio.Ac3Util;
import com.google.android.exoplayer2.drm.DrmInitData;
import com.google.android.exoplayer2.drm.DrmInitData.SchemeData;
import com.google.android.exoplayer2.extractor.mp4.PsshAtomUtil;
@@ -518,7 +517,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser