Merge "sthal: incorrect order of microphone SRC plugin" into qt-r1-dev
am: 03ff3215a9

Change-Id: I71d265bee3ad0a2dfea1fb7bee74d1eb76fc6552
diff --git a/sound_trigger_hw_iaxxx.c b/sound_trigger_hw_iaxxx.c
index 9247f00..1d322a2 100644
--- a/sound_trigger_hw_iaxxx.c
+++ b/sound_trigger_hw_iaxxx.c
@@ -1559,9 +1559,27 @@
 
     /*
      * Reset mic and src package if sound trigger recording is active
-     * If sound trigger recording isn't active, then we don't need to
-     * recover src package.
+     * The src-mic, src-amp must be enable before AEC enable, because
+     * the endpoint sequence control.
+     *
+     * The stream 0 should be enable at last moment for the data alignment.
      */
+    if (stdev->is_mic_route_enabled == true) {
+        // recover src package if sound trigger recording is active
+        err = setup_src_plugin(stdev->odsp_hdl, SRC_MIC);
+        if (err != 0) {
+            ALOGE("failed to load SRC package");
+        }
+        err = enable_src_route(stdev->route_hdl, false, SRC_MIC);
+        if (err != 0) {
+            ALOGE("Failed to tear SRC-mic route");
+        }
+        err = enable_src_route(stdev->route_hdl, true, SRC_MIC);
+        if (err != 0) {
+            ALOGE("Failed to restart SRC-mic route");
+        }
+    }
+
     if (stdev->is_music_playing == true &&
         stdev->is_bargein_route_enabled == true) {
         if (is_mic_controlled_by_audhal(stdev) == true) {
@@ -1603,20 +1621,6 @@
     }
 
     if (stdev->is_mic_route_enabled == true) {
-        // recover src package if sound trigger recording is active
-        err = setup_src_plugin(stdev->odsp_hdl, SRC_MIC);
-        if (err != 0) {
-            ALOGE("failed to load SRC package");
-        }
-        err = enable_src_route(stdev->route_hdl, false, SRC_MIC);
-        if (err != 0) {
-            ALOGE("Failed to tear SRC-mic route");
-        }
-        err = enable_src_route(stdev->route_hdl, true, SRC_MIC);
-        if (err != 0) {
-            ALOGE("Failed to restart SRC-mic route");
-        }
-
         if (is_mic_controlled_by_audhal(stdev) == false) {
             err = enable_mic_route(stdev->route_hdl, false, ct);
             if (err != 0) {