Loading audio/aidl/default/Module.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -895,6 +895,21 @@ ndk::ScopedAStatus Module::setAudioPortConfig(const AudioPortConfig& in_requeste out_suggested->gain = in_requested.gain.value(); } if (in_requested.ext.getTag() != AudioPortExt::Tag::unspecified) { if (in_requested.ext.getTag() == out_suggested->ext.getTag()) { if (out_suggested->ext.getTag() == AudioPortExt::Tag::mix) { // 'AudioMixPortExt.handle' is set by the client, copy from in_requested out_suggested->ext.get<AudioPortExt::Tag::mix>().handle = in_requested.ext.get<AudioPortExt::Tag::mix>().handle; } } else { LOG(WARNING) << __func__ << ": requested ext tag " << toString(in_requested.ext.getTag()) << " do not match port's tag " << toString(out_suggested->ext.getTag()); requestedIsValid = false; } } if (existing == configs.end() && requestedIsValid && requestedIsFullySpecified) { out_suggested->id = getConfig().nextPortId++; configs.push_back(*out_suggested); Loading audio/aidl/default/audio_effects_config.xml +5 −4 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ <library name="loudness_enhancer" path="libloudnessenhanceraidl.so"/> <library name="nssw" path="libnssw.so"/> <library name="env_reverbsw" path="libenvreverbsw.so"/> <library name="pre_processing" path="libpreprocessingaidl.so"/> <library name="preset_reverbsw" path="libpresetreverbsw.so"/> <library name="reverb" path="libreverbaidl.so"/> <library name="virtualizersw" path="libvirtualizersw.so"/> Loading Loading @@ -68,9 +69,9 @@ --> <effects> <effect name="acoustic_echo_canceler" library="aecsw" uuid="bb392ec0-8d4d-11e0-a896-0002a5d5c51b"/> <effect name="automatic_gain_control_v1" library="agc1sw" uuid="aa8130e0-66fc-11e0-bad0-0002a5d5c51b"/> <effect name="automatic_gain_control_v2" library="agc2sw" uuid="89f38e65-d4d2-4d64-ad0e-2b3e799ea886"/> <effect name="acoustic_echo_canceler" library="pre_processing" uuid="bb392ec0-8d4d-11e0-a896-0002a5d5c51b"/> <effect name="automatic_gain_control_v1" library="pre_processing" uuid="aa8130e0-66fc-11e0-bad0-0002a5d5c51b"/> <effect name="automatic_gain_control_v2" library="pre_processing" uuid="89f38e65-d4d2-4d64-ad0e-2b3e799ea886"/> <effectProxy name="bassboost" uuid="14804144-a5ee-4d24-aa88-0002a5d5c51b"> <libsw library="bassboostsw" uuid="fa8181f2-588b-11ed-9b6a-0242ac120002"/> <libsw library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/> Loading @@ -80,7 +81,7 @@ <effect name="haptic_generator" library="haptic_generator" uuid="97c4acd1-8b82-4f2f-832e-c2fe5d7a9931"/> <effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/> <effect name="env_reverb" library="env_reverbsw" uuid="fa819886-588b-11ed-9b6a-0242ac120002"/> <effect name="noise_suppression" library="nssw" uuid="c06c8400-8e06-11e0-9cb6-0002a5d5c51b"/> <effect name="noise_suppression" library="pre_processing" uuid="c06c8400-8e06-11e0-9cb6-0002a5d5c51b"/> <effect name="preset_reverb" library="preset_reverbsw" uuid="fa8199c6-588b-11ed-9b6a-0242ac120002"/> <effect name="reverb_env_aux" library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/> <effect name="reverb_env_ins" library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/> Loading audio/aidl/default/equalizer/EqualizerSw.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -76,11 +76,10 @@ const std::vector<Equalizer::Preset> EqualizerSw::kPresets = { const std::vector<Range::EqualizerRange> EqualizerSw::kRanges = { MAKE_RANGE(Equalizer, preset, 0, EqualizerSw::kPresets.size() - 1), MAKE_RANGE(Equalizer, bandLevels, std::vector<Equalizer::BandLevel>{Equalizer::BandLevel( {.index = 0, .levelMb = std::numeric_limits<int>::min()})}, std::vector<Equalizer::BandLevel>{ Equalizer::BandLevel({.index = EqualizerSwContext::kMaxBandNumber - 1, .levelMb = std::numeric_limits<int>::max()})}), Equalizer::BandLevel({.index = 0, .levelMb = -15})}, std::vector<Equalizer::BandLevel>{Equalizer::BandLevel( {.index = EqualizerSwContext::kMaxBandNumber - 1, .levelMb = 15})}), /* capability definition */ MAKE_RANGE(Equalizer, bandFrequencies, EqualizerSw::kBandFrequency, EqualizerSw::kBandFrequency), Loading Loading @@ -171,6 +170,14 @@ ndk::ScopedAStatus EqualizerSw::getParameterEqualizer(const Equalizer::Tag& tag, eqParam.set<Equalizer::centerFreqMh>(mContext->getCenterFreqs()); break; } case Equalizer::bandFrequencies: { eqParam.set<Equalizer::bandFrequencies>(kBandFrequency); break; } case Equalizer::presets: { eqParam.set<Equalizer::presets>(kPresets); break; } default: { LOG(ERROR) << __func__ << " not handled tag: " << toString(tag); return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT, Loading audio/aidl/default/virtualizer/VirtualizerSw.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -68,11 +68,7 @@ const std::vector<Range::VirtualizerRange> VirtualizerSw::kRanges = { MAKE_RANGE(Virtualizer, strengthPm, 0, 1000), /* speakerAngle is get-only, set min > max */ MAKE_RANGE(Virtualizer, speakerAngles, {Virtualizer::ChannelAngle({.channel = 1})}, {Virtualizer::ChannelAngle({.channel = 0})}), /* device is get-only */ MAKE_RANGE(Virtualizer, device, AudioDeviceDescription({.type = AudioDeviceType::IN_DEFAULT}), AudioDeviceDescription({.type = AudioDeviceType::NONE}))}; {Virtualizer::ChannelAngle({.channel = 0})})}; const Capability VirtualizerSw::kCapability = { .range = Range::make<Range::virtualizer>(VirtualizerSw::kRanges)}; Loading Loading @@ -174,17 +170,21 @@ ndk::ScopedAStatus VirtualizerSw::getParameterVirtualizer(const Virtualizer::Tag ndk::ScopedAStatus VirtualizerSw::getSpeakerAngles(const Virtualizer::SpeakerAnglesPayload payload, Parameter::Specific* specific) { std::vector<Virtualizer::ChannelAngle> angles; if (::android::hardware::audio::common::getChannelCount(payload.layout) == 1) { const auto chNum = ::android::hardware::audio::common::getChannelCount(payload.layout); if (chNum == 1) { angles = {{.channel = (int32_t)AudioChannelLayout::CHANNEL_FRONT_LEFT, .azimuthDegree = 0, .elevationDegree = 0}}; } else { } else if (chNum == 2) { angles = {{.channel = (int32_t)AudioChannelLayout::CHANNEL_FRONT_LEFT, .azimuthDegree = -90, .elevationDegree = 0}, {.channel = (int32_t)AudioChannelLayout::CHANNEL_FRONT_RIGHT, .azimuthDegree = 90, .elevationDegree = 0}}; } else { return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT, "supportUpTo2Ch"); } Virtualizer param = Virtualizer::make<Virtualizer::speakerAngles>(angles); Loading audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ using aidl::android::media::audio::common::AudioPort; using aidl::android::media::audio::common::AudioPortConfig; using aidl::android::media::audio::common::AudioPortDeviceExt; using aidl::android::media::audio::common::AudioPortExt; using aidl::android::media::audio::common::AudioPortMixExt; using aidl::android::media::audio::common::AudioSource; using aidl::android::media::audio::common::AudioUsage; using aidl::android::media::audio::common::Boolean; Loading Loading @@ -1524,6 +1525,8 @@ TEST_P(AudioCoreModule, SetAudioPortConfigSuggestedConfig) { AudioPortConfig portConfig; AudioPortConfig suggestedConfig; portConfig.portId = srcMixPort.value().id; const int32_t kIoHandle = 42; portConfig.ext = AudioPortMixExt{.handle = kIoHandle}; { bool applied = true; ASSERT_IS_OK(module->setAudioPortConfig(portConfig, &suggestedConfig, &applied)) Loading @@ -1535,18 +1538,22 @@ TEST_P(AudioCoreModule, SetAudioPortConfigSuggestedConfig) { EXPECT_TRUE(suggestedConfig.channelMask.has_value()); EXPECT_TRUE(suggestedConfig.format.has_value()); EXPECT_TRUE(suggestedConfig.flags.has_value()); ASSERT_EQ(AudioPortExt::Tag::mix, suggestedConfig.ext.getTag()); EXPECT_EQ(kIoHandle, suggestedConfig.ext.get<AudioPortExt::Tag::mix>().handle); WithAudioPortConfig applied(suggestedConfig); ASSERT_NO_FATAL_FAILURE(applied.SetUp(module.get())); const AudioPortConfig& appliedConfig = applied.get(); EXPECT_NE(0, appliedConfig.id); EXPECT_TRUE(appliedConfig.sampleRate.has_value()); ASSERT_TRUE(appliedConfig.sampleRate.has_value()); EXPECT_EQ(suggestedConfig.sampleRate.value(), appliedConfig.sampleRate.value()); EXPECT_TRUE(appliedConfig.channelMask.has_value()); ASSERT_TRUE(appliedConfig.channelMask.has_value()); EXPECT_EQ(suggestedConfig.channelMask.value(), appliedConfig.channelMask.value()); EXPECT_TRUE(appliedConfig.format.has_value()); ASSERT_TRUE(appliedConfig.format.has_value()); EXPECT_EQ(suggestedConfig.format.value(), appliedConfig.format.value()); EXPECT_TRUE(appliedConfig.flags.has_value()); ASSERT_TRUE(appliedConfig.flags.has_value()); EXPECT_EQ(suggestedConfig.flags.value(), appliedConfig.flags.value()); ASSERT_EQ(AudioPortExt::Tag::mix, appliedConfig.ext.getTag()); EXPECT_EQ(kIoHandle, appliedConfig.ext.get<AudioPortExt::Tag::mix>().handle); } TEST_P(AudioCoreModule, SetAllAttachedDevicePortConfigs) { Loading Loading
audio/aidl/default/Module.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -895,6 +895,21 @@ ndk::ScopedAStatus Module::setAudioPortConfig(const AudioPortConfig& in_requeste out_suggested->gain = in_requested.gain.value(); } if (in_requested.ext.getTag() != AudioPortExt::Tag::unspecified) { if (in_requested.ext.getTag() == out_suggested->ext.getTag()) { if (out_suggested->ext.getTag() == AudioPortExt::Tag::mix) { // 'AudioMixPortExt.handle' is set by the client, copy from in_requested out_suggested->ext.get<AudioPortExt::Tag::mix>().handle = in_requested.ext.get<AudioPortExt::Tag::mix>().handle; } } else { LOG(WARNING) << __func__ << ": requested ext tag " << toString(in_requested.ext.getTag()) << " do not match port's tag " << toString(out_suggested->ext.getTag()); requestedIsValid = false; } } if (existing == configs.end() && requestedIsValid && requestedIsFullySpecified) { out_suggested->id = getConfig().nextPortId++; configs.push_back(*out_suggested); Loading
audio/aidl/default/audio_effects_config.xml +5 −4 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ <library name="loudness_enhancer" path="libloudnessenhanceraidl.so"/> <library name="nssw" path="libnssw.so"/> <library name="env_reverbsw" path="libenvreverbsw.so"/> <library name="pre_processing" path="libpreprocessingaidl.so"/> <library name="preset_reverbsw" path="libpresetreverbsw.so"/> <library name="reverb" path="libreverbaidl.so"/> <library name="virtualizersw" path="libvirtualizersw.so"/> Loading Loading @@ -68,9 +69,9 @@ --> <effects> <effect name="acoustic_echo_canceler" library="aecsw" uuid="bb392ec0-8d4d-11e0-a896-0002a5d5c51b"/> <effect name="automatic_gain_control_v1" library="agc1sw" uuid="aa8130e0-66fc-11e0-bad0-0002a5d5c51b"/> <effect name="automatic_gain_control_v2" library="agc2sw" uuid="89f38e65-d4d2-4d64-ad0e-2b3e799ea886"/> <effect name="acoustic_echo_canceler" library="pre_processing" uuid="bb392ec0-8d4d-11e0-a896-0002a5d5c51b"/> <effect name="automatic_gain_control_v1" library="pre_processing" uuid="aa8130e0-66fc-11e0-bad0-0002a5d5c51b"/> <effect name="automatic_gain_control_v2" library="pre_processing" uuid="89f38e65-d4d2-4d64-ad0e-2b3e799ea886"/> <effectProxy name="bassboost" uuid="14804144-a5ee-4d24-aa88-0002a5d5c51b"> <libsw library="bassboostsw" uuid="fa8181f2-588b-11ed-9b6a-0242ac120002"/> <libsw library="bundle" uuid="8631f300-72e2-11df-b57e-0002a5d5c51b"/> Loading @@ -80,7 +81,7 @@ <effect name="haptic_generator" library="haptic_generator" uuid="97c4acd1-8b82-4f2f-832e-c2fe5d7a9931"/> <effect name="loudness_enhancer" library="loudness_enhancer" uuid="fa415329-2034-4bea-b5dc-5b381c8d1e2c"/> <effect name="env_reverb" library="env_reverbsw" uuid="fa819886-588b-11ed-9b6a-0242ac120002"/> <effect name="noise_suppression" library="nssw" uuid="c06c8400-8e06-11e0-9cb6-0002a5d5c51b"/> <effect name="noise_suppression" library="pre_processing" uuid="c06c8400-8e06-11e0-9cb6-0002a5d5c51b"/> <effect name="preset_reverb" library="preset_reverbsw" uuid="fa8199c6-588b-11ed-9b6a-0242ac120002"/> <effect name="reverb_env_aux" library="reverb" uuid="4a387fc0-8ab3-11df-8bad-0002a5d5c51b"/> <effect name="reverb_env_ins" library="reverb" uuid="c7a511a0-a3bb-11df-860e-0002a5d5c51b"/> Loading
audio/aidl/default/equalizer/EqualizerSw.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -76,11 +76,10 @@ const std::vector<Equalizer::Preset> EqualizerSw::kPresets = { const std::vector<Range::EqualizerRange> EqualizerSw::kRanges = { MAKE_RANGE(Equalizer, preset, 0, EqualizerSw::kPresets.size() - 1), MAKE_RANGE(Equalizer, bandLevels, std::vector<Equalizer::BandLevel>{Equalizer::BandLevel( {.index = 0, .levelMb = std::numeric_limits<int>::min()})}, std::vector<Equalizer::BandLevel>{ Equalizer::BandLevel({.index = EqualizerSwContext::kMaxBandNumber - 1, .levelMb = std::numeric_limits<int>::max()})}), Equalizer::BandLevel({.index = 0, .levelMb = -15})}, std::vector<Equalizer::BandLevel>{Equalizer::BandLevel( {.index = EqualizerSwContext::kMaxBandNumber - 1, .levelMb = 15})}), /* capability definition */ MAKE_RANGE(Equalizer, bandFrequencies, EqualizerSw::kBandFrequency, EqualizerSw::kBandFrequency), Loading Loading @@ -171,6 +170,14 @@ ndk::ScopedAStatus EqualizerSw::getParameterEqualizer(const Equalizer::Tag& tag, eqParam.set<Equalizer::centerFreqMh>(mContext->getCenterFreqs()); break; } case Equalizer::bandFrequencies: { eqParam.set<Equalizer::bandFrequencies>(kBandFrequency); break; } case Equalizer::presets: { eqParam.set<Equalizer::presets>(kPresets); break; } default: { LOG(ERROR) << __func__ << " not handled tag: " << toString(tag); return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT, Loading
audio/aidl/default/virtualizer/VirtualizerSw.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -68,11 +68,7 @@ const std::vector<Range::VirtualizerRange> VirtualizerSw::kRanges = { MAKE_RANGE(Virtualizer, strengthPm, 0, 1000), /* speakerAngle is get-only, set min > max */ MAKE_RANGE(Virtualizer, speakerAngles, {Virtualizer::ChannelAngle({.channel = 1})}, {Virtualizer::ChannelAngle({.channel = 0})}), /* device is get-only */ MAKE_RANGE(Virtualizer, device, AudioDeviceDescription({.type = AudioDeviceType::IN_DEFAULT}), AudioDeviceDescription({.type = AudioDeviceType::NONE}))}; {Virtualizer::ChannelAngle({.channel = 0})})}; const Capability VirtualizerSw::kCapability = { .range = Range::make<Range::virtualizer>(VirtualizerSw::kRanges)}; Loading Loading @@ -174,17 +170,21 @@ ndk::ScopedAStatus VirtualizerSw::getParameterVirtualizer(const Virtualizer::Tag ndk::ScopedAStatus VirtualizerSw::getSpeakerAngles(const Virtualizer::SpeakerAnglesPayload payload, Parameter::Specific* specific) { std::vector<Virtualizer::ChannelAngle> angles; if (::android::hardware::audio::common::getChannelCount(payload.layout) == 1) { const auto chNum = ::android::hardware::audio::common::getChannelCount(payload.layout); if (chNum == 1) { angles = {{.channel = (int32_t)AudioChannelLayout::CHANNEL_FRONT_LEFT, .azimuthDegree = 0, .elevationDegree = 0}}; } else { } else if (chNum == 2) { angles = {{.channel = (int32_t)AudioChannelLayout::CHANNEL_FRONT_LEFT, .azimuthDegree = -90, .elevationDegree = 0}, {.channel = (int32_t)AudioChannelLayout::CHANNEL_FRONT_RIGHT, .azimuthDegree = 90, .elevationDegree = 0}}; } else { return ndk::ScopedAStatus::fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT, "supportUpTo2Ch"); } Virtualizer param = Virtualizer::make<Virtualizer::speakerAngles>(angles); Loading
audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ using aidl::android::media::audio::common::AudioPort; using aidl::android::media::audio::common::AudioPortConfig; using aidl::android::media::audio::common::AudioPortDeviceExt; using aidl::android::media::audio::common::AudioPortExt; using aidl::android::media::audio::common::AudioPortMixExt; using aidl::android::media::audio::common::AudioSource; using aidl::android::media::audio::common::AudioUsage; using aidl::android::media::audio::common::Boolean; Loading Loading @@ -1524,6 +1525,8 @@ TEST_P(AudioCoreModule, SetAudioPortConfigSuggestedConfig) { AudioPortConfig portConfig; AudioPortConfig suggestedConfig; portConfig.portId = srcMixPort.value().id; const int32_t kIoHandle = 42; portConfig.ext = AudioPortMixExt{.handle = kIoHandle}; { bool applied = true; ASSERT_IS_OK(module->setAudioPortConfig(portConfig, &suggestedConfig, &applied)) Loading @@ -1535,18 +1538,22 @@ TEST_P(AudioCoreModule, SetAudioPortConfigSuggestedConfig) { EXPECT_TRUE(suggestedConfig.channelMask.has_value()); EXPECT_TRUE(suggestedConfig.format.has_value()); EXPECT_TRUE(suggestedConfig.flags.has_value()); ASSERT_EQ(AudioPortExt::Tag::mix, suggestedConfig.ext.getTag()); EXPECT_EQ(kIoHandle, suggestedConfig.ext.get<AudioPortExt::Tag::mix>().handle); WithAudioPortConfig applied(suggestedConfig); ASSERT_NO_FATAL_FAILURE(applied.SetUp(module.get())); const AudioPortConfig& appliedConfig = applied.get(); EXPECT_NE(0, appliedConfig.id); EXPECT_TRUE(appliedConfig.sampleRate.has_value()); ASSERT_TRUE(appliedConfig.sampleRate.has_value()); EXPECT_EQ(suggestedConfig.sampleRate.value(), appliedConfig.sampleRate.value()); EXPECT_TRUE(appliedConfig.channelMask.has_value()); ASSERT_TRUE(appliedConfig.channelMask.has_value()); EXPECT_EQ(suggestedConfig.channelMask.value(), appliedConfig.channelMask.value()); EXPECT_TRUE(appliedConfig.format.has_value()); ASSERT_TRUE(appliedConfig.format.has_value()); EXPECT_EQ(suggestedConfig.format.value(), appliedConfig.format.value()); EXPECT_TRUE(appliedConfig.flags.has_value()); ASSERT_TRUE(appliedConfig.flags.has_value()); EXPECT_EQ(suggestedConfig.flags.value(), appliedConfig.flags.value()); ASSERT_EQ(AudioPortExt::Tag::mix, appliedConfig.ext.getTag()); EXPECT_EQ(kIoHandle, appliedConfig.ext.get<AudioPortExt::Tag::mix>().handle); } TEST_P(AudioCoreModule, SetAllAttachedDevicePortConfigs) { Loading