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

Commit 0d0c2444 authored by Shunkai Yao's avatar Shunkai Yao Committed by Automerger Merge Worker
Browse files

Merge "AIDL effect: update AudioDeviceDescription to list" am: 4793f094

parents e8757b89 4793f094
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
#include "DownmixContext.h"

using aidl::android::hardware::audio::effect::IEffect;
using ::aidl::android::media::audio::common::AudioChannelLayout;
using ::android::hardware::audio::common::getChannelCount;

namespace aidl::android::hardware::audio::effect {
+5 −17
Original line number Diff line number Diff line
@@ -22,9 +22,6 @@

namespace aidl::android::hardware::audio::effect {

using media::audio::common::AudioChannelLayout;
using media::audio::common::AudioDeviceDescription;

enum DownmixState {
    DOWNMIX_STATE_UNINITIALIZED,
    DOWNMIX_STATE_INITIALIZED,
@@ -45,34 +42,25 @@ class DownmixContext final : public EffectContext {
    }
    Downmix::Type getDmType() const { return mType; }

    RetCode setVolumeStereo(const Parameter::VolumeStereo& volumeStereo) override {
        // FIXME change volume
        mVolumeStereo = volumeStereo;
        return RetCode::SUCCESS;
    }
    Parameter::VolumeStereo getVolumeStereo() override { return mVolumeStereo; }

    RetCode setOutputDevice(const AudioDeviceDescription& device) override {
    RetCode setOutputDevice(
            const std::vector<::aidl::android::media::audio::common::AudioDeviceDescription>&
                    device) override {
        // FIXME change type if playing on headset vs speaker
        mOutputDevice = device;
        return RetCode::SUCCESS;
    }
    AudioDeviceDescription getOutputDevice() { return mOutputDevice; }

    IEffect::Status lvmProcess(float* in, float* out, int samples);

  private:
    DownmixState mState;
    Downmix::Type mType;
    AudioChannelLayout mChMask;
    ::aidl::android::media::audio::common::AudioChannelLayout mChMask;
    ::android::audio_utils::channels::ChannelMix mChannelMix;

    // Common Params
    AudioDeviceDescription mOutputDevice;
    Parameter::VolumeStereo mVolumeStereo;

    void init_params(const Parameter::Common& common);
    bool isChannelMaskValid(AudioChannelLayout channelMask);
    bool isChannelMaskValid(::aidl::android::media::audio::common::AudioChannelLayout channelMask);
};

}  // namespace aidl::android::hardware::audio::effect
+29 −19
Original line number Diff line number Diff line
@@ -287,32 +287,42 @@ RetCode BundleContext::limitLevel() {
}

bool BundleContext::isDeviceSupportedBassBoost(
        const aidl::android::media::audio::common::AudioDeviceDescription& device) {
    return (device == AudioDeviceDescription{AudioDeviceType::OUT_SPEAKER, ""} ||
            device == AudioDeviceDescription{AudioDeviceType::OUT_CARKIT,
                                             AudioDeviceDescription::CONNECTION_BT_SCO} ||
            device == AudioDeviceDescription{AudioDeviceType::OUT_SPEAKER,
                                             AudioDeviceDescription::CONNECTION_BT_A2DP});
        const std::vector<aidl::android::media::audio::common::AudioDeviceDescription>& devices) {
    for (const auto& device : devices) {
        if (device != AudioDeviceDescription{AudioDeviceType::OUT_SPEAKER, ""} &&
            device != AudioDeviceDescription{AudioDeviceType::OUT_CARKIT,
                                             AudioDeviceDescription::CONNECTION_BT_SCO} &&
            device != AudioDeviceDescription{AudioDeviceType::OUT_SPEAKER,
                                             AudioDeviceDescription::CONNECTION_BT_A2DP}) {
            return false;
        }
    }
    return true;
}

bool BundleContext::isDeviceSupportedVirtualizer(
        const aidl::android::media::audio::common::AudioDeviceDescription& device) {
    return (device == AudioDeviceDescription{AudioDeviceType::OUT_HEADSET,
                                             AudioDeviceDescription::CONNECTION_ANALOG} ||
            device == AudioDeviceDescription{AudioDeviceType::OUT_HEADPHONE,
                                             AudioDeviceDescription::CONNECTION_ANALOG} ||
            device == AudioDeviceDescription{AudioDeviceType::OUT_HEADPHONE,
                                             AudioDeviceDescription::CONNECTION_BT_A2DP} ||
            device == AudioDeviceDescription{AudioDeviceType::OUT_HEADSET,
                                             AudioDeviceDescription::CONNECTION_USB});
        const std::vector<aidl::android::media::audio::common::AudioDeviceDescription>& devices) {
    for (const auto& device : devices) {
        if (device != AudioDeviceDescription{AudioDeviceType::OUT_HEADSET,
                                             AudioDeviceDescription::CONNECTION_ANALOG} &&
            device != AudioDeviceDescription{AudioDeviceType::OUT_HEADPHONE,
                                             AudioDeviceDescription::CONNECTION_ANALOG} &&
            device != AudioDeviceDescription{AudioDeviceType::OUT_HEADPHONE,
                                             AudioDeviceDescription::CONNECTION_BT_A2DP} &&
            device != AudioDeviceDescription{AudioDeviceType::OUT_HEADSET,
                                             AudioDeviceDescription::CONNECTION_USB}) {
            return false;
        }
    }
    return true;
}

RetCode BundleContext::setOutputDevice(
        const aidl::android::media::audio::common::AudioDeviceDescription& device) {
    mOutputDevice = device;
        const std::vector<aidl::android::media::audio::common::AudioDeviceDescription>& devices) {
    mOutputDevice = devices;
    switch (mType) {
        case lvm::BundleEffectType::BASS_BOOST:
            if (isDeviceSupportedBassBoost(device)) {
            if (!isDeviceSupportedBassBoost(devices)) {
                // If a device doesn't support bass boost, the effect must be temporarily disabled.
                // The effect must still report its original state as this can only be changed by
                // the start/stop commands.
@@ -330,7 +340,7 @@ RetCode BundleContext::setOutputDevice(
            }
            break;
        case lvm::BundleEffectType::VIRTUALIZER:
            if (isDeviceSupportedVirtualizer(device)) {
            if (!isDeviceSupportedVirtualizer(devices)) {
                if (mEnabled) {
                    disableOperatingMode();
                }
+6 −3
Original line number Diff line number Diff line
@@ -57,11 +57,14 @@ class BundleContext final : public EffectContext {
        return mChMask;
    }
    bool isDeviceSupportedBassBoost(
            const aidl::android::media::audio::common::AudioDeviceDescription& device);
            const std::vector<aidl::android::media::audio::common::AudioDeviceDescription>&
                    devices);
    bool isDeviceSupportedVirtualizer(
            const aidl::android::media::audio::common::AudioDeviceDescription& device);
            const std::vector<aidl::android::media::audio::common::AudioDeviceDescription>&
                    devices);
    RetCode setOutputDevice(
            const aidl::android::media::audio::common::AudioDeviceDescription& device) override;
            const std::vector<aidl::android::media::audio::common::AudioDeviceDescription>& devices)
            override;

    RetCode setEqualizerPreset(const std::size_t presetIdx);
    int getEqualizerPreset() const { return mCurPresetIdx; }