OSDN Git Service

audiopolicy: Indicate output device change to all input threads for pre-processing
authorbryant_liu <bryant_liu@htc.com>
Tue, 19 Aug 2014 12:07:05 +0000 (20:07 +0800)
committerDmitry Shmidt <dimitrysh@google.com>
Fri, 29 Aug 2014 01:13:57 +0000 (18:13 -0700)
Bug: 17129715

Change-Id: I1fd938cce0b85241c80ea00f3d013a98948d3975

services/audiopolicy/AudioPolicyManager.cpp

index 06dd22c..f65e136 100644 (file)
@@ -4317,6 +4317,20 @@ uint32_t AudioPolicyManager::setOutputDevice(audio_io_handle_t output,
                 mpClientInterface->onAudioPatchListUpdate();
             }
         }
+
+        // inform all input as well
+        for (size_t i = 0; i < mInputs.size(); i++) {
+            const sp<AudioInputDescriptor>  inputDescriptor = mInputs.valueAt(i);
+            if (!isVirtualInputDevice(inputDescriptor->mDevice)) {
+                AudioParameter inputCmd = AudioParameter();
+                ALOGV("%s: inform input %d of device:%d", __func__,
+                      inputDescriptor->mIoHandle, device);
+                inputCmd.addInt(String8(AudioParameter::keyRouting),device);
+                mpClientInterface->setParameters(inputDescriptor->mIoHandle,
+                                                 inputCmd.toString(),
+                                                 delayMs);
+            }
+        }
     }
 
     // update stream volumes according to new device