mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Merge "audio: Accept I/O handle for mix ports from the client"
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
@@ -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))
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user