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

Commit 8de57fa9 authored by Sidipotu Ashok's avatar Sidipotu Ashok
Browse files

policy: avoid fallback to deep-buffer for fast requests

Avoid fallback to deep-buffer for outputs requested with fast
or raw flags.

Change-Id: I9b43f9065e59583ab84b954f2a87dbc8cc80cd16
parent b9e9dfd0
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -777,7 +777,10 @@ void AudioPolicyManagerCustom::setPhoneState(audio_mode_t state)
               continue;
            }

            if (AUDIO_OUTPUT_FLAG_FAST == mFallBackflag) {
            bool isFastFallBackNeeded =
               ((AUDIO_OUTPUT_FLAG_DEEP_BUFFER | AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD | AUDIO_OUTPUT_FLAG_DIRECT_PCM) & outputDesc->mProfile->getFlags());

            if ((AUDIO_OUTPUT_FLAG_FAST == mFallBackflag) && isFastFallBackNeeded) {
                if (((!outputDesc->isDuplicated() && outputDesc->mProfile->getFlags() & AUDIO_OUTPUT_FLAG_PRIMARY))
                            && prop_playback_enabled) {
                    ALOGD("voice_conc:calling suspendOutput on call mode for primary output");
@@ -1527,6 +1530,11 @@ audio_io_handle_t AudioPolicyManagerCustom::getOutputForDevice(
       prop_voip_enabled = atoi(propValue) || !strncmp("true", propValue, 4);
    }

    bool isDeepBufferFallBackNeeded =
        ((AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD | AUDIO_OUTPUT_FLAG_DIRECT_PCM) & flags);
    bool isFastFallBackNeeded =
        ((AUDIO_OUTPUT_FLAG_DEEP_BUFFER | AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD | AUDIO_OUTPUT_FLAG_DIRECT_PCM) & flags);

    if (prop_play_enabled && mvoice_call_state) {
        //check if voice call is active  / running in background
        if((AUDIO_MODE_IN_CALL == mEngine->getPhoneState()) ||
@@ -1541,10 +1549,12 @@ audio_io_handle_t AudioPolicyManagerCustom::getOutputForDevice(
                }
            }
            else {
                if (AUDIO_OUTPUT_FLAG_FAST == mFallBackflag) {
                if (isFastFallBackNeeded &&
                    (AUDIO_OUTPUT_FLAG_FAST == mFallBackflag)) {
                    ALOGD("voice_conc:IN call mode adding ULL flags .. flags: %x ", flags );
                    flags = AUDIO_OUTPUT_FLAG_FAST;
                } else if (AUDIO_OUTPUT_FLAG_DEEP_BUFFER == mFallBackflag) {
                } else if (isDeepBufferFallBackNeeded &&
                           (AUDIO_OUTPUT_FLAG_DEEP_BUFFER == mFallBackflag)) {
                    if (AUDIO_STREAM_MUSIC == stream) {
                        flags = AUDIO_OUTPUT_FLAG_DEEP_BUFFER;
                        ALOGD("voice_conc:IN call mode adding deep-buffer flags %x ", flags );