diff --git a/audio/aidl/default/Configuration.cpp b/audio/aidl/default/Configuration.cpp index cf5f066c7c..a20bb54ea8 100644 --- a/audio/aidl/default/Configuration.cpp +++ b/audio/aidl/default/Configuration.cpp @@ -41,6 +41,7 @@ using aidl::android::media::audio::common::AudioPortExt; using aidl::android::media::audio::common::AudioPortMixExt; using aidl::android::media::audio::common::AudioProfile; using aidl::android::media::audio::common::Int; +using aidl::android::media::audio::common::MicrophoneInfo; using aidl::android::media::audio::common::PcmType; using Configuration = aidl::android::hardware::audio::core::Module::Configuration; @@ -273,6 +274,13 @@ std::unique_ptr getPrimaryConfiguration() { c.portConfigs.insert(c.portConfigs.end(), c.initialConfigs.begin(), c.initialConfigs.end()); + MicrophoneInfo mic; + mic.id = "mic"; + mic.device = micInDevice.ext.get().device; + mic.group = 0; + mic.indexInTheGroup = 0; + c.microphones = std::vector{mic}; + return c; }(); return std::make_unique(configuration); diff --git a/audio/aidl/default/Module.cpp b/audio/aidl/default/Module.cpp index e9be348448..def812b1a6 100644 --- a/audio/aidl/default/Module.cpp +++ b/audio/aidl/default/Module.cpp @@ -43,7 +43,6 @@ using aidl::android::hardware::audio::common::SourceMetadata; using aidl::android::hardware::audio::core::sounddose::ISoundDose; using aidl::android::media::audio::common::AudioChannelLayout; using aidl::android::media::audio::common::AudioDevice; -using aidl::android::media::audio::common::AudioDeviceType; using aidl::android::media::audio::common::AudioFormatDescription; using aidl::android::media::audio::common::AudioFormatType; using aidl::android::media::audio::common::AudioInputFlags; @@ -801,7 +800,7 @@ ndk::ScopedAStatus Module::openInputStream(const OpenInputStreamArguments& in_ar context.fillDescriptor(&_aidl_return->desc); std::shared_ptr stream; RETURN_STATUS_IF_ERROR(createInputStream(std::move(context), in_args.sinkMetadata, - getMicrophoneInfos(), &stream)); + getConfig().microphones, &stream)); StreamWrapper streamWrapper(stream); if (auto patchIt = mPatches.find(in_args.portConfigId); patchIt != mPatches.end()) { RETURN_STATUS_IF_ERROR( @@ -1235,7 +1234,7 @@ ndk::ScopedAStatus Module::setMicMute(bool in_mute) { } ndk::ScopedAStatus Module::getMicrophones(std::vector* _aidl_return) { - *_aidl_return = getMicrophoneInfos(); + *_aidl_return = getConfig().microphones; LOG(DEBUG) << __func__ << ": returning " << ::android::internal::ToString(*_aidl_return); return ndk::ScopedAStatus::ok(); } @@ -1514,29 +1513,6 @@ ndk::ScopedAStatus Module::onMasterVolumeChanged(float volume __unused) { return ndk::ScopedAStatus::ok(); } -std::vector Module::getMicrophoneInfos() { - std::vector result; - Configuration& config = getConfig(); - for (const AudioPort& port : config.ports) { - if (port.ext.getTag() == AudioPortExt::Tag::device) { - const AudioDeviceType deviceType = - port.ext.get().device.type.type; - if (deviceType == AudioDeviceType::IN_MICROPHONE || - deviceType == AudioDeviceType::IN_MICROPHONE_BACK) { - // Placeholder values. Vendor implementations must populate MicrophoneInfo - // accordingly based on their physical microphone parameters. - result.push_back(MicrophoneInfo{ - .id = port.name, - .device = port.ext.get().device, - .group = 0, - .indexInTheGroup = 0, - }); - } - } - } - return result; -} - Module::BtProfileHandles Module::getBtProfileManagerHandles() { return std::make_tuple(std::weak_ptr(), std::weak_ptr(), std::weak_ptr()); diff --git a/audio/aidl/default/include/core-impl/Module.h b/audio/aidl/default/include/core-impl/Module.h index c269cc1473..64953cf1cf 100644 --- a/audio/aidl/default/include/core-impl/Module.h +++ b/audio/aidl/default/include/core-impl/Module.h @@ -32,6 +32,7 @@ namespace aidl::android::hardware::audio::core { class Module : public BnModule { public: struct Configuration { + std::vector<::aidl::android::media::audio::common::MicrophoneInfo> microphones; std::vector<::aidl::android::media::audio::common::AudioPort> ports; std::vector<::aidl::android::media::audio::common::AudioPortConfig> portConfigs; std::vector<::aidl::android::media::audio::common::AudioPortConfig> initialConfigs; @@ -206,7 +207,6 @@ 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::vector<::aidl::android::media::audio::common::MicrophoneInfo> getMicrophoneInfos(); virtual std::unique_ptr initializeConfig(); // Utility and helper functions accessible to subclasses.