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

Commit 6018d613 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes from topic "aidl-cap-hybrid-mode" into main

* changes:
  Revert^2 audiopolicy: cap engine: fallback on default configuration
  Revert^2 audiopolicy: capengine: allow to disable AIDL Cap engine config
parents 6badd5d1 d10f0e43
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -75,6 +75,9 @@ cc_library {
    cflags: [
        "-Wall",
        "-Werror",
    ],

        "-DENABLE_CAP_AIDL_HYBRID_MODE",
    ] + select(release_flag("RELEASE_HARDWARE_AUDIO_USE_CAP_AIDL"), {
        true: [],
        default: ["-DDISABLE_CAP_AIDL"],
    }),
}
+4 −0
Original line number Diff line number Diff line
@@ -45,6 +45,10 @@ public:

    // The source used to indicate the configuration from the AIDL HAL.
    static const constexpr char* const kAidlConfigSource = "AIDL HAL";
#ifdef ENABLE_CAP_AIDL_HYBRID_MODE
    // The source used to indicate the configuration from the AIDL HAL but engine still use XML.
    static const constexpr char* const kHybridAidlConfigSource = "AIDL HAL Hybrid CAP";
#endif
    // The source used to indicate the default fallback configuration.
    static const constexpr char* const kDefaultConfigSource = "AudioPolicyConfig::setDefault";
    // The suffix of the "engine default" implementation shared library name.
+11 −0
Original line number Diff line number Diff line
@@ -272,6 +272,17 @@ status_t AudioPolicyConfig::loadFromAidl(const media::AudioPolicyConfig& aidl) {
    mSource = kAidlConfigSource;
    if (aidl.engineConfig.capSpecificConfig.has_value()) {
        setEngineLibraryNameSuffix(kCapEngineLibraryNameSuffix);
#ifdef ENABLE_CAP_AIDL_HYBRID_MODE
        // Using AIDL Audio HAL to get policy configuration and relying on vendor xml configuration
        // file for CAP engine.
#ifndef DISABLE_CAP_AIDL
        if (!aidl.engineConfig.capSpecificConfig.value().domains.has_value()) {
#endif
            mSource = kHybridAidlConfigSource;
#ifndef DISABLE_CAP_AIDL
        }
#endif
#endif
    }
    // No need to augmentData() as AIDL HAL must provide correct mic addresses.
    return NO_ERROR;
+2 −0
Original line number Diff line number Diff line
@@ -178,6 +178,8 @@ public:

    void updateDeviceSelectionCache() override;

    engineConfig::ParsingResult parseAndSetDefaultConfiguration();

protected:
    DeviceVector getPreferredAvailableDevicesForProductStrategy(
        const DeviceVector& availableOutputDevices, product_strategy_t strategy) const;
+13 −4
Original line number Diff line number Diff line
@@ -125,6 +125,18 @@ std::string EngineBase::getProductStrategyName(product_strategy_t id) const {
    return "";
}

engineConfig::ParsingResult EngineBase::parseAndSetDefaultConfiguration() {
    mProductStrategies.clear();
    mVolumeGroups.clear();
    engineConfig::Config config = gDefaultEngineConfig;
    android::status_t ret = engineConfig::parseLegacyVolumes(config.volumeGroups);
    if (ret != NO_ERROR) {
        ALOGD("%s: No legacy volume group found, using default music group", __FUNCTION__);
        config.volumeGroups = gDefaultVolumeGroups;
    }
    return processParsingResult({std::make_unique<engineConfig::Config>(config), 1});
}

engineConfig::ParsingResult EngineBase::loadAudioPolicyEngineConfig(
        const media::audio::common::AudioHalEngineConfig& aidlConfig, bool)
{
@@ -154,10 +166,7 @@ engineConfig::ParsingResult EngineBase::loadAudioPolicyEngineConfig(
            engineConfig::parse(filePath.c_str(), isConfigurable) : engineConfig::ParsingResult{};
    if (result.parsedConfig == nullptr) {
        ALOGD("%s: No configuration found, using default matching phone experience.", __FUNCTION__);
        engineConfig::Config config = gDefaultEngineConfig;
        android::status_t ret = engineConfig::parseLegacyVolumes(config.volumeGroups);
        result = {std::make_unique<engineConfig::Config>(config),
                  static_cast<size_t>(ret == NO_ERROR ? 0 : 1)};
        return parseAndSetDefaultConfiguration();
    } else {
        // Append for internal use only volume groups (e.g. rerouting/patch)
        result.parsedConfig->volumeGroups.insert(
Loading