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

Commit d2c7f85b authored by Mikhail Naganov's avatar Mikhail Naganov
Browse files

Use 'audio_port_config' in DeviceHalInterface::add/removeDeviceEffect

Previously, `audio_port_handle_t` was used to specify the device
port. However, these port handles are allocated by the framework
and are not known to the HAL a priori. The current scenario
assumes that the framework first creates an audio patch, thus
passes a complete `audio_port_config` to the HAL prior to adding
an effect. However, this assumption isn't stated anywhere in
the legacy interface definition.

To make things more flexible, make the framework to pass
`audio_port_config` when it adds/removes a device effect.
This also makes unnecessary to pass the hw module ID as it is
contained within the port config. The legacy HAL interface
is left intact.

Bug: 205884982
Test: m
Change-Id: Ie9410637ad092bff22b2c0fe1c92e516a1f24ee0
parent 3bc9e136
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -882,7 +882,7 @@ status_t DeviceHalAidl::getMicrophones(
    return OK;
}

status_t DeviceHalAidl::addDeviceEffect(audio_port_handle_t device __unused,
status_t DeviceHalAidl::addDeviceEffect(const struct audio_port_config *device __unused,
        sp<EffectHalInterface> effect) {
    if (!effect) {
        return BAD_VALUE;
@@ -892,7 +892,7 @@ status_t DeviceHalAidl::addDeviceEffect(audio_port_handle_t device __unused,
    ALOGE("%s not implemented yet", __func__);
    return OK;
}
status_t DeviceHalAidl::removeDeviceEffect(audio_port_handle_t device __unused,
status_t DeviceHalAidl::removeDeviceEffect(const struct audio_port_config *device __unused,
                            sp<EffectHalInterface> effect) {
    if (!effect) {
        return BAD_VALUE;
+4 −2
Original line number Diff line number Diff line
@@ -148,9 +148,11 @@ class DeviceHalAidl : public DeviceHalInterface, public ConversionHelperAidl,
    // List microphones
    status_t getMicrophones(std::vector<audio_microphone_characteristic_t>* microphones) override;

    status_t addDeviceEffect(audio_port_handle_t device, sp<EffectHalInterface> effect) override;
    status_t addDeviceEffect(
            const struct audio_port_config *device, sp<EffectHalInterface> effect) override;

    status_t removeDeviceEffect(audio_port_handle_t device, sp<EffectHalInterface> effect) override;
    status_t removeDeviceEffect(
            const struct audio_port_config *device, sp<EffectHalInterface> effect) override;

    status_t getMmapPolicyInfos(media::audio::common::AudioMMapPolicyType policyType __unused,
                                std::vector<media::audio::common::AudioMMapPolicyInfo>* policyInfos
+6 −6
Original line number Diff line number Diff line
@@ -499,32 +499,32 @@ status_t DeviceHalHidl::getMicrophones(

#if MAJOR_VERSION >= 6
status_t DeviceHalHidl::addDeviceEffect(
        audio_port_handle_t device, sp<EffectHalInterface> effect) {
        const struct audio_port_config *device, sp<EffectHalInterface> effect) {
    TIME_CHECK();
    if (mDevice == 0) return NO_INIT;
    auto hidlEffect = sp<effect::EffectHalHidl>::cast(effect);
    return processReturn("addDeviceEffect", mDevice->addDeviceEffect(
            static_cast<AudioPortHandle>(device), hidlEffect->effectId()));
            static_cast<AudioPortHandle>(device->id), hidlEffect->effectId()));
}
#else
status_t DeviceHalHidl::addDeviceEffect(
        audio_port_handle_t device __unused, sp<EffectHalInterface> effect __unused) {
        const struct audio_port_config *device __unused, sp<EffectHalInterface> effect __unused) {
    return INVALID_OPERATION;
}
#endif

#if MAJOR_VERSION >= 6
status_t DeviceHalHidl::removeDeviceEffect(
        audio_port_handle_t device, sp<EffectHalInterface> effect) {
        const struct audio_port_config *device, sp<EffectHalInterface> effect) {
    TIME_CHECK();
    if (mDevice == 0) return NO_INIT;
    auto hidlEffect = sp<effect::EffectHalHidl>::cast(effect);
    return processReturn("removeDeviceEffect", mDevice->removeDeviceEffect(
            static_cast<AudioPortHandle>(device), hidlEffect->effectId()));
            static_cast<AudioPortHandle>(device->id), hidlEffect->effectId()));
}
#else
status_t DeviceHalHidl::removeDeviceEffect(
        audio_port_handle_t device __unused, sp<EffectHalInterface> effect __unused) {
        const struct audio_port_config *device __unused, sp<EffectHalInterface> effect __unused) {
    return INVALID_OPERATION;
}
#endif
+4 −2
Original line number Diff line number Diff line
@@ -105,8 +105,10 @@ class DeviceHalHidl : public DeviceHalInterface, public CoreConversionHelperHidl
    // List microphones
    status_t getMicrophones(std::vector<audio_microphone_characteristic_t>* microphones) override;

    status_t addDeviceEffect(audio_port_handle_t device, sp<EffectHalInterface> effect) override;
    status_t removeDeviceEffect(audio_port_handle_t device, sp<EffectHalInterface> effect) override;
    status_t addDeviceEffect(
            const struct audio_port_config *device, sp<EffectHalInterface> effect) override;
    status_t removeDeviceEffect(
            const struct audio_port_config *device, sp<EffectHalInterface> effect) override;

    status_t getMmapPolicyInfos(
            media::audio::common::AudioMMapPolicyType policyType __unused,
+2 −2
Original line number Diff line number Diff line
@@ -128,9 +128,9 @@ class DeviceHalInterface : public virtual RefBase
            std::vector<audio_microphone_characteristic_t>* microphones) = 0;

    virtual status_t addDeviceEffect(
            audio_port_handle_t device, sp<EffectHalInterface> effect) = 0;
            const struct audio_port_config *device, sp<EffectHalInterface> effect) = 0;
    virtual status_t removeDeviceEffect(
            audio_port_handle_t device, sp<EffectHalInterface> effect) = 0;
            const struct audio_port_config *device, sp<EffectHalInterface> effect) = 0;

    virtual status_t getMmapPolicyInfos(
            media::audio::common::AudioMMapPolicyType policyType,
Loading