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

Commit 65a438c6 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Don't record audio if UID is idle - media framework"

parents 2917aa46 f4ddfefc
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -41,7 +41,6 @@ audio_error_callback AudioSystem::gAudioErrorCallback = NULL;
dynamic_policy_callback AudioSystem::gDynPolicyCallback = NULL;
record_config_callback AudioSystem::gRecordConfigCallback = NULL;


// establish binder interface to AudioFlinger service
const sp<IAudioFlinger> AudioSystem::get_audio_flinger()
{
@@ -917,11 +916,14 @@ status_t AudioSystem::getInputForAttr(const audio_attributes_t *attr,
}

status_t AudioSystem::startInput(audio_io_handle_t input,
                                 audio_session_t session)
                                 audio_session_t session,
                                 audio_devices_t device,
                                 uid_t uid,
                                 bool *silenced)
{
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == 0) return PERMISSION_DENIED;
    return aps->startInput(input, session);
    return aps->startInput(input, session, device, uid, silenced);
}

status_t AudioSystem::stopInput(audio_io_handle_t input,
+20 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ enum {
    SET_MODE,
    SET_MIC_MUTE,
    GET_MIC_MUTE,
    SET_RECORD_SILENCED,
    SET_PARAMETERS,
    GET_PARAMETERS,
    REGISTER_CLIENT,
@@ -306,6 +307,15 @@ public:
        return reply.readInt32();
    }

    virtual void setRecordSilenced(uid_t uid, bool silenced)
    {
        Parcel data, reply;
        data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
        data.writeInt32(uid);
        data.writeInt32(silenced ? 1 : 0);
        remote()->transact(SET_RECORD_SILENCED, data, &reply);
    }

    virtual status_t setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs)
    {
        Parcel data, reply;
@@ -859,6 +869,7 @@ status_t BnAudioFlinger::onTransact(
        case RELEASE_AUDIO_PATCH:
        case LIST_AUDIO_PATCHES:
        case SET_AUDIO_PORT_CONFIG:
        case SET_RECORD_SILENCED:
            ALOGW("%s: transaction %d received from PID %d",
                  __func__, code, IPCThreadState::self()->getCallingPid());
            return INVALID_OPERATION;
@@ -1024,6 +1035,15 @@ status_t BnAudioFlinger::onTransact(
            reply->writeInt32( getMicMute() );
            return NO_ERROR;
        } break;
        case SET_RECORD_SILENCED: {
            CHECK_INTERFACE(IAudioFlinger, data, reply);
            uid_t uid = data.readInt32();
            audio_source_t source;
            data.read(&source, sizeof(audio_source_t));
            bool silenced = data.readInt32() == 1;
            setRecordSilenced(uid, silenced);
            return NO_ERROR;
        } break;
        case SET_PARAMETERS: {
            CHECK_INTERFACE(IAudioFlinger, data, reply);
            audio_io_handle_t ioHandle = (audio_io_handle_t) data.readInt32();
+16 −3
Original line number Diff line number Diff line
@@ -330,14 +330,22 @@ public:
    }

    virtual status_t startInput(audio_io_handle_t input,
                                audio_session_t session)
                                audio_session_t session,
                                audio_devices_t device,
                                uid_t uid,
                                bool *silenced)
    {
        Parcel data, reply;
        data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
        data.writeInt32(input);
        data.writeInt32(session);
        data.writeInt32(device);
        data.writeInt32(uid);
        data.writeInt32(*silenced ? 1 : 0);
        remote()->transact(START_INPUT, data, &reply);
        return static_cast <status_t> (reply.readInt32());
        status_t status = static_cast <status_t> (reply.readInt32());
        *silenced = reply.readInt32() == 1;
        return status;
    }

    virtual status_t stopInput(audio_io_handle_t input,
@@ -1045,7 +1053,12 @@ status_t BnAudioPolicyService::onTransact(
            CHECK_INTERFACE(IAudioPolicyService, data, reply);
            audio_io_handle_t input = static_cast <audio_io_handle_t>(data.readInt32());
            audio_session_t session = static_cast <audio_session_t>(data.readInt32());
            reply->writeInt32(static_cast <uint32_t>(startInput(input, session)));
            audio_devices_t device = static_cast <audio_devices_t>(data.readInt32());
            uid_t uid = static_cast <uid_t>(data.readInt32());
            bool silenced = data.readInt32() == 1;
            status_t status = startInput(input, session, device, uid, &silenced);
            reply->writeInt32(static_cast <uint32_t>(status));
            reply->writeInt32(silenced ? 1 : 0);
            return NO_ERROR;
        } break;

+4 −1
Original line number Diff line number Diff line
@@ -244,7 +244,10 @@ public:
                                    audio_port_handle_t *portId);

    static status_t startInput(audio_io_handle_t input,
                               audio_session_t session);
                               audio_session_t session,
                               audio_devices_t device,
                               uid_t uid,
                               bool *silenced);
    static status_t stopInput(audio_io_handle_t input,
                              audio_session_t session);
    static void releaseInput(audio_io_handle_t input,
+1 −0
Original line number Diff line number Diff line
@@ -368,6 +368,7 @@ public:
    // mic mute/state
    virtual     status_t    setMicMute(bool state) = 0;
    virtual     bool        getMicMute() const = 0;
    virtual     void        setRecordSilenced(uid_t uid, bool silenced) = 0;

    virtual     status_t    setParameters(audio_io_handle_t ioHandle,
                                    const String8& keyValuePairs) = 0;
Loading