diff options
| author | 2018-11-05 18:32:18 +0000 | |
|---|---|---|
| committer | 2018-11-05 18:32:18 +0000 | |
| commit | ba52b2b24f6303cfde6de55152e886f2ecdb8a04 (patch) | |
| tree | 578da42a00e5df666a073a963ad8417cc0616958 | |
| parent | b5defbc79eb7fd2e3b772dea898ffe8ca874297c (diff) | |
| parent | 98dbab1bbb3819b6b4bf60b5ff6ce3f42e2e25d5 (diff) | |
Merge "Audio: Add Dolby MAT format"
| -rwxr-xr-x | api/current.txt | 1 | ||||
| -rw-r--r-- | core/jni/android_media_AudioFormat.h | 8 | ||||
| -rw-r--r-- | media/java/android/media/AudioFormat.java | 193 |
3 files changed, 114 insertions, 88 deletions
diff --git a/api/current.txt b/api/current.txt index 70d7fd29d55e..407ad0b6e6d5 100755 --- a/api/current.txt +++ b/api/current.txt @@ -22714,6 +22714,7 @@ package android.media { field public static final int ENCODING_AC3 = 5; // 0x5 field public static final int ENCODING_AC4 = 17; // 0x11 field public static final int ENCODING_DEFAULT = 1; // 0x1 + field public static final int ENCODING_DOLBY_MAT = 19; // 0x13 field public static final int ENCODING_DOLBY_TRUEHD = 14; // 0xe field public static final int ENCODING_DTS = 7; // 0x7 field public static final int ENCODING_DTS_HD = 8; // 0x8 diff --git a/core/jni/android_media_AudioFormat.h b/core/jni/android_media_AudioFormat.h index f7f13a5f0431..99b5f8592e5d 100644 --- a/core/jni/android_media_AudioFormat.h +++ b/core/jni/android_media_AudioFormat.h @@ -37,6 +37,7 @@ #define ENCODING_AAC_XHE 16 #define ENCODING_AC4 17 #define ENCODING_E_AC3_JOC 18 +#define ENCODING_DOLBY_MAT 19 #define ENCODING_INVALID 0 #define ENCODING_DEFAULT 1 @@ -85,6 +86,8 @@ static inline audio_format_t audioFormatToNative(int audioFormat) return AUDIO_FORMAT_E_AC3_JOC; case ENCODING_DEFAULT: return AUDIO_FORMAT_DEFAULT; + case ENCODING_DOLBY_MAT: + return AUDIO_FORMAT_MAT; default: return AUDIO_FORMAT_INVALID; } @@ -134,6 +137,11 @@ static inline int audioFormatFromNative(audio_format_t nativeFormat) return ENCODING_AC4; case AUDIO_FORMAT_E_AC3_JOC: return ENCODING_E_AC3_JOC; + case AUDIO_FORMAT_MAT: + case AUDIO_FORMAT_MAT_1_0: + case AUDIO_FORMAT_MAT_2_0: + case AUDIO_FORMAT_MAT_2_1: + return ENCODING_DOLBY_MAT; case AUDIO_FORMAT_DEFAULT: return ENCODING_DEFAULT; default: diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java index b34f2700f520..3e3e65188761 100644 --- a/media/java/android/media/AudioFormat.java +++ b/media/java/android/media/AudioFormat.java @@ -273,6 +273,11 @@ public final class AudioFormat implements Parcelable { * supports {@link #ENCODING_E_AC3} but not {@link #ENCODING_E_AC3_JOC}. **/ public static final int ENCODING_E_AC3_JOC = 18; + /** Audio data format: Dolby MAT (Metadata-enhanced Audio Transmission) + * Dolby MAT bitstreams are used to transmit Dolby TrueHD, channel-based PCM, or PCM with + * metadata (object audio) over HDMI (e.g. Dolby Atmos content). + **/ + public static final int ENCODING_DOLBY_MAT = 19; /** @hide */ public static String toLogFriendlyEncoding(int enc) { @@ -313,6 +318,8 @@ public final class AudioFormat implements Parcelable { return "ENCODING_AC4"; case ENCODING_E_AC3_JOC: return "ENCODING_E_AC3_JOC"; + case ENCODING_DOLBY_MAT: + return "ENCODING_DOLBY_MAT"; default : return "invalid encoding " + enc; } @@ -520,26 +527,27 @@ public final class AudioFormat implements Parcelable { public static boolean isValidEncoding(int audioFormat) { switch (audioFormat) { - case ENCODING_PCM_16BIT: - case ENCODING_PCM_8BIT: - case ENCODING_PCM_FLOAT: - case ENCODING_AC3: - case ENCODING_E_AC3: - case ENCODING_DTS: - case ENCODING_DTS_HD: - case ENCODING_MP3: - case ENCODING_AAC_LC: - case ENCODING_AAC_HE_V1: - case ENCODING_AAC_HE_V2: - case ENCODING_IEC61937: - case ENCODING_DOLBY_TRUEHD: - case ENCODING_AAC_ELD: - case ENCODING_AAC_XHE: - case ENCODING_AC4: - case ENCODING_E_AC3_JOC: - return true; - default: - return false; + case ENCODING_PCM_16BIT: + case ENCODING_PCM_8BIT: + case ENCODING_PCM_FLOAT: + case ENCODING_AC3: + case ENCODING_E_AC3: + case ENCODING_DTS: + case ENCODING_DTS_HD: + case ENCODING_MP3: + case ENCODING_AAC_LC: + case ENCODING_AAC_HE_V1: + case ENCODING_AAC_HE_V2: + case ENCODING_IEC61937: + case ENCODING_DOLBY_TRUEHD: + case ENCODING_AAC_ELD: + case ENCODING_AAC_XHE: + case ENCODING_AC4: + case ENCODING_E_AC3_JOC: + case ENCODING_DOLBY_MAT: + return true; + default: + return false; } } @@ -547,26 +555,27 @@ public final class AudioFormat implements Parcelable { public static boolean isPublicEncoding(int audioFormat) { switch (audioFormat) { - case ENCODING_PCM_16BIT: - case ENCODING_PCM_8BIT: - case ENCODING_PCM_FLOAT: - case ENCODING_AC3: - case ENCODING_E_AC3: - case ENCODING_DTS: - case ENCODING_DTS_HD: - case ENCODING_MP3: - case ENCODING_AAC_LC: - case ENCODING_AAC_HE_V1: - case ENCODING_AAC_HE_V2: - case ENCODING_IEC61937: - case ENCODING_DOLBY_TRUEHD: - case ENCODING_AAC_ELD: - case ENCODING_AAC_XHE: - case ENCODING_AC4: - case ENCODING_E_AC3_JOC: - return true; - default: - return false; + case ENCODING_PCM_16BIT: + case ENCODING_PCM_8BIT: + case ENCODING_PCM_FLOAT: + case ENCODING_AC3: + case ENCODING_E_AC3: + case ENCODING_DTS: + case ENCODING_DTS_HD: + case ENCODING_MP3: + case ENCODING_AAC_LC: + case ENCODING_AAC_HE_V1: + case ENCODING_AAC_HE_V2: + case ENCODING_IEC61937: + case ENCODING_DOLBY_TRUEHD: + case ENCODING_AAC_ELD: + case ENCODING_AAC_XHE: + case ENCODING_AC4: + case ENCODING_E_AC3_JOC: + case ENCODING_DOLBY_MAT: + return true; + default: + return false; } } @@ -575,29 +584,30 @@ public final class AudioFormat implements Parcelable { public static boolean isEncodingLinearPcm(int audioFormat) { switch (audioFormat) { - case ENCODING_PCM_16BIT: - case ENCODING_PCM_8BIT: - case ENCODING_PCM_FLOAT: - case ENCODING_DEFAULT: - return true; - case ENCODING_AC3: - case ENCODING_E_AC3: - case ENCODING_DTS: - case ENCODING_DTS_HD: - case ENCODING_MP3: - case ENCODING_AAC_LC: - case ENCODING_AAC_HE_V1: - case ENCODING_AAC_HE_V2: - case ENCODING_IEC61937: // wrapped in PCM but compressed - case ENCODING_DOLBY_TRUEHD: - case ENCODING_AAC_ELD: - case ENCODING_AAC_XHE: - case ENCODING_AC4: - case ENCODING_E_AC3_JOC: - return false; - case ENCODING_INVALID: - default: - throw new IllegalArgumentException("Bad audio format " + audioFormat); + case ENCODING_PCM_16BIT: + case ENCODING_PCM_8BIT: + case ENCODING_PCM_FLOAT: + case ENCODING_DEFAULT: + return true; + case ENCODING_AC3: + case ENCODING_E_AC3: + case ENCODING_DTS: + case ENCODING_DTS_HD: + case ENCODING_MP3: + case ENCODING_AAC_LC: + case ENCODING_AAC_HE_V1: + case ENCODING_AAC_HE_V2: + case ENCODING_IEC61937: // wrapped in PCM but compressed + case ENCODING_DOLBY_TRUEHD: + case ENCODING_AAC_ELD: + case ENCODING_AAC_XHE: + case ENCODING_AC4: + case ENCODING_E_AC3_JOC: + case ENCODING_DOLBY_MAT: + return false; + case ENCODING_INVALID: + default: + throw new IllegalArgumentException("Bad audio format " + audioFormat); } } @@ -605,29 +615,30 @@ public final class AudioFormat implements Parcelable { public static boolean isEncodingLinearFrames(int audioFormat) { switch (audioFormat) { - case ENCODING_PCM_16BIT: - case ENCODING_PCM_8BIT: - case ENCODING_PCM_FLOAT: - case ENCODING_IEC61937: // same size as stereo PCM - case ENCODING_DEFAULT: - return true; - case ENCODING_AC3: - case ENCODING_E_AC3: - case ENCODING_DTS: - case ENCODING_DTS_HD: - case ENCODING_MP3: - case ENCODING_AAC_LC: - case ENCODING_AAC_HE_V1: - case ENCODING_AAC_HE_V2: - case ENCODING_DOLBY_TRUEHD: - case ENCODING_AAC_ELD: - case ENCODING_AAC_XHE: - case ENCODING_AC4: - case ENCODING_E_AC3_JOC: - return false; - case ENCODING_INVALID: - default: - throw new IllegalArgumentException("Bad audio format " + audioFormat); + case ENCODING_PCM_16BIT: + case ENCODING_PCM_8BIT: + case ENCODING_PCM_FLOAT: + case ENCODING_IEC61937: // same size as stereo PCM + case ENCODING_DEFAULT: + return true; + case ENCODING_AC3: + case ENCODING_E_AC3: + case ENCODING_DTS: + case ENCODING_DTS_HD: + case ENCODING_MP3: + case ENCODING_AAC_LC: + case ENCODING_AAC_HE_V1: + case ENCODING_AAC_HE_V2: + case ENCODING_DOLBY_TRUEHD: + case ENCODING_AAC_ELD: + case ENCODING_AAC_XHE: + case ENCODING_AC4: + case ENCODING_E_AC3_JOC: + case ENCODING_DOLBY_MAT: + return false; + case ENCODING_INVALID: + default: + throw new IllegalArgumentException("Bad audio format " + audioFormat); } } /** @@ -867,6 +878,7 @@ public final class AudioFormat implements Parcelable { case ENCODING_AAC_XHE: case ENCODING_AC4: case ENCODING_E_AC3_JOC: + case ENCODING_DOLBY_MAT: mEncoding = encoding; break; case ENCODING_INVALID: @@ -1083,7 +1095,8 @@ public final class AudioFormat implements Parcelable { ENCODING_AAC_ELD, ENCODING_AAC_XHE, ENCODING_AC4, - ENCODING_E_AC3_JOC } + ENCODING_E_AC3_JOC, + ENCODING_DOLBY_MAT } ) @Retention(RetentionPolicy.SOURCE) public @interface Encoding {} @@ -1098,6 +1111,7 @@ public final class AudioFormat implements Parcelable { ENCODING_DOLBY_TRUEHD, ENCODING_AC4, ENCODING_E_AC3_JOC, + ENCODING_DOLBY_MAT, }; /** @hide */ @@ -1109,7 +1123,8 @@ public final class AudioFormat implements Parcelable { ENCODING_AAC_LC, ENCODING_DOLBY_TRUEHD, ENCODING_AC4, - ENCODING_E_AC3_JOC } + ENCODING_E_AC3_JOC, + ENCODING_DOLBY_MAT } ) @Retention(RetentionPolicy.SOURCE) public @interface SurroundSoundEncoding {} @@ -1141,6 +1156,8 @@ public final class AudioFormat implements Parcelable { return "Dolby AC-4"; case ENCODING_E_AC3_JOC: return "Dolby Atmos in Dolby Digital Plus"; + case ENCODING_DOLBY_MAT: + return "Dolby MAT"; default: return "Unknown surround sound format"; } |