Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98dbab1b authored by Mikhail Naganov's avatar Mikhail Naganov
Browse files

Audio: Add Dolby MAT format

Dolby MAT is a transport for encapsulating Dolby TrueHD access
units, channel-based PCM or object audio PCM. Dolby MAT's
primary use case is for HDMI transmission in which MAT is
encapsulated in IEC61937 frames as per IEC61937-9 specification.

Re-format switch / case indentation for modified switch statements
to satisfy new formatting rules.

Bug: 117566604
Test: make
Change-Id: I7c4f47e39a55bfbf13dfe401cf885dff858fa464
parent 4c2ca629
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+8 −0
Original line number Diff line number Diff line
@@ -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:
+105 −88
Original line number Diff line number Diff line
@@ -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;
        }
@@ -537,6 +544,7 @@ public final class AudioFormat implements Parcelable {
            case ENCODING_AAC_XHE:
            case ENCODING_AC4:
            case ENCODING_E_AC3_JOC:
            case ENCODING_DOLBY_MAT:
                return true;
            default:
                return false;
@@ -564,6 +572,7 @@ public final class AudioFormat implements Parcelable {
            case ENCODING_AAC_XHE:
            case ENCODING_AC4:
            case ENCODING_E_AC3_JOC:
            case ENCODING_DOLBY_MAT:
                return true;
            default:
                return false;
@@ -594,6 +603,7 @@ public final class AudioFormat implements Parcelable {
            case ENCODING_AAC_XHE:
            case ENCODING_AC4:
            case ENCODING_E_AC3_JOC:
            case ENCODING_DOLBY_MAT:
                return false;
            case ENCODING_INVALID:
            default:
@@ -624,6 +634,7 @@ public final class AudioFormat implements Parcelable {
            case ENCODING_AAC_XHE:
            case ENCODING_AC4:
            case ENCODING_E_AC3_JOC:
            case ENCODING_DOLBY_MAT:
                return false;
            case ENCODING_INVALID:
            default:
@@ -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";
        }