Promotion of audio-userspace.lnx.2.2-00012.

CRs      Change ID                                   Subject
--------------------------------------------------------------------------------------------------------------
1106679   I2e79dcffa8022532801c0feb7d527de81a885001   audio:hal: Fix to set ASRC mode for use case with combo
1109015   Ifdc7b8ff9d129e93a48d34c622e5a76bd83617eb   hal: fix mismatch in configuration for NOIRQ record path
1107938   Ie60559806a3ee02e6b84626ba2a3ee89844a1a7a   audio: correct dependencies for compilation with AOSP fl
1092123   I73d3fe413dd7590470c5b3b19569d6a7969c4dd8   Fix potential NULL dereference in Visualizer effect

Change-Id: I04236b64e181419e0761e88e8f2cc76a8e9616ae
CRs-Fixed: 1107938, 1109015, 1106679, 1092123
diff --git a/Android.mk b/Android.mk
index 61bb1d5..4b40d70 100644
--- a/Android.mk
+++ b/Android.mk
@@ -14,9 +14,12 @@
 include $(MY_LOCAL_PATH)/mm-audio/Android.mk
 include $(MY_LOCAL_PATH)/policy_hal/Android.mk
 include $(MY_LOCAL_PATH)/visualizer/Android.mk
-include $(MY_LOCAL_PATH)/audiod/Android.mk
 include $(MY_LOCAL_PATH)/post_proc/Android.mk
 include $(MY_LOCAL_PATH)/qahw_api/Android.mk
 endif
 
+ifneq ($(TARGET_USES_AOSP), true)
+include $(MY_LOCAL_PATH)/audiod/Android.mk
+endif
+
 endif
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index e60ce6e..8c37bae 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -778,6 +778,9 @@
     } else {
         ALOGD("%s: snd_device(%d: %s)", __func__, snd_device, device_name);
 
+       if (platform_check_codec_asrc_support(adev->platform))
+           check_and_set_asrc_mode(adev, snd_device);
+
        if ((SND_DEVICE_OUT_BT_A2DP == snd_device) &&
            (audio_extn_a2dp_start_playback() < 0)) {
            ALOGE(" fail to configure A2dp control path ");
@@ -1597,8 +1600,6 @@
     /* Enable new sound devices */
     if (out_snd_device != SND_DEVICE_NONE) {
         check_usecases_codec_backend(adev, usecase, out_snd_device);
-        if (platform_check_codec_asrc_support(adev->platform))
-            check_and_set_asrc_mode(adev, out_snd_device);
         enable_snd_device(adev, out_snd_device);
     }
 
@@ -4704,6 +4705,16 @@
     in->capture_handle = handle;
     in->flags = flags;
 
+    in->usecase = USECASE_AUDIO_RECORD;
+    if (config->sample_rate == LOW_LATENCY_CAPTURE_SAMPLE_RATE &&
+            (flags & AUDIO_INPUT_FLAG_FAST) != 0) {
+        is_low_latency = true;
+#if LOW_LATENCY_CAPTURE_USE_CASE
+        in->usecase = USECASE_AUDIO_RECORD_LOW_LATENCY;
+#endif
+        in->realtime = may_use_noirq_mode(adev, in->usecase, in->flags);
+    }
+
     in->format = config->format;
     if (in->realtime) {
         in->config = pcm_config_audio_capture_rt;
@@ -4758,16 +4769,6 @@
         }
     }
 
-    in->usecase = USECASE_AUDIO_RECORD;
-    if (config->sample_rate == LOW_LATENCY_CAPTURE_SAMPLE_RATE &&
-            (flags & AUDIO_INPUT_FLAG_FAST) != 0) {
-        is_low_latency = true;
-#if LOW_LATENCY_CAPTURE_USE_CASE
-        in->usecase = USECASE_AUDIO_RECORD_LOW_LATENCY;
-#endif
-        in->realtime = may_use_noirq_mode(adev, in->usecase, in->flags);
-    }
-
     /* Update config params with the requested sample rate and channels */
     if ((in->device == AUDIO_DEVICE_IN_TELEPHONY_RX) &&
           (adev->mode != AUDIO_MODE_IN_CALL)) {
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 0022996..26b603a 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -3594,10 +3594,10 @@
                     (my_data->source_mic_type & SOURCE_DUAL_MIC)) {
                      snd_device = SND_DEVICE_IN_UNPROCESSED_STEREO_MIC;
                 }
-                else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_3) &&
+                else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_3) &&
                          (my_data->source_mic_type & SOURCE_THREE_MIC)) {
                          snd_device = SND_DEVICE_IN_UNPROCESSED_THREE_MIC;
-               } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_4) &&
+               } else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_4) &&
                          (my_data->source_mic_type & SOURCE_QUAD_MIC)) {
                          snd_device = SND_DEVICE_IN_UNPROCESSED_QUAD_MIC;
                } else {
@@ -3623,10 +3623,10 @@
                        (channel_mask == AUDIO_CHANNEL_IN_STEREO)) &&
                        (my_data->source_mic_type & SOURCE_DUAL_MIC)) {
                 snd_device = SND_DEVICE_IN_VOICE_REC_DMIC_STEREO;
-            } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_3) &&
+            } else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_3) &&
                        (my_data->source_mic_type & SOURCE_THREE_MIC)) {
                 snd_device = SND_DEVICE_IN_THREE_MIC;
-            } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_4) &&
+            } else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_4) &&
                        (my_data->source_mic_type & SOURCE_QUAD_MIC)) {
                 snd_device = SND_DEVICE_IN_QUAD_MIC;
             }
@@ -3643,10 +3643,10 @@
                 (channel_mask == AUDIO_CHANNEL_IN_STEREO)) &&
                 (my_data->source_mic_type & SOURCE_DUAL_MIC)) {
                 snd_device = SND_DEVICE_IN_UNPROCESSED_STEREO_MIC;
-            } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_3) &&
+            } else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_3) &&
                 (my_data->source_mic_type & SOURCE_THREE_MIC)) {
                 snd_device = SND_DEVICE_IN_UNPROCESSED_THREE_MIC;
-            } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_4) &&
+            } else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_4) &&
                        (my_data->source_mic_type & SOURCE_QUAD_MIC)) {
                 snd_device = SND_DEVICE_IN_UNPROCESSED_QUAD_MIC;
             } else {
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index fd8c773..4c7a8de 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -3221,10 +3221,10 @@
                     (my_data->source_mic_type & SOURCE_DUAL_MIC)) {
                     snd_device = SND_DEVICE_IN_UNPROCESSED_STEREO_MIC;
                 }
-                else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_3) &&
+                else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_3) &&
                          (my_data->source_mic_type & SOURCE_THREE_MIC)) {
                          snd_device = SND_DEVICE_IN_UNPROCESSED_THREE_MIC;
-               } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_4) &&
+               } else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_4) &&
                           (my_data->source_mic_type & SOURCE_QUAD_MIC)) {
                           snd_device = SND_DEVICE_IN_UNPROCESSED_QUAD_MIC;
                } else {
@@ -3250,10 +3250,10 @@
                        (channel_mask == AUDIO_CHANNEL_IN_STEREO)) &&
                        (my_data->source_mic_type & SOURCE_DUAL_MIC)) {
                 snd_device = SND_DEVICE_IN_VOICE_REC_DMIC_STEREO;
-            } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_3) &&
+            } else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_3) &&
                        (my_data->source_mic_type & SOURCE_THREE_MIC)) {
                 snd_device = SND_DEVICE_IN_THREE_MIC;
-            } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_4) &&
+            } else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_4) &&
                        (my_data->source_mic_type & SOURCE_QUAD_MIC)) {
                 snd_device = SND_DEVICE_IN_QUAD_MIC;
             }
@@ -3270,10 +3270,10 @@
                  (channel_mask == AUDIO_CHANNEL_IN_STEREO)) &&
                  (my_data->source_mic_type & SOURCE_DUAL_MIC)) {
                  snd_device = SND_DEVICE_IN_UNPROCESSED_STEREO_MIC;
-             } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_3) &&
+             } else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_3) &&
                  (my_data->source_mic_type & SOURCE_THREE_MIC)) {
                  snd_device = SND_DEVICE_IN_UNPROCESSED_THREE_MIC;
-             } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_4) &&
+             } else if (((int)channel_mask == (int)AUDIO_CHANNEL_INDEX_MASK_4) &&
                  (my_data->source_mic_type & SOURCE_QUAD_MIC)) {
                  snd_device = SND_DEVICE_IN_UNPROCESSED_QUAD_MIC;
              } else {
diff --git a/visualizer/offload_visualizer.c b/visualizer/offload_visualizer.c
index aaa586b..716755b 100644
--- a/visualizer/offload_visualizer.c
+++ b/visualizer/offload_visualizer.c
@@ -898,9 +898,13 @@
     case VISUALIZER_CMD_MEASURE: {
         if (pReplyData == NULL || replySize == NULL ||
                 *replySize < (sizeof(int32_t) * MEASUREMENT_COUNT)) {
-            ALOGV("%s VISUALIZER_CMD_MEASURE error *replySize %d <"
-                    "(sizeof(int32_t) * MEASUREMENT_COUNT) %d",
-                    __func__, *replySize, sizeof(int32_t) * MEASUREMENT_COUNT);
+            if (replySize == NULL) {
+                ALOGV("%s VISUALIZER_CMD_MEASURE error replySize NULL", __func__);
+            } else {
+                ALOGV("%s VISUALIZER_CMD_MEASURE error *replySize %u <"
+                        "(sizeof(int32_t) * MEASUREMENT_COUNT) %zu",
+                        __func__, *replySize, sizeof(int32_t) * MEASUREMENT_COUNT);
+            }
             android_errorWriteLog(0x534e4554, "30229821");
             return -EINVAL;
         }
diff --git a/voice_processing/Android.mk b/voice_processing/Android.mk
index 9b86eaf..73619c6 100644
--- a/voice_processing/Android.mk
+++ b/voice_processing/Android.mk
@@ -14,6 +14,7 @@
     $(call include-path-for, audio-effects)
 
 LOCAL_SHARED_LIBRARIES := \
+    liblog \
     libcutils
 
 LOCAL_SHARED_LIBRARIES += libdl