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

Commit 86b3fa76 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Stub implementation for USB audio HAL." am: 2f97fbcc

parents 48b05132 2f97fbcc
Loading
Loading
Loading
Loading
+69 −0
Original line number Diff line number Diff line
@@ -393,4 +393,73 @@ std::unique_ptr<Configuration> getRSubmixConfiguration() {
    return std::make_unique<Configuration>(configuration);
}

// Usb configuration:
//
// Device ports:
//  * "USB Headset Out", OUT_HEADSET, CONNECTION_USB
//    - no profiles specified
//  * "USB Headset In", IN_HEADSET, CONNECTION_USB
//    - no profiles specified
//
// Mix ports:
//  * "usb_headset output", 1 max open, 1 max active stream
//    - no profiles specified
//  * "usb_headset input", 1 max open, 1 max active stream
//    - no profiles specified
//
// Profiles for device port connected state:
//  * USB Headset Out":
//    - profile PCM 16-bit; MONO, STEREO, INDEX_MASK_1, INDEX_MASK_2; 44100, 48000
//    - profile PCM 24-bit; MONO, STEREO, INDEX_MASK_1, INDEX_MASK_2; 44100, 48000
//  * USB Headset In":
//    - profile PCM 16-bit; MONO, STEREO, INDEX_MASK_1, INDEX_MASK_2; 44100, 48000
//    - profile PCM 24-bit; MONO, STEREO, INDEX_MASK_1, INDEX_MASK_2; 44100, 48000
//
std::unique_ptr<Configuration> getUsbConfiguration() {
    static const Configuration configuration = []() {
        const std::vector<AudioProfile> standardPcmAudioProfiles = {
                createProfile(PcmType::INT_16_BIT,
                              {AudioChannelLayout::LAYOUT_MONO, AudioChannelLayout::LAYOUT_STEREO,
                               AudioChannelLayout::INDEX_MASK_1, AudioChannelLayout::INDEX_MASK_2},
                              {44100, 48000}),
                createProfile(PcmType::INT_24_BIT,
                              {AudioChannelLayout::LAYOUT_MONO, AudioChannelLayout::LAYOUT_STEREO,
                               AudioChannelLayout::INDEX_MASK_1, AudioChannelLayout::INDEX_MASK_2},
                              {44100, 48000})};
        Configuration c;

        // Device ports

        AudioPort usbOutHeadset =
                createPort(c.nextPortId++, "USB Headset Out", 0, false,
                           createDeviceExt(AudioDeviceType::OUT_HEADSET, 0,
                                           AudioDeviceDescription::CONNECTION_USB));
        c.ports.push_back(usbOutHeadset);
        c.connectedProfiles[usbOutHeadset.id] = standardPcmAudioProfiles;

        AudioPort usbInHeadset =
                createPort(c.nextPortId++, "USB Headset In", 0, true,
                           createDeviceExt(AudioDeviceType::IN_HEADSET, 0,
                                           AudioDeviceDescription::CONNECTION_USB));
        c.ports.push_back(usbInHeadset);
        c.connectedProfiles[usbInHeadset.id] = standardPcmAudioProfiles;

        // Mix ports

        AudioPort usbHeadsetOutMix =
                createPort(c.nextPortId++, "usb_headset output", 0, false, createPortMixExt(1, 1));
        c.ports.push_back(usbHeadsetOutMix);

        AudioPort usbHeadsetInMix =
                createPort(c.nextPortId++, "usb_headset input", 0, true, createPortMixExt(1, 1));
        c.ports.push_back(usbHeadsetInMix);

        c.routes.push_back(createRoute({usbHeadsetOutMix}, usbOutHeadset));
        c.routes.push_back(createRoute({usbInHeadset}, usbHeadsetInMix));

        return c;
    }();
    return std::make_unique<Configuration>(configuration);
}

}  // namespace aidl::android::hardware::audio::core::internal
+2 −0
Original line number Diff line number Diff line
@@ -259,6 +259,8 @@ internal::Configuration& Module::getConfig() {
            case Type::R_SUBMIX:
                mConfig = std::move(internal::getRSubmixConfiguration());
                break;
            case Type::USB:
                mConfig = std::move(internal::getUsbConfiguration());
        }
    }
    return *mConfig;
+5 −0
Original line number Diff line number Diff line
@@ -9,6 +9,11 @@
    <version>1</version>
    <fqname>IModule/r_submix</fqname>
  </hal>
  <hal format="aidl">
    <name>android.hardware.audio.core</name>
    <version>1</version>
    <fqname>IModule/usb</fqname>
  </hal>
  <hal format="aidl">
    <name>android.hardware.audio.core</name>
    <version>1</version>
+1 −0
Original line number Diff line number Diff line
@@ -44,5 +44,6 @@ struct Configuration {

std::unique_ptr<Configuration> getPrimaryConfiguration();
std::unique_ptr<Configuration> getRSubmixConfiguration();
std::unique_ptr<Configuration> getUsbConfiguration();

}  // namespace aidl::android::hardware::audio::core::internal
+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ class Module : public BnModule {
  public:
    // This value is used for all AudioPatches and reported by all streams.
    static constexpr int32_t kLatencyMs = 10;
    enum Type : int { DEFAULT, R_SUBMIX };
    enum Type : int { DEFAULT, R_SUBMIX, USB };

    explicit Module(Type type) : mType(type) {}

Loading