Merge changes Icd33f3cb,I737479d8 into main am: 0dccb6e265
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/3047703 Change-Id: Ieeaa40bc1909142cfdac6ac193704f93cc024da7 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
7f01390b34
3 changed files with 32 additions and 5 deletions
|
@ -551,6 +551,11 @@ std::vector<AudioPortConfig> ModuleConfig::generateAudioDevicePortConfigs(
|
|||
return result;
|
||||
}
|
||||
|
||||
std::optional<AudioPort> ModuleConfig::getPort(int32_t portId) {
|
||||
auto portsIt = findById(mPorts, portId);
|
||||
return portsIt != mPorts.end() ? std::optional<AudioPort>(*portsIt) : std::nullopt;
|
||||
}
|
||||
|
||||
ndk::ScopedAStatus ModuleConfig::onExternalDeviceConnected(IModule* module, const AudioPort& port) {
|
||||
RETURN_STATUS_IF_ERROR(module->getAudioPorts(&mPorts));
|
||||
RETURN_STATUS_IF_ERROR(module->getAudioRoutes(&mRoutes));
|
||||
|
|
|
@ -166,6 +166,8 @@ class ModuleConfig {
|
|||
return *config.begin();
|
||||
}
|
||||
|
||||
std::optional<aidl::android::media::audio::common::AudioPort> getPort(int32_t portId);
|
||||
|
||||
ndk::ScopedAStatus onExternalDeviceConnected(
|
||||
aidl::android::hardware::audio::core::IModule* module,
|
||||
const aidl::android::media::audio::common::AudioPort& port);
|
||||
|
|
|
@ -133,13 +133,23 @@ auto findAny(const std::vector<T>& v, const std::set<int32_t>& ids) {
|
|||
}
|
||||
|
||||
template <typename C>
|
||||
std::vector<int32_t> GetNonExistentIds(const C& allIds) {
|
||||
std::vector<int32_t> GetNonExistentIds(const C& allIds, bool includeZero = true) {
|
||||
if (allIds.empty()) {
|
||||
return std::vector<int32_t>{-1, 0, 1};
|
||||
return includeZero ? std::vector<int32_t>{-1, 0, 1} : std::vector<int32_t>{-1, 1};
|
||||
}
|
||||
std::vector<int32_t> nonExistentIds;
|
||||
nonExistentIds.push_back(*std::min_element(allIds.begin(), allIds.end()) - 1);
|
||||
nonExistentIds.push_back(*std::max_element(allIds.begin(), allIds.end()) + 1);
|
||||
if (auto value = *std::min_element(allIds.begin(), allIds.end()) - 1;
|
||||
includeZero || value != 0) {
|
||||
nonExistentIds.push_back(value);
|
||||
} else {
|
||||
nonExistentIds.push_back(value - 1);
|
||||
}
|
||||
if (auto value = *std::max_element(allIds.begin(), allIds.end()) + 1;
|
||||
includeZero || value != 0) {
|
||||
nonExistentIds.push_back(value);
|
||||
} else {
|
||||
nonExistentIds.push_back(value + 1);
|
||||
}
|
||||
return nonExistentIds;
|
||||
}
|
||||
|
||||
|
@ -2980,6 +2990,11 @@ static bool skipStreamIoTestForMixPortConfig(const AudioPortConfig& portConfig)
|
|||
AudioOutputFlags::COMPRESS_OFFLOAD, AudioOutputFlags::INCALL_MUSIC}));
|
||||
}
|
||||
|
||||
// Certain types of devices can not be used without special preconditions.
|
||||
static bool skipStreamIoTestForDevice(const AudioDevice& device) {
|
||||
return device.type.type == AudioDeviceType::IN_ECHO_REFERENCE;
|
||||
}
|
||||
|
||||
template <typename Stream>
|
||||
class StreamFixtureWithWorker {
|
||||
public:
|
||||
|
@ -3888,6 +3903,9 @@ class AudioStreamIo : public AudioCoreModuleBase,
|
|||
GTEST_SKIP() << "No mix ports have attached devices";
|
||||
}
|
||||
for (const auto& portConfig : allPortConfigs) {
|
||||
auto port = moduleConfig->getPort(portConfig.portId);
|
||||
ASSERT_TRUE(port.has_value());
|
||||
SCOPED_TRACE(port->toString());
|
||||
SCOPED_TRACE(portConfig.toString());
|
||||
if (skipStreamIoTestForMixPortConfig(portConfig)) continue;
|
||||
const bool isNonBlocking =
|
||||
|
@ -3970,6 +3988,7 @@ class AudioStreamIo : public AudioCoreModuleBase,
|
|||
StreamFixture<Stream> stream;
|
||||
ASSERT_NO_FATAL_FAILURE(
|
||||
stream.SetUpStreamForMixPortConfig(module.get(), moduleConfig.get(), portConfig));
|
||||
if (skipStreamIoTestForDevice(stream.getDevice())) return;
|
||||
ASSERT_EQ("", stream.skipTestReason());
|
||||
StreamLogicDefaultDriver driver(commandsAndStates,
|
||||
stream.getStreamContext()->getFrameSizeBytes());
|
||||
|
@ -3998,6 +4017,7 @@ class AudioStreamIo : public AudioCoreModuleBase,
|
|||
StreamFixture<Stream> stream;
|
||||
ASSERT_NO_FATAL_FAILURE(
|
||||
stream.SetUpPatchForMixPortConfig(module.get(), moduleConfig.get(), portConfig));
|
||||
if (skipStreamIoTestForDevice(stream.getDevice())) return;
|
||||
ASSERT_EQ("", stream.skipTestReason());
|
||||
ASSERT_NO_FATAL_FAILURE(stream.TeardownPatchSetUpStream(module.get()));
|
||||
StreamLogicDefaultDriver driver(commandsAndStates,
|
||||
|
@ -4196,7 +4216,7 @@ class AudioModulePatch : public AudioCoreModule {
|
|||
// Then use the same patch setting, except for having an invalid ID.
|
||||
std::set<int32_t> patchIds;
|
||||
ASSERT_NO_FATAL_FAILURE(GetAllPatchIds(&patchIds));
|
||||
for (const auto patchId : GetNonExistentIds(patchIds)) {
|
||||
for (const auto patchId : GetNonExistentIds(patchIds, false /*includeZero*/)) {
|
||||
AudioPatch patchWithNonExistendId = patch.get();
|
||||
patchWithNonExistendId.id = patchId;
|
||||
EXPECT_STATUS(EX_ILLEGAL_ARGUMENT,
|
||||
|
|
Loading…
Reference in a new issue