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

Commit efc4d489 authored by Eric Laurent's avatar Eric Laurent Committed by Android (Google) Code Review
Browse files

Merge "audioflinger: add HOTWORD audio source." into klp-dev

parents a911f51c 9a54bc27
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -296,9 +296,14 @@ audio_io_handle_t AudioPolicyService::getInput(audio_source_t inputSource,
        return 0;
    }
    // already checked by client, but double-check in case the client wrapper is bypassed
    if (uint32_t(inputSource) >= AUDIO_SOURCE_CNT) {
    if (inputSource >= AUDIO_SOURCE_CNT && inputSource != AUDIO_SOURCE_HOTWORD) {
        return 0;
    }

    if ((inputSource == AUDIO_SOURCE_HOTWORD) && !captureHotwordAllowed()) {
        return 0;
    }

    Mutex::Autolock _l(mLock);
    // the audio_in_acoustics_t parameter is ignored by get_input()
    audio_io_handle_t input = mpAudioPolicy->get_input(mpAudioPolicy, inputSource, samplingRate,
@@ -308,7 +313,10 @@ audio_io_handle_t AudioPolicyService::getInput(audio_source_t inputSource,
        return input;
    }
    // create audio pre processors according to input source
    ssize_t index = mInputSources.indexOfKey(inputSource);
    audio_source_t aliasSource = (inputSource == AUDIO_SOURCE_HOTWORD) ?
                                    AUDIO_SOURCE_VOICE_RECOGNITION : inputSource;

    ssize_t index = mInputSources.indexOfKey(aliasSource);
    if (index < 0) {
        return input;
    }
+1 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ public:

            void        destroy();

            void        invalidate();
            // clear the buffer overflow flag
            void        clearOverflow() { mOverflow = false; }
            // set the buffer overflow flag and return previous value
+7 −0
Original line number Diff line number Diff line
@@ -43,6 +43,13 @@ bool captureAudioOutputAllowed() {
    return ok;
}

bool captureHotwordAllowed() {
    static const String16 sCaptureHotwordAllowed("android.permission.CAPTURE_AUDIO_HOTWORD");
    bool ok = checkCallingPermission(sCaptureHotwordAllowed);
    if (!ok) ALOGE("android.permission.CAPTURE_AUDIO_HOTWORD");
    return ok;
}

bool settingsAllowed() {
    if (getpid_cached == IPCThreadState::self()->getCallingPid()) return true;
    static const String16 sAudioSettings("android.permission.MODIFY_AUDIO_SETTINGS");
+1 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ extern pid_t getpid_cached;

bool recordingAllowed();
bool captureAudioOutputAllowed();
bool captureHotwordAllowed();
bool settingsAllowed();
bool dumpAllowed();

+4 −0
Original line number Diff line number Diff line
@@ -4451,6 +4451,10 @@ bool AudioFlinger::RecordThread::threadLoop()

    {
        Mutex::Autolock _l(mLock);
        for (size_t i = 0; i < mTracks.size(); i++) {
            sp<RecordTrack> track = mTracks[i];
            track->invalidate();
        }
        mActiveTrack.clear();
        mStartStopCond.broadcast();
    }
Loading