Merge "audio: Improve testing of point-to-point connections" into main am: 049a82e5d9
am: f494fb43a9
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2753112 Change-Id: I215301862f23e6b1428597674def8240a3006a1c Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
3949d40c42
2 changed files with 51 additions and 21 deletions
|
@ -461,6 +461,10 @@ std::unique_ptr<Configuration> getUsbConfiguration() {
|
|||
// - no profiles specified
|
||||
// * "Test In", IN_AFE_PROXY
|
||||
// - no profiles specified
|
||||
// * "Wired Headset", OUT_HEADSET
|
||||
// - profile PCM 24-bit; STEREO; 48000
|
||||
// * "Wired Headset Mic", IN_HEADSET
|
||||
// - profile PCM 24-bit; MONO; 48000
|
||||
//
|
||||
// Mix ports:
|
||||
// * "test output", 1 max open, 1 max active stream
|
||||
|
@ -476,7 +480,8 @@ std::unique_ptr<Configuration> getUsbConfiguration() {
|
|||
//
|
||||
// Routes:
|
||||
// "test output", "test fast output", "test compressed offload" -> "Test Out"
|
||||
// "Test In" -> "test input"
|
||||
// "test output" -> "Wired Headset"
|
||||
// "Test In", "Wired Headset Mic" -> "test input"
|
||||
//
|
||||
// Initial port configs:
|
||||
// * "Test Out" device port: PCM 24-bit; STEREO; 48000
|
||||
|
@ -496,6 +501,14 @@ std::unique_ptr<Configuration> getStubConfiguration() {
|
|||
AudioChannelLayout::LAYOUT_STEREO, 48000, 0, false,
|
||||
createDeviceExt(AudioDeviceType::OUT_AFE_PROXY, 0)));
|
||||
|
||||
AudioPort headsetOutDevice =
|
||||
createPort(c.nextPortId++, "Wired Headset", 0, false,
|
||||
createDeviceExt(AudioDeviceType::OUT_HEADSET, 0,
|
||||
AudioDeviceDescription::CONNECTION_ANALOG));
|
||||
headsetOutDevice.profiles.push_back(
|
||||
createProfile(PcmType::INT_24_BIT, {AudioChannelLayout::LAYOUT_STEREO}, {48000}));
|
||||
c.ports.push_back(headsetOutDevice);
|
||||
|
||||
AudioPort testInDevice = createPort(c.nextPortId++, "Test In", 0, true,
|
||||
createDeviceExt(AudioDeviceType::IN_AFE_PROXY, 0));
|
||||
c.ports.push_back(testInDevice);
|
||||
|
@ -504,6 +517,14 @@ std::unique_ptr<Configuration> getStubConfiguration() {
|
|||
AudioChannelLayout::LAYOUT_MONO, 48000, 0, true,
|
||||
createDeviceExt(AudioDeviceType::IN_AFE_PROXY, 0)));
|
||||
|
||||
AudioPort headsetInDevice =
|
||||
createPort(c.nextPortId++, "Wired Headset Mic", 0, true,
|
||||
createDeviceExt(AudioDeviceType::IN_HEADSET, 0,
|
||||
AudioDeviceDescription::CONNECTION_ANALOG));
|
||||
headsetInDevice.profiles.push_back(
|
||||
createProfile(PcmType::INT_24_BIT, {AudioChannelLayout::LAYOUT_MONO}, {48000}));
|
||||
c.ports.push_back(headsetInDevice);
|
||||
|
||||
// Mix ports
|
||||
|
||||
AudioPort testOutMix =
|
||||
|
@ -549,7 +570,8 @@ std::unique_ptr<Configuration> getStubConfiguration() {
|
|||
|
||||
c.routes.push_back(
|
||||
createRoute({testOutMix, testFastOutMix, compressedOffloadOutMix}, testOutDevice));
|
||||
c.routes.push_back(createRoute({testInDevice}, testInMIx));
|
||||
c.routes.push_back(createRoute({testOutMix}, headsetOutDevice));
|
||||
c.routes.push_back(createRoute({testInDevice, headsetInDevice}, testInMIx));
|
||||
|
||||
c.portConfigs.insert(c.portConfigs.end(), c.initialConfigs.begin(), c.initialConfigs.end());
|
||||
|
||||
|
|
|
@ -145,28 +145,36 @@ AudioDeviceAddress::Tag suggestDeviceAddressTag(const AudioDeviceDescription& de
|
|||
}
|
||||
|
||||
AudioPort GenerateUniqueDeviceAddress(const AudioPort& port) {
|
||||
// Point-to-point connections do not use addresses.
|
||||
static const std::set<std::string> kPointToPointConnections = {
|
||||
AudioDeviceDescription::CONNECTION_ANALOG, AudioDeviceDescription::CONNECTION_HDMI,
|
||||
AudioDeviceDescription::CONNECTION_HDMI_ARC,
|
||||
AudioDeviceDescription::CONNECTION_HDMI_EARC, AudioDeviceDescription::CONNECTION_SPDIF};
|
||||
static int nextId = 0;
|
||||
using Tag = AudioDeviceAddress::Tag;
|
||||
const auto& deviceDescription = port.ext.get<AudioPortExt::Tag::device>().device.type;
|
||||
AudioDeviceAddress address;
|
||||
switch (suggestDeviceAddressTag(port.ext.get<AudioPortExt::Tag::device>().device.type)) {
|
||||
case Tag::id:
|
||||
address = AudioDeviceAddress::make<Tag::id>(std::to_string(++nextId));
|
||||
break;
|
||||
case Tag::mac:
|
||||
address = AudioDeviceAddress::make<Tag::mac>(
|
||||
std::vector<uint8_t>{1, 2, 3, 4, 5, static_cast<uint8_t>(++nextId & 0xff)});
|
||||
break;
|
||||
case Tag::ipv4:
|
||||
address = AudioDeviceAddress::make<Tag::ipv4>(
|
||||
std::vector<uint8_t>{192, 168, 0, static_cast<uint8_t>(++nextId & 0xff)});
|
||||
break;
|
||||
case Tag::ipv6:
|
||||
address = AudioDeviceAddress::make<Tag::ipv6>(std::vector<int32_t>{
|
||||
0xfc00, 0x0123, 0x4567, 0x89ab, 0xcdef, 0, 0, ++nextId & 0xffff});
|
||||
break;
|
||||
case Tag::alsa:
|
||||
address = AudioDeviceAddress::make<Tag::alsa>(std::vector<int32_t>{1, ++nextId});
|
||||
break;
|
||||
if (kPointToPointConnections.count(deviceDescription.connection) == 0) {
|
||||
switch (suggestDeviceAddressTag(deviceDescription)) {
|
||||
case Tag::id:
|
||||
address = AudioDeviceAddress::make<Tag::id>(std::to_string(++nextId));
|
||||
break;
|
||||
case Tag::mac:
|
||||
address = AudioDeviceAddress::make<Tag::mac>(
|
||||
std::vector<uint8_t>{1, 2, 3, 4, 5, static_cast<uint8_t>(++nextId & 0xff)});
|
||||
break;
|
||||
case Tag::ipv4:
|
||||
address = AudioDeviceAddress::make<Tag::ipv4>(
|
||||
std::vector<uint8_t>{192, 168, 0, static_cast<uint8_t>(++nextId & 0xff)});
|
||||
break;
|
||||
case Tag::ipv6:
|
||||
address = AudioDeviceAddress::make<Tag::ipv6>(std::vector<int32_t>{
|
||||
0xfc00, 0x0123, 0x4567, 0x89ab, 0xcdef, 0, 0, ++nextId & 0xffff});
|
||||
break;
|
||||
case Tag::alsa:
|
||||
address = AudioDeviceAddress::make<Tag::alsa>(std::vector<int32_t>{1, ++nextId});
|
||||
break;
|
||||
}
|
||||
}
|
||||
AudioPort result = port;
|
||||
result.ext.get<AudioPortExt::Tag::device>().device.address = std::move(address);
|
||||
|
|
Loading…
Reference in a new issue