From d01d0cfd4b20cfa3bf7776cda397db5ebf7dcfa3 Mon Sep 17 00:00:00 2001 From: krocard Date: Thu, 23 Apr 2020 21:20:02 +0100 Subject: [PATCH] Define a interface type for Aac object type. PiperOrigin-RevId: 308115863 --- .../android/exoplayer2/audio/AacUtil.java | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/library/common/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java b/library/common/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java index 024f848ea2..8de423042f 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java @@ -15,11 +15,15 @@ */ package com.google.android.exoplayer2.audio; +import androidx.annotation.IntDef; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ParserException; import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Log; import com.google.android.exoplayer2.util.ParsableBitArray; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; /** Utility methods for handling AAC audio streams. */ public final class AacUtil { @@ -132,19 +136,37 @@ public final class AacUtil { private static final String CODECS_STRING_PREFIX = "mp4a.40."; // Advanced Audio Coding Low-Complexity profile. - private static final int AUDIO_OBJECT_TYPE_AAC_LC = 2; + public static final int AUDIO_OBJECT_TYPE_AAC_LC = 2; // Spectral Band Replication. - private static final int AUDIO_OBJECT_TYPE_AAC_SBR = 5; + public static final int AUDIO_OBJECT_TYPE_AAC_SBR = 5; // Error Resilient Bit-Sliced Arithmetic Coding. - private static final int AUDIO_OBJECT_TYPE_AAC_ER_BSAC = 22; + public static final int AUDIO_OBJECT_TYPE_AAC_ER_BSAC = 22; // Enhanced low delay. - private static final int AUDIO_OBJECT_TYPE_AAC_ELD = 23; + public static final int AUDIO_OBJECT_TYPE_AAC_ELD = 23; // Parametric Stereo. - private static final int AUDIO_OBJECT_TYPE_AAC_PS = 29; + public static final int AUDIO_OBJECT_TYPE_AAC_PS = 29; // Escape code for extended audio object types. private static final int AUDIO_OBJECT_TYPE_ESCAPE = 31; // Extended high efficiency. - private static final int AUDIO_OBJECT_TYPE_AAC_XHE = 42; + public static final int AUDIO_OBJECT_TYPE_AAC_XHE = 42; + + /** + * Valid AAC Audio object types. One of {@link #AUDIO_OBJECT_TYPE_AAC_LC}, {@link + * #AUDIO_OBJECT_TYPE_AAC_SBR}, {@link #AUDIO_OBJECT_TYPE_AAC_ER_BSAC}, {@link + * #AUDIO_OBJECT_TYPE_AAC_ELD}, {@link #AUDIO_OBJECT_TYPE_AAC_PS} or {@link + * #AUDIO_OBJECT_TYPE_AAC_XHE}. + */ + @Documented + @Retention(RetentionPolicy.SOURCE) + @IntDef({ + AUDIO_OBJECT_TYPE_AAC_LC, + AUDIO_OBJECT_TYPE_AAC_SBR, + AUDIO_OBJECT_TYPE_AAC_ER_BSAC, + AUDIO_OBJECT_TYPE_AAC_ELD, + AUDIO_OBJECT_TYPE_AAC_PS, + AUDIO_OBJECT_TYPE_AAC_XHE + }) + public @interface AacAudioObjectType {} /** * Parses an AAC AudioSpecificConfig, as defined in ISO 14496-3 1.6.2.1 @@ -275,7 +297,7 @@ public final class AacUtil { /** Returns the encoding for a given AAC audio object type. */ @C.Encoding - public static int getEncodingForAudioObjectType(int audioObjectType) { + public static int getEncodingForAudioObjectType(@AacAudioObjectType int audioObjectType) { switch (audioObjectType) { case AUDIO_OBJECT_TYPE_AAC_LC: return C.ENCODING_AAC_LC;