Merge "audio: Allow Module subclasses to customize Configuration" into main

This commit is contained in:
Mikhail Naganov
2023-07-14 23:46:52 +00:00
committed by Gerrit Code Review
2 changed files with 22 additions and 14 deletions

View File

@@ -286,22 +286,28 @@ std::set<int32_t> Module::portIdsFromPortConfigIds(C portConfigIds) {
return result;
}
std::unique_ptr<internal::Configuration> Module::initializeConfig() {
std::unique_ptr<internal::Configuration> config;
switch (getType()) {
case Type::DEFAULT:
config = std::move(internal::getPrimaryConfiguration());
break;
case Type::R_SUBMIX:
config = std::move(internal::getRSubmixConfiguration());
break;
case Type::STUB:
config = std::move(internal::getStubConfiguration());
break;
case Type::USB:
config = std::move(internal::getUsbConfiguration());
break;
}
return config;
}
internal::Configuration& Module::getConfig() {
if (!mConfig) {
switch (mType) {
case Type::DEFAULT:
mConfig = std::move(internal::getPrimaryConfiguration());
break;
case Type::R_SUBMIX:
mConfig = std::move(internal::getRSubmixConfiguration());
break;
case Type::STUB:
mConfig = std::move(internal::getStubConfiguration());
break;
case Type::USB:
mConfig = std::move(internal::getUsbConfiguration());
break;
}
mConfig = std::move(initializeConfig());
}
return *mConfig;
}

View File

@@ -182,6 +182,7 @@ class Module : public BnModule {
const ::aidl::android::media::audio::common::AudioPort& audioPort, bool connected);
virtual ndk::ScopedAStatus onMasterMuteChanged(bool mute);
virtual ndk::ScopedAStatus onMasterVolumeChanged(float volume);
virtual std::unique_ptr<internal::Configuration> initializeConfig();
// Utility and helper functions accessible to subclasses.
void cleanUpPatch(int32_t patchId);
@@ -202,6 +203,7 @@ class Module : public BnModule {
bool getMicMute() const { return mMicMute; }
const Patches& getPatches() const { return mPatches; }
const Streams& getStreams() const { return mStreams; }
Type getType() const { return mType; }
bool isMmapSupported();
template <typename C>
std::set<int32_t> portIdsFromPortConfigIds(C portConfigIds);