Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60bec724 authored by Francois Gaffie's avatar Francois Gaffie
Browse files

audiopolicy: fixup! audiopolicy: HW Bridge Sink matching rule



Bug: 172833835
Test: atest testRecordFromRemoteSubmix twice
Test: adb shell ./data/AudioPolicyEmulatorTests/AudioPolicyEmulatorTests --gtest_filter=*VoiceCallBridgingTest*
adb shell /data/nativetest64/AudioPolicyEmulatorTests/AudioPolicyEmulatorTests --gtest_filter=PlaybackReroutingUsageMatch/LegacyPlaybackReRoutingTest.playbackReRouting/*

Signed-off-by: default avatarFrancois Gaffie <francois.gaffie@renault.com>
Change-Id: I9eb9de9682624cc18644e0239bda72c2bb5b502c
Merged-In: I9eb9de9682624cc18644e0239bda72c2bb5b502c
parent 2610b34b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -52,8 +52,12 @@ public:
        devices.merge(mDynamicDevices);
        return devices;
    }
    std::string getTagForDevice(audio_devices_t device,
                                const String8 &address = String8(),
                                audio_format_t codec = AUDIO_FORMAT_DEFAULT);
    void addDynamicDevice(const sp<DeviceDescriptor> &device)
    {
        device->setDynamic();
        mDynamicDevices.add(device);
    }

+3 −1
Original line number Diff line number Diff line
@@ -49,11 +49,13 @@ DeviceDescriptor::DeviceDescriptor(audio_devices_t type,
{
}

// Let DeviceDescriptorBase initialize the address since it handles specific cases like
// legacy remote submix where "0" is added as default address.
DeviceDescriptor::DeviceDescriptor(const AudioDeviceTypeAddr &deviceTypeAddr,
                                   const std::string &tagName,
                                   const FormatVector &encodedFormats) :
        DeviceDescriptorBase(deviceTypeAddr), mTagName(tagName), mEncodedFormats(encodedFormats),
        mDeclaredAddress(deviceTypeAddr.getAddress())
        mDeclaredAddress(DeviceDescriptorBase::address())
{
    mCurrentEncodedFormat = AUDIO_FORMAT_DEFAULT;
    /* If framework runs against a pre 5.0 Audio HAL, encoded formats are absent from the config.
+12 −2
Original line number Diff line number Diff line
@@ -41,6 +41,14 @@ HwModule::~HwModule()
    }
}

std::string HwModule::getTagForDevice(audio_devices_t device, const String8 &address,
                                          audio_format_t codec)
{
    DeviceVector declaredDevices = getDeclaredDevices();
    sp<DeviceDescriptor> deviceDesc = declaredDevices.getDevice(device, address, codec);
    return deviceDesc ? deviceDesc->getTagName() : std::string{};
}

status_t HwModule::addOutputProfile(const std::string& name, const audio_config_t *config,
                                    audio_devices_t device, const String8& address)
{
@@ -49,7 +57,8 @@ status_t HwModule::addOutputProfile(const std::string& name, const audio_config_
    profile->addAudioProfile(new AudioProfile(config->format, config->channel_mask,
                                              config->sample_rate));

    sp<DeviceDescriptor> devDesc = new DeviceDescriptor(device, "" /*tagName*/, address.string());
    sp<DeviceDescriptor> devDesc =
            new DeviceDescriptor(device, getTagForDevice(device), address.string());
    addDynamicDevice(devDesc);
    // Reciprocally attach the device to the module
    devDesc->attach(this);
@@ -116,7 +125,8 @@ status_t HwModule::addInputProfile(const std::string& name, const audio_config_t
    profile->addAudioProfile(new AudioProfile(config->format, config->channel_mask,
                                              config->sample_rate));

    sp<DeviceDescriptor> devDesc = new DeviceDescriptor(device, "" /*tagName*/, address.string());
    sp<DeviceDescriptor> devDesc =
            new DeviceDescriptor(device, getTagForDevice(device), address.string());
    addDynamicDevice(devDesc);
    // Reciprocally attach the device to the module
    devDesc->attach(this);