Merge tag 'android-11.0.0_r48' into int/11/fp3

Android 11.0.0 Release 48 (RD2A.211001.002)

* tag 'android-11.0.0_r48':

Change-Id: I231379a9401952a2b1cd75bf1997311fc5f78c77
diff --git a/audio/include/system/audio-base.h b/audio/include/system/audio-base.h
index 97715ae..dc6e77c 100644
--- a/audio/include/system/audio-base.h
+++ b/audio/include/system/audio-base.h
@@ -119,6 +119,9 @@
     AUDIO_FORMAT_LHDC                = 0x28000000u,
     AUDIO_FORMAT_LHDC_LL             = 0x29000000u,
     AUDIO_FORMAT_APTX_TWSP           = 0x2A000000u,
+#if !defined(__ANDROID_VNDK__) || defined(__AUDIO_VNDK_EXT__)
+    VX_AUDIO_FORMAT_LC3              = 0x2B000000u,
+#endif
     AUDIO_FORMAT_MAIN_MASK           = 0xFF000000u,
     AUDIO_FORMAT_SUB_MASK            = 0x00FFFFFFu,
 
diff --git a/audio/include/system/audio.h b/audio/include/system/audio.h
index 189f51b..a5b004b 100644
--- a/audio/include/system/audio.h
+++ b/audio/include/system/audio.h
@@ -1207,6 +1207,9 @@
     case AUDIO_FORMAT_LHDC:
     case AUDIO_FORMAT_LHDC_LL:
     case AUDIO_FORMAT_APTX_TWSP:
+#if !defined(__ANDROID_VNDK__) || defined(__AUDIO_VNDK_EXT__)
+    case VX_AUDIO_FORMAT_LC3:
+#endif
         return true;
     default:
         return false;
diff --git a/audio/include/system/audio_config.h b/audio/include/system/audio_config.h
index 5cb3ff5..ae69401 100644
--- a/audio/include/system/audio_config.h
+++ b/audio/include/system/audio_config.h
@@ -31,12 +31,18 @@
 static inline std::vector<std::string> audio_get_configuration_paths() {
     static const std::vector<std::string> paths = []() {
         char value[PROPERTY_VALUE_MAX] = {};
+        char va_aosp[PROPERTY_VALUE_MAX] = {};
         if (property_get("ro.boot.product.vendor.sku", value, "") <= 0) {
-            return std::vector<std::string>({"/odm/etc", "/vendor/etc", "/system/etc"});
-        } else {
-            return std::vector<std::string>({
-                    "/odm/etc", std::string("/vendor/etc/audio/sku_") + value,
+            return std::vector<std::string>({"/odm/etc", "/vendor/etc/audio",
                     "/vendor/etc", "/system/etc"});
+        } else {
+            property_get("ro.vendor.qti.va_aosp.support", va_aosp, "");
+            return std::vector<std::string>({
+                    "/odm/etc",
+                    std::string("/vendor/etc/audio/sku_") + value +
+                            ((va_aosp[0] == '1') ? "_qssi" : ""),
+                    std::string("/vendor/etc/audio/sku_") + value,
+                    "/vendor/etc/audio", "/vendor/etc", "/system/etc"});
         }
     }();
     return paths;
diff --git a/audio_utils/Android.bp b/audio_utils/Android.bp
index 5ffbb94..8ae556d 100644
--- a/audio_utils/Android.bp
+++ b/audio_utils/Android.bp
@@ -83,6 +83,62 @@
     min_sdk_version: "29",
 }
 
+cc_library {
+    name: "libaudioutils_ext",
+    vendor: true,
+    vndk: {
+        enabled: true,
+        extends: "libaudioutils",
+    },
+    double_loadable: true,
+    defaults: ["audio_utils_defaults"],
+
+    srcs: [
+        "Balance.cpp",
+        "channels.c",
+        "ErrorLog.cpp",
+        "fifo.cpp",
+        "fifo_index.cpp",
+        "fifo_writer_T.cpp",
+        "format.c",
+        "limiter.c",
+        "Metadata.cpp",
+        "minifloat.c",
+        "mono_blend.cpp",
+        "power.cpp",
+        "PowerLog.cpp",
+        "primitives.c",
+        "roundup.c",
+        "sample.c",
+        "resampler.c",
+        "echo_reference.c",
+    ],
+
+    cflags: [
+        "-D__AUDIO_VNDK_EXT__"
+    ],
+
+    header_libs: [
+        "libaudio_system_headers",
+        "libutils_headers",
+    ],
+
+    export_header_lib_headers: [
+        "libaudio_system_headers",
+        "libutils_headers",
+    ],
+
+    shared_libs: [
+        "libcutils",
+        "liblog",
+        "libspeexresampler",
+    ],
+
+    whole_static_libs: ["libaudioutils_fixedfft"],
+
+    min_sdk_version: "29",
+}
+
 cc_library_static {
     name: "libaudioutils_fixedfft",
     vendor_available: true,