audio: enable 24bits camcorder

Bug: 113776612
Bug: 118022272
Test: manaul audio test

Change-Id: I4563fbd0fb799aa4977aaf532b98844d5aa7a37f
Signed-off-by: juyuchen <juyuchen@google.com>
(cherry picked from commit be5c67e731117c4b1693621c02c86f79cc5fb9ce)
diff --git a/hal/Android.mk b/hal/Android.mk
index d04eb9f..5a9daf5 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -200,6 +200,10 @@
     LOCAL_SRC_FILES += audio_extn/maxxaudio.c
 endif
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_24BITS_CAMCORDER)), true)
+    LOCAL_CFLAGS += -DENABLED_24BITS_CAMCORDER
+endif
+
 ifeq ($(strip $(AUDIO_FEATURE_ENABLED_BG_CAL)),true)
     LOCAL_CFLAGS += -DBG_CODEC_CAL
 endif
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 9559573..cc1276b 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -540,6 +540,20 @@
     return false;
 }
 
+static bool is_supported_24bits_audiosource(audio_source_t source)
+{
+    switch (source) {
+        case AUDIO_SOURCE_UNPROCESSED:
+#ifdef ENABLED_24BITS_CAMCORDER
+        case AUDIO_SOURCE_CAMCORDER:
+#endif
+            return true;
+        default:
+            break;
+    }
+    return false;
+}
+
 static inline bool is_mmap_usecase(audio_usecase_t uc_id)
 {
     return (uc_id == USECASE_AUDIO_RECORD_AFE_PROXY) ||
@@ -5083,7 +5097,7 @@
 
            on error flinger will retry with supported format passed
          */
-        if (source != AUDIO_SOURCE_UNPROCESSED) {
+        if (!is_supported_24bits_audiosource(source)) {
             config->format = AUDIO_FORMAT_PCM_16_BIT;
             ret_error = true;
         } else if (config->format != AUDIO_FORMAT_PCM_8_24_BIT) {