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

Commit e59a6ce2 authored by Mikhail Naganov's avatar Mikhail Naganov Committed by Cherrypicker Worker
Browse files

audio: Make IConfig.getSurroundSound default implementation more robust

In the case when there is a problem with the legacy APM XML file,
the converter provides a default surround sound config. However,
the default implementation of IConfig::getSurroundSoundConfig did
not take an advantage of that, and was returning an empty config,
which is not accepted by VTS.

Also, improve logging messages: clarify the situation when no readable
audio policy XML file found, and use outer functions name for lambdas.

Bug: 293978054
Test: atest VtsHalAudioCoreTargetTest
(cherry picked from https://android-review.googlesource.com/q/commit:1e25ef808f5e6a29d2a889213f4b42cf58ecdc29)
Merged-In: Iae069a0498009605ef5ededb9c9112efab08548a
Change-Id: Iae069a0498009605ef5ededb9c9112efab08548a
parent 5a82a293
Loading
Loading
Loading
Loading
+9 −9
Original line number Original line Diff line number Diff line
@@ -27,12 +27,11 @@ using aidl::android::media::audio::common::AudioHalEngineConfig;


namespace aidl::android::hardware::audio::core {
namespace aidl::android::hardware::audio::core {
ndk::ScopedAStatus Config::getSurroundSoundConfig(SurroundSoundConfig* _aidl_return) {
ndk::ScopedAStatus Config::getSurroundSoundConfig(SurroundSoundConfig* _aidl_return) {
    static const auto& func = __func__;
    static const SurroundSoundConfig surroundSoundConfig = [this]() {
    static const SurroundSoundConfig surroundSoundConfig = [this]() {
        SurroundSoundConfig surroundCfg;
        SurroundSoundConfig surroundCfg = mAudioPolicyConverter.getSurroundSoundConfig();
        if (mAudioPolicyConverter.getStatus() == ::android::OK) {
        if (mAudioPolicyConverter.getStatus() != ::android::OK) {
            surroundCfg = mAudioPolicyConverter.getSurroundSoundConfig();
            LOG(WARNING) << func << ": " << mAudioPolicyConverter.getError();
        } else {
            LOG(WARNING) << __func__ << mAudioPolicyConverter.getError();
        }
        }
        return surroundCfg;
        return surroundCfg;
    }();
    }();
@@ -42,21 +41,22 @@ ndk::ScopedAStatus Config::getSurroundSoundConfig(SurroundSoundConfig* _aidl_ret
}
}


ndk::ScopedAStatus Config::getEngineConfig(AudioHalEngineConfig* _aidl_return) {
ndk::ScopedAStatus Config::getEngineConfig(AudioHalEngineConfig* _aidl_return) {
    static const auto& func = __func__;
    static const AudioHalEngineConfig returnEngCfg = [this]() {
    static const AudioHalEngineConfig returnEngCfg = [this]() {
        AudioHalEngineConfig engConfig;
        AudioHalEngineConfig engConfig;
        if (mEngConfigConverter.getStatus() == ::android::OK) {
        if (mEngConfigConverter.getStatus() == ::android::OK) {
            engConfig = mEngConfigConverter.getAidlEngineConfig();
            engConfig = mEngConfigConverter.getAidlEngineConfig();
        } else {
        } else {
            LOG(INFO) << __func__ << mEngConfigConverter.getError();
            LOG(INFO) << func << ": " << mEngConfigConverter.getError();
            if (mAudioPolicyConverter.getStatus() == ::android::OK) {
            if (mAudioPolicyConverter.getStatus() == ::android::OK) {
                engConfig = mAudioPolicyConverter.getAidlEngineConfig();
                engConfig = mAudioPolicyConverter.getAidlEngineConfig();
            } else {
            } else {
                LOG(WARNING) << __func__ << mAudioPolicyConverter.getError();
                LOG(WARNING) << func << ": " << mAudioPolicyConverter.getError();
            }
            }
        }
        }
        // Logging full contents of the config is an overkill, just provide statistics.
        // Logging full contents of the config is an overkill, just provide statistics.
        LOG(DEBUG) << "getEngineConfig: number of strategies parsed: "
        LOG(DEBUG) << func
                   << engConfig.productStrategies.size()
                   << ": number of strategies parsed: " << engConfig.productStrategies.size()
                   << ", default strategy: " << engConfig.defaultProductStrategyId
                   << ", default strategy: " << engConfig.defaultProductStrategyId
                   << ", number of volume groups parsed: " << engConfig.volumeGroups.size();
                   << ", number of volume groups parsed: " << engConfig.volumeGroups.size();
        return engConfig;
        return engConfig;
+9 −3
Original line number Original line Diff line number Diff line
@@ -53,10 +53,16 @@ class XmlConverter {
                                     const ::android::status_t& status) {
                                     const ::android::status_t& status) {
        std::string errorMessage;
        std::string errorMessage;
        if (status != ::android::OK) {
        if (status != ::android::OK) {
            if (!isReadableConfigFile) {
            if (configFilePath.empty()) {
                errorMessage = "Could not read requested config file:" + configFilePath;
                errorMessage = "No audio configuration files found";
            } else if (!isReadableConfigFile) {
                errorMessage = std::string("Could not read requested XML config file: \"")
                                       .append(configFilePath)
                                       .append("\"");
            } else {
            } else {
                errorMessage = "Invalid config file: " + configFilePath;
                errorMessage = std::string("Invalid XML config file: \"")
                                       .append(configFilePath)
                                       .append("\"");
            }
            }
        }
        }
        return errorMessage;
        return errorMessage;