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

Commit 1503a989 authored by Mikhail Naganov's avatar Mikhail Naganov
Browse files

Audio HAL: Add optional Destination to SinkMetadata

Currently this is used to indicate the output device
when the input stream is from an intermediate processing
module like MSD.

Bug: 120859615
Test: make
Change-Id: I60bac5c24a263ab0b8965e9dbf9514445e88c270
parent 1bf027f7
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ hidl_interface {
        "android.hardware.audio.common@5.0",
        "android.hardware.audio.effect@5.0",
        "android.hidl.base@1.0",
        "android.hidl.safe_union@1.0",
    ],
    types: [
        "AudioDrain",
@@ -28,18 +29,13 @@ hidl_interface {
        "AudioMicrophoneCoordinate",
        "AudioMicrophoneDirectionality",
        "AudioMicrophoneLocation",
        "DeviceAddress",
        "MessageQueueFlagBits",
        "MicrophoneInfo",
        "MmapBufferFlag",
        "MmapBufferInfo",
        "MmapPosition",
        "ParameterValue",
        "PlaybackTrackMetadata",
        "RecordTrackMetadata",
        "Result",
        "SinkMetadata",
        "SourceMetadata",
        "TimeSpec",
    ],
    gen_java: false,
+1 −1
Original line number Diff line number Diff line
@@ -133,7 +133,7 @@ interface IDevice {
     * @param config stream configuration.
     * @param flags additional flags.
     * @param sinkMetadata Description of the audio that is suggested by the client.
     *                     May be used by implementations to configure hardware effects.
     *                     May be used by implementations to configure processing effects.
     * @return retval operation completion status.
     * @return inStream in case of success, created input stream.
     * @return suggestedConfig in case of invalid parameters, suggested config.
+0 −23
Original line number Diff line number Diff line
@@ -49,34 +49,11 @@ struct TimeSpec {
    uint64_t tvNSec;  // nanoseconds
};

/**
 * IEEE 802 MAC address.
 */
typedef uint8_t[6] MacAddress;

struct ParameterValue {
    string key;
    string value;
};

/**
 * Specifies a device in case when several devices of the same type
 * can be connected (e.g. BT A2DP, USB).
 */
struct DeviceAddress {
    AudioDevice device;  // discriminator
    union Address {
        MacAddress mac;     // used for BLUETOOTH_A2DP_*
        uint8_t[4] ipv4;    // used for IP
        struct Alsa {
            int32_t card;
            int32_t device;
        } alsa;             // used for USB_*
    } address;
    string busAddress;      // used for BUS
    string rSubmixAddress;  // used for REMOTE_SUBMIX
};

enum MmapBufferFlag : uint32_t {
    NONE    = 0x0,
    /**
+8 −0
Original line number Diff line number Diff line
@@ -9,6 +9,9 @@ hidl_interface {
    srcs: [
        "types.hal",
    ],
    interfaces: [
        "android.hidl.safe_union@1.0",
    ],
    types: [
        "AudioChannelMask",
        "AudioConfig",
@@ -38,7 +41,12 @@ hidl_interface {
        "AudioSource",
        "AudioStreamType",
        "AudioUsage",
        "DeviceAddress",
        "FixedChannelCount",
        "PlaybackTrackMetadata",
        "RecordTrackMetadata",
        "SinkMetadata",
        "SourceMetadata",
        "ThreadInfo",
        "Uuid",
    ],
+34 −1
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.hardware.audio.common@5.0;

import android.hidl.safe_union@1.0;

/*
 *
 *  IDs and Handles
@@ -601,6 +603,29 @@ enum AudioDevice : uint32_t {
    // Note that the 2.0 IN_ALL* have been moved to helper functions
};

/**
 * IEEE 802 MAC address.
 */
typedef uint8_t[6] MacAddress;

/**
 * Specifies a device address in case when several devices of the same type
 * can be connected (e.g. BT A2DP, USB).
 */
struct DeviceAddress {
    AudioDevice device;  // discriminator
    union Address {
        MacAddress mac;     // used for BLUETOOTH_A2DP_*
        uint8_t[4] ipv4;    // used for IP
        struct Alsa {
            int32_t card;
            int32_t device;
        } alsa;             // used for USB_*
    } address;
    string busAddress;      // used for BUS
    string rSubmixAddress;  // used for REMOTE_SUBMIX
};

/**
 * The audio output flags serve two purposes:
 *
@@ -748,9 +773,17 @@ struct RecordTrackMetadata {
     * Must not be negative.
     */
    float gain;
    /**
     * Indicates the destination of an input stream, can be left unspecified.
     */
    safe_union Destination {
        Monostate unspecified;
        DeviceAddress device;
    };
    Destination destination;
};

/** Metadatas of the source of a StreamIn. */
/** Metadatas of the sink of a StreamIn. */
struct SinkMetadata {
    vec<RecordTrackMetadata> tracks;
};
Loading