From bd3a68b6f18e5f01f37059703229166737041d19 Mon Sep 17 00:00:00 2001 From: Andy Hung Date: Tue, 6 Apr 2021 10:18:00 -0700 Subject: [PATCH] Audio: Add ENCODING_DTS_UHD See ETSI TS 103 491 V1.2.1 (2019-05) DTS-UHD Audio Format; Delivery of Channels, Objects and Ambisonic Sound Fields Test: atest AudioFormatTest Bug: 184538197 Merged-In: I740a9ba041ad444ead5513fb3b632a78d391ab1c Change-Id: I740a9ba041ad444ead5513fb3b632a78d391ab1c --- core/api/current.txt | 1 + core/jni/android_media_AudioFormat.h | 5 +++++ media/java/android/media/AudioFormat.java | 18 ++++++++++++++++-- media/java/android/media/AudioSystem.java | 2 ++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index d3c398d388b96..97d7dba820065 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -19379,6 +19379,7 @@ package android.media { 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 + field public static final int ENCODING_DTS_UHD = 27; // 0x1b field public static final int ENCODING_E_AC3 = 6; // 0x6 field public static final int ENCODING_E_AC3_JOC = 18; // 0x12 field public static final int ENCODING_IEC61937 = 13; // 0xd diff --git a/core/jni/android_media_AudioFormat.h b/core/jni/android_media_AudioFormat.h index 5630a1e23f83b..7fde92c945312 100644 --- a/core/jni/android_media_AudioFormat.h +++ b/core/jni/android_media_AudioFormat.h @@ -45,6 +45,7 @@ #define ENCODING_MPEGH_BL_L4 24 #define ENCODING_MPEGH_LC_L3 25 #define ENCODING_MPEGH_LC_L4 26 +#define ENCODING_DTS_UHD 27 #define ENCODING_INVALID 0 #define ENCODING_DEFAULT 1 @@ -110,6 +111,8 @@ static inline audio_format_t audioFormatToNative(int audioFormat) return AUDIO_FORMAT_MPEGH_LC_L3; case ENCODING_MPEGH_LC_L4: return AUDIO_FORMAT_MPEGH_LC_L4; + case ENCODING_DTS_UHD: + return AUDIO_FORMAT_DTS_UHD; default: return AUDIO_FORMAT_INVALID; } @@ -179,6 +182,8 @@ static inline int audioFormatFromNative(audio_format_t nativeFormat) return ENCODING_MPEGH_LC_L3; case AUDIO_FORMAT_MPEGH_LC_L4: return ENCODING_MPEGH_LC_L4; + case AUDIO_FORMAT_DTS_UHD: + return ENCODING_DTS_UHD; 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 c77f418966a78..f2e8ee0f90533 100644 --- a/media/java/android/media/AudioFormat.java +++ b/media/java/android/media/AudioFormat.java @@ -324,6 +324,8 @@ public final class AudioFormat implements Parcelable { public static final int ENCODING_MPEGH_LC_L3 = 25; /** Audio data format: MPEG-H low complexity profile, level 4 */ public static final int ENCODING_MPEGH_LC_L4 = 26; + /** Audio data format: DTS UHD compressed */ + public static final int ENCODING_DTS_UHD = 27; /** @hide */ public static String toLogFriendlyEncoding(int enc) { @@ -380,6 +382,8 @@ public final class AudioFormat implements Parcelable { return "ENCODING_MPEGH_LC_L3"; case ENCODING_MPEGH_LC_L4: return "ENCODING_MPEGH_LC_L4"; + case ENCODING_DTS_UHD: + return "ENCODING_DTS_UHD"; default : return "invalid encoding " + enc; } @@ -659,6 +663,7 @@ public final class AudioFormat implements Parcelable { case ENCODING_MPEGH_BL_L4: case ENCODING_MPEGH_LC_L3: case ENCODING_MPEGH_LC_L4: + case ENCODING_DTS_UHD: return true; default: return false; @@ -694,6 +699,7 @@ public final class AudioFormat implements Parcelable { case ENCODING_MPEGH_BL_L4: case ENCODING_MPEGH_LC_L3: case ENCODING_MPEGH_LC_L4: + case ENCODING_DTS_UHD: return true; default: return false; @@ -732,6 +738,7 @@ public final class AudioFormat implements Parcelable { case ENCODING_MPEGH_BL_L4: case ENCODING_MPEGH_LC_L3: case ENCODING_MPEGH_LC_L4: + case ENCODING_DTS_UHD: return false; case ENCODING_INVALID: default: @@ -770,6 +777,7 @@ public final class AudioFormat implements Parcelable { case ENCODING_MPEGH_BL_L4: case ENCODING_MPEGH_LC_L3: case ENCODING_MPEGH_LC_L4: + case ENCODING_DTS_UHD: return false; case ENCODING_INVALID: default: @@ -1056,6 +1064,7 @@ public final class AudioFormat implements Parcelable { case ENCODING_MPEGH_BL_L4: case ENCODING_MPEGH_LC_L3: case ENCODING_MPEGH_LC_L4: + case ENCODING_DTS_UHD: mEncoding = encoding; break; case ENCODING_INVALID: @@ -1282,7 +1291,8 @@ public final class AudioFormat implements Parcelable { ENCODING_MPEGH_BL_L3, ENCODING_MPEGH_BL_L4, ENCODING_MPEGH_LC_L3, - ENCODING_MPEGH_LC_L4 } + ENCODING_MPEGH_LC_L4, + ENCODING_DTS_UHD } ) @Retention(RetentionPolicy.SOURCE) public @interface Encoding {} @@ -1302,6 +1312,7 @@ public final class AudioFormat implements Parcelable { ENCODING_MPEGH_BL_L4, ENCODING_MPEGH_LC_L3, ENCODING_MPEGH_LC_L4, + ENCODING_DTS_UHD }; /** @hide */ @@ -1318,7 +1329,8 @@ public final class AudioFormat implements Parcelable { ENCODING_MPEGH_BL_L3, ENCODING_MPEGH_BL_L4, ENCODING_MPEGH_LC_L3, - ENCODING_MPEGH_LC_L4 } + ENCODING_MPEGH_LC_L4, + ENCODING_DTS_UHD } ) @Retention(RetentionPolicy.SOURCE) public @interface SurroundSoundEncoding {} @@ -1360,6 +1372,8 @@ public final class AudioFormat implements Parcelable { return "MPEG-H 3D Audio low complexity profile level 3"; case ENCODING_MPEGH_LC_L4: return "MPEG-H 3D Audio low complexity profile level 4"; + case ENCODING_DTS_UHD: + return "DTS UHD"; default: return "Unknown surround sound format"; } diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index 18c8a72b165bb..d2ba99f36783b 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -424,6 +424,8 @@ public class AudioSystem return "AUDIO_FORMAT_MAT_2_0"; // (MAT | MAT_SUB_2_0) case /* AUDIO_FORMAT_MAT_2_1 */ 0x24000003: return "AUDIO_FORMAT_MAT_2_1"; // (MAT | MAT_SUB_2_1) + case /* AUDIO_FORMAT_DTS_UHD */ 0x2E000000: + return "AUDIO_FORMAT_DTS_UHD"; default: return "AUDIO_FORMAT_(" + audioFormat + ")"; }