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

Commit fd64afb0 authored by Dean Wheatley's avatar Dean Wheatley Committed by Kevin Rocard
Browse files

Audio V4: Add MSD formats and Device



Add MAT 1.0, 2.0, 2.1 audio formats
Add 5.1.2, 5.1.4, 7.1.2, 7.1.4 output channel masks
Add E_AC3_JOC audio format
Add MSD Device to allow an MSD HAL implementation separated from the
primary.

Bug: 38184704
Test: none
Change-Id: I2f488462614114e4c82149460b030585981ae15e
Original author:
Signed-off-by: default avatarDean Wheatley <dwhea@dolby.com>
Ported to HAL 4.0:
Signed-off-by: default avatarKevin Rocard <krocard@google.com>
parent 8b010d24
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -41,7 +41,9 @@ interface IDevicesFactory {
        STUB,
        CODEC_OFFLOAD,
        SECONDARY,
        AUXILIARY
        AUXILIARY,
        /** Multi Stream Decoder */
        MSD
    };

    /**
+35 −0
Original line number Diff line number Diff line
@@ -222,6 +222,8 @@ enum AudioFormat : uint32_t {
    APTX_HD             = 0x21000000UL,
    AC4                 = 0x22000000UL,
    LDAC                = 0x23000000UL,
    /** Dolby Metadata-enhanced Audio Transmission */
    MAT                 = 0x24000000UL,
    /** Deprecated */
    MAIN_MASK           = 0xFF000000UL,
    SUB_MASK            = 0x00FFFFFFUL,
@@ -252,6 +254,12 @@ enum AudioFormat : uint32_t {

    VORBIS_SUB_NONE       = 0x0,

    E_AC3_SUB_JOC         = 0x1,

    MAT_SUB_1_0           = 0x1,
    MAT_SUB_2_0           = 0x2,
    MAT_SUB_2_1           = 0x3,

    /* Aliases */
    /** note != AudioFormat.ENCODING_PCM_16BIT */
    PCM_16_BIT          = (PCM | PCM_SUB_16_BIT),
@@ -283,6 +291,10 @@ enum AudioFormat : uint32_t {
    AAC_ADTS_HE_V2      = (AAC_ADTS | AAC_SUB_HE_V2),
    AAC_ADTS_ELD        = (AAC_ADTS | AAC_SUB_ELD),
    AAC_ADTS_XHE        = (AAC_ADTS | AAC_SUB_XHE),
    E_AC3_JOC           = (E_AC3 | E_AC3_SUB_JOC),
    MAT_1_0             = (MAT | MAT_SUB_1_0),
    MAT_2_0             = (MAT | MAT_SUB_2_0),
    MAT_2_1             = (MAT | MAT_SUB_2_1),
};

/**
@@ -363,10 +375,22 @@ enum AudioChannelMask : uint32_t {
    OUT_TOP_BACK_LEFT         = 0x8000,
    OUT_TOP_BACK_CENTER       = 0x10000,
    OUT_TOP_BACK_RIGHT        = 0x20000,
    OUT_TOP_CENTER_LEFT       = 0x40000,
    OUT_TOP_CENTER_RIGHT      = 0x80000,

    OUT_MONO     = OUT_FRONT_LEFT,
    OUT_STEREO   = (OUT_FRONT_LEFT | OUT_FRONT_RIGHT),
    OUT_2POINT1  = (OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_LOW_FREQUENCY),
    OUT_2POINT0POINT2 = (OUT_FRONT_LEFT | OUT_FRONT_RIGHT |
                         OUT_TOP_CENTER_LEFT | OUT_TOP_CENTER_RIGHT),
    OUT_2POINT1POINT2 = (OUT_FRONT_LEFT | OUT_FRONT_RIGHT |
                         OUT_TOP_CENTER_LEFT | OUT_TOP_CENTER_RIGHT |
                         OUT_LOW_FREQUENCY),
    OUT_3POINT0POINT2 = (OUT_FRONT_LEFT | OUT_FRONT_CENTER | OUT_FRONT_RIGHT |
                         OUT_TOP_CENTER_LEFT | OUT_TOP_CENTER_RIGHT),
    OUT_3POINT1POINT2 = (OUT_FRONT_LEFT | OUT_FRONT_CENTER | OUT_FRONT_RIGHT |
                        OUT_TOP_CENTER_LEFT | OUT_TOP_CENTER_RIGHT |
                        OUT_LOW_FREQUENCY),
    OUT_QUAD     = (OUT_FRONT_LEFT | OUT_FRONT_RIGHT |
            OUT_BACK_LEFT | OUT_BACK_RIGHT),
    OUT_QUAD_BACK = OUT_QUAD,
@@ -410,6 +434,13 @@ enum AudioChannelMask : uint32_t {
    IN_X_AXIS          = 0x800,
    IN_Y_AXIS          = 0x1000,
    IN_Z_AXIS          = 0x2000,
    IN_BACK_LEFT       = 0x10000,
    IN_BACK_RIGHT      = 0x20000,
    IN_CENTER          = 0x40000,
    IN_LOW_FREQUENCY   = 0x100000,
    IN_TOP_LEFT        = 0x200000,
    IN_TOP_RIGHT       = 0x400000,

    IN_VOICE_UPLINK    = 0x4000,
    IN_VOICE_DNLINK    = 0x8000,

@@ -419,6 +450,8 @@ enum AudioChannelMask : uint32_t {
    IN_6 = (IN_LEFT | IN_RIGHT |
            IN_FRONT | IN_BACK |
            IN_LEFT_PROCESSED | IN_RIGHT_PROCESSED),
    IN_5POINT1 = (IN_LEFT | IN_CENTER | IN_RIGHT |
                  IN_BACK_LEFT | IN_BACK_RIGHT | IN_LOW_FREQUENCY),
    IN_VOICE_UPLINK_MONO = (IN_VOICE_UPLINK | IN_MONO),
    IN_VOICE_DNLINK_MONO = (IN_VOICE_DNLINK | IN_MONO),
    IN_VOICE_CALL_MONO   = (IN_VOICE_UPLINK_MONO |
@@ -514,6 +547,7 @@ enum AudioDevice : uint64_t {
    OUT_BUS                       = 0x1000000,
    OUT_PROXY                     = 0x2000000,
    OUT_USB_HEADSET               = 0x4000000,
    OUT_ECHO_CANCELLER            = 0x10000000,
    OUT_DEFAULT                   = BIT_DEFAULT,
    // Note that the 2.0 OUT_ALL* have been moved to helper functions

@@ -613,6 +647,7 @@ enum AudioInputFlag : int32_t {
    SYNC         = 0x8,  // synchronize I/O streams
    MMAP_NOIRQ   = 0x10, // input operates in MMAP no IRQ mode.
    VOIP_TX      = 0x20, // preferred input for VoIP calls.
    HW_AV_SYNC   = 0x40, // input connected to an output that uses a hardware A/V sync
};

@export(name="audio_usage_t", value_prefix="AUDIO_USAGE_")