diff options
Diffstat (limited to 'services/audioflinger/AudioFlinger.cpp')
| -rw-r--r-- | services/audioflinger/AudioFlinger.cpp | 19 | 
1 files changed, 17 insertions, 2 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp index 751c6b0..efb42c0 100644 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@ -1053,9 +1053,24 @@ status_t AudioFlinger::setParameters(audio_io_handle_t ioHandle, const String8&              }              mHardwareStatus = AUDIO_HW_IDLE;          } -        // disable AEC and NS if the device is a BT SCO headset supporting those pre processings +          AudioParameter param = AudioParameter(keyValuePairs); -        String8 value; +        String8 value, key; +        key = String8("SND_CARD_STATUS"); +        if (param.get(key, value) == NO_ERROR) { +            ALOGV("Set keySoundCardStatus:%s", value.string()); +            if ((value.find("OFFLINE", 0) != -1) ) { +                ALOGV("OFFLINE detected - call InvalidateTracks()"); +                for (size_t i = 0; i < mPlaybackThreads.size(); i++) { +                    PlaybackThread *thread = mPlaybackThreads.valueAt(i).get(); +                    if( thread->getOutput()->flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD ){ +                         thread->invalidateTracks(AUDIO_STREAM_MUSIC); +                     } +                } +           } +        } + +        // disable AEC and NS if the device is a BT SCO headset supporting those pre processings          if (param.get(String8(AUDIO_PARAMETER_KEY_BT_NREC), value) == NO_ERROR) {              bool btNrecIsOff = (value == AUDIO_PARAMETER_VALUE_OFF);              if (mBtNrecIsOff != btNrecIsOff) {  | 
