Audio: Add ENCODING_DTS_HD_MA, ENCODING_DTS_UHD_P2

The DTS codec capability in sink devices can be DTS Digital Surround,
DTS HD, DTS HD Master Audio (Lossless), DTS:X Profile 1,
or DTS:X Profile 2.

The AudioFormat class already supports ENCODING_DTS, ENCODING_DTS_HD,
and ENCODING_DTS_UHD compressed formats. To distinguish all the
five categories of DTS codec capabilities, two more compressed
formats need to be added in AudioFormat class.

 - The ENCODING_DTS_HD_MA format represents codec capability for
   DTS HD Master Audio (both w/core and coreless lossless)

 - The ENCODING_DTS_UHD_P1 format represents DTS:X Profile 1
   codec capability and is the same as existing ENCODING_DTS_UHD

 - The ENCODING_DTS_UHD_P2 format represents DTS:X Profile 2
   codec capability

The codec capability represented by the existing formats are:

 - ENCODING_DTS is for DTS Digital Surround

 - ENCODING_DTS_HD is for DTS HD (DTS 8Ch Discrete, DTS High Resolution,
   DTS Express)

 - ENCODING_DTS_UHD is for DTS:X Profile 1

Test: atest AudioFormatTest
Change-Id: Id4d332cc75beee40cfe8637a4ecef18a0d2a0908
This commit is contained in:
Rahul
2022-02-21 10:25:08 +05:30
committed by Dorin Drimus
parent 43023f5f04
commit 9c85cfc37e
5 changed files with 82 additions and 22 deletions

View File

@@ -20016,7 +20016,10 @@ package android.media {
field public static final int ENCODING_DRA = 28; // 0x1c
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_DTS_HD_MA = 29; // 0x1d
field @Deprecated public static final int ENCODING_DTS_UHD = 27; // 0x1b
field public static final int ENCODING_DTS_UHD_P1 = 27; // 0x1b
field public static final int ENCODING_DTS_UHD_P2 = 30; // 0x1e
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

View File

@@ -45,8 +45,10 @@
#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_DTS_UHD_P1 27
#define ENCODING_DRA 28
#define ENCODING_DTS_HD_MA 29
#define ENCODING_DTS_UHD_P2 30
#define ENCODING_INVALID 0
#define ENCODING_DEFAULT 1
@@ -112,10 +114,14 @@ 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:
case ENCODING_DTS_UHD_P1:
return AUDIO_FORMAT_DTS_UHD;
case ENCODING_DRA:
return AUDIO_FORMAT_DRA;
case ENCODING_DTS_HD_MA:
return AUDIO_FORMAT_DTS_HD_MA;
case ENCODING_DTS_UHD_P2:
return AUDIO_FORMAT_DTS_UHD_P2;
default:
return AUDIO_FORMAT_INVALID;
}
@@ -186,9 +192,13 @@ static inline int audioFormatFromNative(audio_format_t nativeFormat)
case AUDIO_FORMAT_MPEGH_LC_L4:
return ENCODING_MPEGH_LC_L4;
case AUDIO_FORMAT_DTS_UHD:
return ENCODING_DTS_UHD;
return ENCODING_DTS_UHD_P1;
case AUDIO_FORMAT_DRA:
return ENCODING_DRA;
case AUDIO_FORMAT_DTS_HD_MA:
return ENCODING_DTS_HD_MA;
case AUDIO_FORMAT_DTS_UHD_P2:
return ENCODING_DTS_UHD_P2;
case AUDIO_FORMAT_DEFAULT:
return ENCODING_DEFAULT;
default:

View File

@@ -350,10 +350,29 @@ 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;
/** Audio data format: DTS UHD Profile-1 compressed (aka DTS:X Profile 1)
* Has the same meaning and value as ENCODING_DTS_UHD_P1.
* @deprecated Use {@link #ENCODING_DTS_UHD_P1} instead. */
@Deprecated public static final int ENCODING_DTS_UHD = 27;
/** Audio data format: DRA compressed */
public static final int ENCODING_DRA = 28;
/** Audio data format: DTS HD Master Audio compressed
* DTS HD Master Audio stream is variable bit rate and contains lossless audio.
* Use {@link #ENCODING_DTS_HD_MA} for lossless audio content (DTS-HD MA Lossless)
* and use {@link #ENCODING_DTS_HD} for other DTS bitstreams with extension substream
* (DTS 8Ch Discrete, DTS Hi Res, DTS Express). */
public static final int ENCODING_DTS_HD_MA = 29;
/** Audio data format: DTS UHD Profile-1 compressed (aka DTS:X Profile 1)
* Has the same meaning and value as the deprecated {@link #ENCODING_DTS_UHD}.*/
public static final int ENCODING_DTS_UHD_P1 = 27;
/** Audio data format: DTS UHD Profile-2 compressed
* DTS-UHD Profile-2 supports delivery of Channel-Based Audio, Object-Based Audio
* and High Order Ambisonic presentations up to the fourth order.
* Use {@link #ENCODING_DTS_UHD_P1} to transmit DTS UHD Profile 1 (aka DTS:X Profile 1)
* bitstream.
* Use {@link #ENCODING_DTS_UHD_P2} to transmit DTS UHD Profile 2 (aka DTS:X Profile 2)
* bitstream. */
public static final int ENCODING_DTS_UHD_P2 = 30;
/** @hide */
public static String toLogFriendlyEncoding(int enc) {
@@ -410,10 +429,14 @@ 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";
case ENCODING_DTS_UHD_P1:
return "ENCODING_DTS_UHD_P1";
case ENCODING_DRA:
return "ENCODING_DRA";
case ENCODING_DTS_HD_MA:
return "ENCODING_DTS_HD_MA";
case ENCODING_DTS_UHD_P2:
return "ENCODING_DTS_UHD_P2";
default :
return "invalid encoding " + enc;
}
@@ -768,8 +791,10 @@ 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:
case ENCODING_DTS_UHD_P1:
case ENCODING_DRA:
case ENCODING_DTS_HD_MA:
case ENCODING_DTS_UHD_P2:
return true;
default:
return false;
@@ -805,8 +830,10 @@ 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:
case ENCODING_DTS_UHD_P1:
case ENCODING_DRA:
case ENCODING_DTS_HD_MA:
case ENCODING_DTS_UHD_P2:
return true;
default:
return false;
@@ -845,8 +872,10 @@ 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:
case ENCODING_DTS_UHD_P1:
case ENCODING_DRA:
case ENCODING_DTS_HD_MA:
case ENCODING_DTS_UHD_P2:
return false;
case ENCODING_INVALID:
default:
@@ -885,8 +914,10 @@ 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:
case ENCODING_DTS_UHD_P1:
case ENCODING_DRA:
case ENCODING_DTS_HD_MA:
case ENCODING_DTS_UHD_P2:
return false;
case ENCODING_INVALID:
default:
@@ -1173,8 +1204,10 @@ 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:
case ENCODING_DTS_UHD_P1:
case ENCODING_DRA:
case ENCODING_DTS_HD_MA:
case ENCODING_DTS_UHD_P2:
mEncoding = encoding;
break;
case ENCODING_INVALID:
@@ -1402,8 +1435,10 @@ public final class AudioFormat implements Parcelable {
ENCODING_MPEGH_BL_L4,
ENCODING_MPEGH_LC_L3,
ENCODING_MPEGH_LC_L4,
ENCODING_DTS_UHD,
ENCODING_DRA }
ENCODING_DTS_UHD_P1,
ENCODING_DRA,
ENCODING_DTS_HD_MA,
ENCODING_DTS_UHD_P2 }
)
@Retention(RetentionPolicy.SOURCE)
public @interface Encoding {}
@@ -1423,8 +1458,10 @@ public final class AudioFormat implements Parcelable {
ENCODING_MPEGH_BL_L4,
ENCODING_MPEGH_LC_L3,
ENCODING_MPEGH_LC_L4,
ENCODING_DTS_UHD,
ENCODING_DRA
ENCODING_DTS_UHD_P1,
ENCODING_DRA,
ENCODING_DTS_HD_MA,
ENCODING_DTS_UHD_P2
};
/** @hide */
@@ -1442,8 +1479,10 @@ public final class AudioFormat implements Parcelable {
ENCODING_MPEGH_BL_L4,
ENCODING_MPEGH_LC_L3,
ENCODING_MPEGH_LC_L4,
ENCODING_DTS_UHD,
ENCODING_DRA }
ENCODING_DTS_UHD_P1,
ENCODING_DRA,
ENCODING_DTS_HD_MA,
ENCODING_DTS_UHD_P2 }
)
@Retention(RetentionPolicy.SOURCE)
public @interface SurroundSoundEncoding {}
@@ -1485,10 +1524,14 @@ 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";
case ENCODING_DTS_UHD_P1:
return "DTS UHD Profile 1";
case ENCODING_DRA:
return "DRA";
case ENCODING_DTS_HD_MA:
return "DTS HD Master Audio";
case ENCODING_DTS_UHD_P2:
return "DTS UHD Profile 2";
default:
return "Unknown surround sound format";
}

View File

@@ -443,6 +443,10 @@ public class AudioSystem
return "AUDIO_FORMAT_APTX_ADAPTIVE_QLEA";
case /* AUDIO_FORMAT_APTX_ADAPTIVE_R4 */ 0x31000000:
return "AUDIO_FORMAT_APTX_ADAPTIVE_R4";
case /* AUDIO_FORMAT_DTS_HD_MA */ 0x32000000:
return "AUDIO_FORMAT_DTS_HD_MA";
case /* AUDIO_FORMAT_DTS_UHD_P2 */ 0x33000000:
return "AUDIO_FORMAT_DTS_UHD_P2";
/* Aliases */
case /* AUDIO_FORMAT_PCM_16_BIT */ 0x1:

View File

@@ -515,7 +515,7 @@ public class AidlConversion {
} else if (MediaFormat.MIMETYPE_AUDIO_MPEGH_LC_L4.equals(aidl.encoding)) {
return AudioFormat.ENCODING_MPEGH_LC_L4;
} else if (MediaFormat.MIMETYPE_AUDIO_DTS_UHD.equals(aidl.encoding)) {
return AudioFormat.ENCODING_DTS_UHD;
return AudioFormat.ENCODING_DTS_UHD_P1;
} else if (MediaFormat.MIMETYPE_AUDIO_DRA.equals(aidl.encoding)) {
return AudioFormat.ENCODING_DRA;
} else {