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

Commit c0ab56b1 authored by Andy Hung's avatar Andy Hung
Browse files

AudioFlinger: Extract PatchPanel class

Test: atest audiorecord_tests audiotrack_tests audiorouting_tests trackplayerbase_tests audiosystem_tests
Test: atest AAudioTests AudioTrackOffloadTest
Test: atest AudioTrackTest AudioRecordTest
Test: YouTube Camera
Bug: 288339104
Bug: 291284401
Merged-In: I165db16ae8214335017bac034a42e7ba9060a48d
Change-Id: I165db16ae8214335017bac034a42e7ba9060a48d
parent d25fe399
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -160,6 +160,7 @@ class AudioFlinger : public AudioFlingerServerAdapter::Delegate
{
    friend class sp<AudioFlinger>;
    friend class Client; // removeClient_l();
    friend class PatchPanel;
    // TODO(b/291012167) replace the Thread friends with an interface.
    friend class DirectOutputThread;
    friend class MixerThread;
@@ -578,7 +579,6 @@ private:
    class DeviceEffectManager;
    // TODO(b/288339104) these should be separate files
public:
    class PatchPanel;
    class DeviceEffectManagerCallback;
private:
    struct TeePatch;
@@ -586,8 +586,6 @@ public:
    using TeePatches = std::vector<TeePatch>;
private:

#include "PatchPanel.h"

#include "PatchCommandThread.h"

#include "DeviceEffectManager.h"
+4 −4
Original line number Diff line number Diff line
@@ -35,13 +35,13 @@ using detail::AudioHalVersionInfo;
using media::IEffectClient;

void AudioFlinger::DeviceEffectManager::onCreateAudioPatch(audio_patch_handle_t handle,
        const PatchPanel::Patch& patch) {
        const IAfPatchPanel::Patch& patch) {
    ALOGV("%s handle %d mHalHandle %d device sink %08x",
            __func__, handle, patch.mHalHandle,
            patch.mAudioPatch.num_sinks > 0 ? patch.mAudioPatch.sinks[0].ext.device.type : 0);
    Mutex::Autolock _l(mLock);
    for (auto& effect : mDeviceEffects) {
        status_t status = effect.second->onCreatePatch(handle, &patch); // TODO(b/288339104) void*
        status_t status = effect.second->onCreatePatch(handle, patch);
        ALOGV("%s Effect onCreatePatch status %d", __func__, status);
        ALOGW_IF(status == BAD_VALUE, "%s onCreatePatch error %d", __func__, status);
    }
@@ -61,7 +61,7 @@ sp<IAfEffectHandle> AudioFlinger::DeviceEffectManager::createEffect_l(
        const AudioDeviceTypeAddr& device,
        const sp<Client>& client,
        const sp<IEffectClient>& effectClient,
        const std::map<audio_patch_handle_t, PatchPanel::Patch>& patches,
        const std::map<audio_patch_handle_t, IAfPatchPanel::Patch>& patches,
        int *enabled,
        status_t *status,
        bool probe,
@@ -93,7 +93,7 @@ sp<IAfEffectHandle> AudioFlinger::DeviceEffectManager::createEffect_l(
        if (lStatus == NO_ERROR) {
            lStatus = effect->addHandle(handle.get());
            if (lStatus == NO_ERROR) {
                lStatus = effect->init(&patches); // TODO(b/288339104) void*
                lStatus = effect->init(patches);
                if (lStatus == NAME_NOT_FOUND) {
                    lStatus = NO_ERROR;
                }
+2 −2
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ public:
                const AudioDeviceTypeAddr& device,
                const sp<Client>& client,
                const sp<media::IEffectClient>& effectClient,
                const std::map<audio_patch_handle_t, PatchPanel::Patch>& patches,
                const std::map<audio_patch_handle_t, IAfPatchPanel::Patch>& patches,
                int *enabled,
                status_t *status,
                bool probe,
@@ -60,7 +60,7 @@ public:
    // PatchCommandThread::PatchCommandListener implementation

    void onCreateAudioPatch(audio_patch_handle_t handle,
                            const PatchPanel::Patch& patch) override;
            const IAfPatchPanel::Patch& patch) override;
    void onReleaseAudioPatch(audio_patch_handle_t handle) override;

private:
+3 −3
Original line number Diff line number Diff line
@@ -3287,7 +3287,7 @@ status_t DeviceEffectProxy::setEnabled(bool enabled, bool fromHandle)
}

status_t DeviceEffectProxy::init(
        const std::map <audio_patch_handle_t, AudioFlinger::PatchPanel::Patch>& patches) {
        const std::map <audio_patch_handle_t, IAfPatchPanel::Patch>& patches) {
//For all audio patches
//If src or sink device match
//If the effect is HW accelerated
@@ -3310,7 +3310,7 @@ status_t DeviceEffectProxy::init(
}

status_t DeviceEffectProxy::onCreatePatch(
        audio_patch_handle_t patchHandle, const AudioFlinger::PatchPanel::Patch& patch) {
        audio_patch_handle_t patchHandle, const IAfPatchPanel::Patch& patch) {
    status_t status = NAME_NOT_FOUND;
    sp<IAfEffectHandle> handle;
    // only consider source[0] as this is the only "true" source of a patch
@@ -3330,7 +3330,7 @@ status_t DeviceEffectProxy::onCreatePatch(
    return status;
}

status_t DeviceEffectProxy::checkPort(const AudioFlinger::PatchPanel::Patch& patch,
status_t DeviceEffectProxy::checkPort(const IAfPatchPanel::Patch& patch,
        const struct audio_port_config *port, sp<IAfEffectHandle> *handle) {

    ALOGV("%s type %d device type %d address %s device ID %d patch.isSoftware() %d",
+5 −16
Original line number Diff line number Diff line
@@ -656,22 +656,11 @@ public:
    status_t setEnabled(bool enabled, bool fromHandle) final;
    sp<IAfDeviceEffectProxy> asDeviceEffectProxy() final { return this; }

    // TODO(b/288339104) type
    status_t init(const /* std::map<audio_patch_handle_t,
            PatchPanel::Patch>& */ void * patches) final {
        return init(*reinterpret_cast<const std::map<
                audio_patch_handle_t, AudioFlinger::PatchPanel::Patch> *>(patches));
    }
    // TODO(b/288339104) type
    status_t onCreatePatch(audio_patch_handle_t patchHandle,
            /* const PatchPanel::Patch& */ const void * patch) final {
        return onCreatePatch(patchHandle,
                *reinterpret_cast<const AudioFlinger::PatchPanel::Patch *>(patch));
    }
    status_t init(const std::map<audio_patch_handle_t,
            IAfPatchPanel::Patch>& patches) final;

    status_t init(const std::map<audio_patch_handle_t, AudioFlinger::PatchPanel::Patch>& patches);
    status_t onCreatePatch(
            audio_patch_handle_t patchHandle, const AudioFlinger::PatchPanel::Patch& patch);
    status_t onCreatePatch(audio_patch_handle_t patchHandle,
            const IAfPatchPanel::Patch& patch) final;

    void onReleasePatch(audio_patch_handle_t patchHandle) final;

@@ -749,7 +738,7 @@ private:
        const sp<AudioFlinger::DeviceEffectManagerCallback> mManagerCallback;
    };

    status_t checkPort(const AudioFlinger::PatchPanel::Patch& patch,
    status_t checkPort(const IAfPatchPanel::Patch& patch,
            const struct audio_port_config *port, sp<IAfEffectHandle> *handle);

    const AudioDeviceTypeAddr mDevice;
Loading