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/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/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