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

Commit 3e6c7e15 authored by Eric Laurent's avatar Eric Laurent
Browse files

audio policy: refactor HW audio sources

Refactor management of hardware audio sources to make use of
ClientDescriptor class:
- HW sources are now tracked by port ID and not audio patch handle.
- startAudioSource() and stopAudioSource() APIs are updated to use
audio_port_handle_t as source identifier.
- AudioSourceDescriptor class is deleted and replaced by
SourceClientDescriptor class deriving from TrackClientDescriptor

Test: make.
Change-Id: Ie418b566519a591f036b538a77319f8e30aa99a8
parent f344afa9
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1238,18 +1238,18 @@ status_t AudioSystem::registerPolicyMixes(const Vector<AudioMix>& mixes, bool re

status_t AudioSystem::startAudioSource(const struct audio_port_config *source,
                                       const audio_attributes_t *attributes,
                                       audio_patch_handle_t *handle)
                                       audio_port_handle_t *portId)
{
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == 0) return PERMISSION_DENIED;
    return aps->startAudioSource(source, attributes, handle);
    return aps->startAudioSource(source, attributes, portId);
}

status_t AudioSystem::stopAudioSource(audio_patch_handle_t handle)
status_t AudioSystem::stopAudioSource(audio_port_handle_t portId)
{
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == 0) return PERMISSION_DENIED;
    return aps->stopAudioSource(handle);
    return aps->stopAudioSource(portId);
}

status_t AudioSystem::setMasterMono(bool mono)
+10 −10
Original line number Diff line number Diff line
@@ -740,11 +740,11 @@ public:

    virtual status_t startAudioSource(const struct audio_port_config *source,
                                      const audio_attributes_t *attributes,
                                      audio_patch_handle_t *handle)
                                      audio_port_handle_t *portId)
    {
        Parcel data, reply;
        data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
        if (source == NULL || attributes == NULL || handle == NULL) {
        if (source == NULL || attributes == NULL || portId == NULL) {
            return BAD_VALUE;
        }
        data.write(source, sizeof(struct audio_port_config));
@@ -757,15 +757,15 @@ public:
        if (status != NO_ERROR) {
            return status;
        }
        *handle = (audio_patch_handle_t)reply.readInt32();
        *portId = (audio_port_handle_t)reply.readInt32();
        return status;
    }

    virtual status_t stopAudioSource(audio_patch_handle_t handle)
    virtual status_t stopAudioSource(audio_port_handle_t portId)
    {
        Parcel data, reply;
        data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
        data.writeInt32(handle);
        data.writeInt32(portId);
        status_t status = remote()->transact(STOP_AUDIO_SOURCE, data, &reply);
        if (status != NO_ERROR) {
            return status;
@@ -1472,17 +1472,17 @@ status_t BnAudioPolicyService::onTransact(
            audio_attributes_t attributes = {};
            data.read(&attributes, sizeof(audio_attributes_t));
            sanetizeAudioAttributes(&attributes);
            audio_patch_handle_t handle = AUDIO_PATCH_HANDLE_NONE;
            status_t status = startAudioSource(&source, &attributes, &handle);
            audio_port_handle_t portId = AUDIO_PORT_HANDLE_NONE;
            status_t status = startAudioSource(&source, &attributes, &portId);
            reply->writeInt32(status);
            reply->writeInt32(handle);
            reply->writeInt32(portId);
            return NO_ERROR;
        } break;

        case STOP_AUDIO_SOURCE: {
            CHECK_INTERFACE(IAudioPolicyService, data, reply);
            audio_patch_handle_t handle = (audio_patch_handle_t) data.readInt32();
            status_t status = stopAudioSource(handle);
            audio_port_handle_t portId = (audio_port_handle_t) data.readInt32();
            status_t status = stopAudioSource(portId);
            reply->writeInt32(status);
            return NO_ERROR;
        } break;
+3 −3
Original line number Diff line number Diff line
@@ -323,8 +323,8 @@ public:

    static status_t startAudioSource(const struct audio_port_config *source,
                                     const audio_attributes_t *attributes,
                                      audio_patch_handle_t *handle);
    static status_t stopAudioSource(audio_patch_handle_t handle);
                                     audio_port_handle_t *portId);
    static status_t stopAudioSource(audio_port_handle_t portId);

    static status_t setMasterMono(bool mono);
    static status_t getMasterMono(bool *mono);
+2 −2
Original line number Diff line number Diff line
@@ -153,8 +153,8 @@ public:

    virtual status_t startAudioSource(const struct audio_port_config *source,
                                      const audio_attributes_t *attributes,
                                      audio_patch_handle_t *handle) = 0;
    virtual status_t stopAudioSource(audio_patch_handle_t handle) = 0;
                                      audio_port_handle_t *portId) = 0;
    virtual status_t stopAudioSource(audio_port_handle_t portId) = 0;

    virtual status_t setMasterMono(bool mono) = 0;
    virtual status_t getMasterMono(bool *mono) = 0;
+2 −2
Original line number Diff line number Diff line
@@ -226,9 +226,9 @@ public:

    virtual status_t startAudioSource(const struct audio_port_config *source,
                                      const audio_attributes_t *attributes,
                                      audio_patch_handle_t *handle,
                                      audio_port_handle_t *portId,
                                      uid_t uid) = 0;
    virtual status_t stopAudioSource(audio_patch_handle_t handle) = 0;
    virtual status_t stopAudioSource(audio_port_handle_t portId) = 0;

    virtual status_t setMasterMono(bool mono) = 0;
    virtual status_t getMasterMono(bool *mono) = 0;
Loading