Merge "hal: Add lito target for audio_extn libs"
diff --git a/configs/kona/audio_platform_info_qrd.xml b/configs/kona/audio_platform_info_qrd.xml
index 5659a4e..4851f0d 100644
--- a/configs/kona/audio_platform_info_qrd.xml
+++ b/configs/kona/audio_platform_info_qrd.xml
@@ -100,6 +100,20 @@
<device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" acdb_id="147"/>
<device name="SND_DEVICE_IN_HANDSET_GENERIC_QMIC" acdb_id="157"/>
</acdb_ids>
+ <module_ids>
+ <aec>
+ <device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_SB" module_id="0x10F39" instance_id="0x8000" param_id="0x10EAF" param_value="0x01"/>
+ <device name="SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB" module_id="0x10F38" instance_id="0x8000" param_id="0x10EAF" param_value="0x01"/>
+ <device name="SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB" module_id="0x10F39" instance_id="0x8000" param_id="0x10EAF" param_value="0x01"/>
+ <device name="SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB" module_id="0x10F38" instance_id="0x8000" param_id="0x10EAF" param_value="0x01"/>
+ </aec>
+ <ns>
+ <device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_SB" module_id="0x10F39" instance_id="0x8000" param_id="0x10EAF" param_value="0x02"/>
+ <device name="SND_DEVICE_IN_SPEAKER_MIC_AEC_NS_SB" module_id="0x10F38" instance_id="0x8000" param_id="0x10EAF" param_value="0x02"/>
+ <device name="SND_DEVICE_IN_HANDSET_DMIC_AEC_NS_SB" module_id="0x10F39" instance_id="0x8000" param_id="0x10EAF" param_value="0x02"/>
+ <device name="SND_DEVICE_IN_HANDSET_MIC_AEC_NS_SB" module_id="0x10F38" instance_id="0x8000" param_id="0x10EAF" param_value="0x02"/>
+ </ns>
+ </module_ids>
<backend_names>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_HEADPHONES_44_1" backend="headphones-44.1" interface="RX_CDC_DMA_RX_0"/>
diff --git a/configs/kona/kona.mk b/configs/kona/kona.mk
index dbf53f5..f0f175a 100644
--- a/configs/kona/kona.mk
+++ b/configs/kona/kona.mk
@@ -42,7 +42,7 @@
AUDIO_FEATURE_ENABLED_AUDIOSPHERE := true
AUDIO_FEATURE_ENABLED_USB_TUNNEL := true
AUDIO_FEATURE_ENABLED_A2DP_OFFLOAD := true
-AUDIO_FEATURE_ENABLED_3D_AUDIO := false
+AUDIO_FEATURE_ENABLED_3D_AUDIO := true
AUDIO_FEATURE_ENABLED_AHAL_EXT := true
DOLBY_ENABLE := false
endif
@@ -99,6 +99,7 @@
vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_qrd.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/audio_configs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_configs.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/kona/audio_configs_stock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_configs_stock.xml \
frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml
#XML Audio configuration files
diff --git a/configs/msm8998/audio_policy_configuration.xml b/configs/msm8998/audio_policy_configuration.xml
index c2d30a1..88a27d3 100644
--- a/configs/msm8998/audio_policy_configuration.xml
+++ b/configs/msm8998/audio_policy_configuration.xml
@@ -250,17 +250,17 @@
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
diff --git a/configs/msmnile/mixer_paths_tavil.xml b/configs/msmnile/mixer_paths_tavil.xml
index 244382e..a19c667 100644
--- a/configs/msmnile/mixer_paths_tavil.xml
+++ b/configs/msmnile/mixer_paths_tavil.xml
@@ -1506,6 +1506,10 @@
<path name="incall-rec-uplink" />
</path>
+ <path name="incall-rec-uplink headset-mic">
+ <path name="incall-rec-uplink" />
+ </path>
+
<path name="incall-rec-uplink afe-proxy">
<path name="incall-rec-uplink" />
</path>
@@ -1514,6 +1518,10 @@
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="1" />
</path>
+ <path name="incall-rec-uplink-compress headset-mic">
+ <path name="incall-rec-uplink-compress" />
+ </path>
+
<path name="incall-rec-uplink-compress bt-sco">
<path name="incall-rec-uplink-compress" />
</path>
@@ -1546,6 +1554,10 @@
<path name="incall-rec-downlink" />
</path>
+ <path name="incall-rec-downlink headset-mic">
+ <path name="incall-rec-downlink" />
+ </path>
+
<path name="incall-rec-downlink afe-proxy">
<path name="incall-rec-downlink" />
</path>
@@ -1554,6 +1566,10 @@
<ctl name="MultiMedia8 Mixer VOC_REC_DL" value="1" />
</path>
+ <path name="incall-rec-downlink-compress headset-mic">
+ <path name="incall-rec-downlink-compress" />
+ </path>
+
<path name="incall-rec-downlink-compress bt-sco">
<path name="incall-rec-downlink-compress" />
</path>
@@ -1587,6 +1603,10 @@
<path name="incall-rec-uplink-and-downlink" />
</path>
+ <path name="incall-rec-uplink-and-downlink headset-mic">
+ <path name="incall-rec-uplink-and-downlink" />
+ </path>
+
<path name="incall-rec-uplink-and-downlink afe-proxy">
<path name="incall-rec-uplink-and-downlink" />
</path>
@@ -1600,6 +1620,10 @@
<path name="incall-rec-uplink-and-downlink-compress" />
</path>
+ <path name="incall-rec-uplink-and-downlink-compress headset-mic">
+ <path name="incall-rec-uplink-and-downlink-compress" />
+ </path>
+
<path name="incall-rec-uplink-and-downlink-compress bt-sco-wb">
<path name="incall-rec-uplink-and-downlink-compress" />
</path>
diff --git a/configs/msmnile/msmnile.mk b/configs/msmnile/msmnile.mk
index a58f89d..004383a 100644
--- a/configs/msmnile/msmnile.mk
+++ b/configs/msmnile/msmnile.mk
@@ -42,7 +42,7 @@
AUDIO_FEATURE_ENABLED_AUDIOSPHERE := true
AUDIO_FEATURE_ENABLED_USB_TUNNEL := true
AUDIO_FEATURE_ENABLED_A2DP_OFFLOAD := true
-AUDIO_FEATURE_ENABLED_3D_AUDIO := false
+AUDIO_FEATURE_ENABLED_3D_AUDIO := true
AUDIO_FEATURE_ENABLED_AHAL_EXT := true
DOLBY_ENABLE := false
endif
@@ -101,6 +101,7 @@
vendor/qcom/opensource/audio-hal/primary-hal/configs/msmnile/mixer_paths_pahu.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_pahu.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/msmnile/sound_trigger_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_mixer_paths.xml \
vendor/qcom/opensource/audio-hal/primary-hal/configs/msmnile/audio_configs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_configs.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/msmnile/audio_configs_stock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_configs_stock.xml \
frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml
#XML Audio configuration files
diff --git a/configs/sdm660/audio_configs.xml b/configs/sdm660/audio_configs.xml
index 2d17504..853f7e7 100644
--- a/configs/sdm660/audio_configs.xml
+++ b/configs/sdm660/audio_configs.xml
@@ -98,7 +98,7 @@
<flag name="spkr_prot_enabled" value="true" />
<flag name="ssrec_enabled" value="true" />
<flag name="usb_offload_burst_mode" value="false" />
- <flag name="usb_offload_enabled" value="false" />
+ <flag name="usb_offload_enabled" value="true" />
<flag name="usb_offload_sidetone_vol_enabled" value="false" />
<flag name="use_deep_buffer_as_primary_output" value="false" />
<flag name="vbat_enabled" value="true" />
diff --git a/configs/sdm660/audio_policy_configuration.xml b/configs/sdm660/audio_policy_configuration.xml
index eadda75..b1cf4b9 100644
--- a/configs/sdm660/audio_policy_configuration.xml
+++ b/configs/sdm660/audio_policy_configuration.xml
@@ -241,17 +241,17 @@
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
diff --git a/configs/sdm710/audio_configs.xml b/configs/sdm710/audio_configs.xml
index 678d8f1..0410f4b 100644
--- a/configs/sdm710/audio_configs.xml
+++ b/configs/sdm710/audio_configs.xml
@@ -98,7 +98,7 @@
<flag name="spkr_prot_enabled" value="true" />
<flag name="ssrec_enabled" value="true" />
<flag name="usb_offload_burst_mode" value="false" />
- <flag name="usb_offload_enabled" value="false" />
+ <flag name="usb_offload_enabled" value="true" />
<flag name="usb_offload_sidetone_vol_enabled" value="false" />
<flag name="use_deep_buffer_as_primary_output" value="false" />
<flag name="vbat_enabled" value="true" />
diff --git a/configs/sdm710/audio_policy_configuration.xml b/configs/sdm710/audio_policy_configuration.xml
index 3a4fa84..a7f4869 100644
--- a/configs/sdm710/audio_policy_configuration.xml
+++ b/configs/sdm710/audio_policy_configuration.xml
@@ -246,17 +246,17 @@
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
diff --git a/configs/sdm845/audio_configs.xml b/configs/sdm845/audio_configs.xml
index 3444da1..95b7d97 100644
--- a/configs/sdm845/audio_configs.xml
+++ b/configs/sdm845/audio_configs.xml
@@ -98,7 +98,7 @@
<flag name="spkr_prot_enabled" value="true" />
<flag name="ssrec_enabled" value="true" />
<flag name="usb_offload_burst_mode" value="false" />
- <flag name="usb_offload_enabled" value="false" />
+ <flag name="usb_offload_enabled" value="true" />
<flag name="usb_offload_sidetone_vol_enabled" value="false" />
<flag name="use_deep_buffer_as_primary_output" value="false" />
<flag name="vbat_enabled" value="true" />
diff --git a/configs/sdm845/audio_policy_configuration.xml b/configs/sdm845/audio_policy_configuration.xml
index 8318d1e..095819a 100644
--- a/configs/sdm845/audio_policy_configuration.xml
+++ b/configs/sdm845/audio_policy_configuration.xml
@@ -246,17 +246,17 @@
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink"
- encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC">
+ encodedFormats="AUDIO_FORMAT_SBC AUDIO_FORMAT_AAC AUDIO_FORMAT_APTX AUDIO_FORMAT_APTX_HD AUDIO_FORMAT_LDAC AUDIO_FORMAT_CELT AUDIO_FORMAT_APTX_ADAPTIVE">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
diff --git a/hal/acdb.c b/hal/acdb.c
index 8f3ea83..7394906 100644
--- a/hal/acdb.c
+++ b/hal/acdb.c
@@ -23,7 +23,7 @@
#include <stdlib.h>
#include <dlfcn.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <cutils/list.h>
#include <time.h>
#include "acdb.h"
diff --git a/hal/ahal_config_helper.cpp b/hal/ahal_config_helper.cpp
index 9bdd785..753d8a8 100644
--- a/hal/ahal_config_helper.cpp
+++ b/hal/ahal_config_helper.cpp
@@ -62,8 +62,8 @@
dlsym(handle, "getAudioHalExtConfigs");
if (!getAHalConfigs) {
ALOGE("%s: Could not find symbol: %s", __FUNCTION__, dlerror());
- handle = nullptr;
dlclose(handle);
+ handle = nullptr;
}
}
diff --git a/hal/audio_extn/Android.mk b/hal/audio_extn/Android.mk
index 520b6f6..59b18a2 100755
--- a/hal/audio_extn/Android.mk
+++ b/hal/audio_extn/Android.mk
@@ -560,7 +560,7 @@
external/tinycompress/include \
external/expat/lib \
system/media/audio_utils/include \
- vendor/qcom/proprietary/mm-audio/audio-parsers/inc \
+ $(TARGET_OUT_HEADERS)/mm-audio/audio-parsers \
$(call include-path-for, audio-route) \
LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
@@ -631,7 +631,6 @@
external/tinycompress/include \
external/expat/lib \
system/media/audio_utils/include \
- vendor/qcom/proprietary/mm-audio/audio-parsers/inc \
$(call include-path-for, audio-route) \
LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
diff --git a/hal/audio_extn/adsp_hdlr.c b/hal/audio_extn/adsp_hdlr.c
index 3b073c3..31a6b16 100644
--- a/hal/audio_extn/adsp_hdlr.c
+++ b/hal/audio_extn/adsp_hdlr.c
@@ -42,7 +42,7 @@
#include <stdlib.h>
#include <sys/resource.h>
#include <sys/prctl.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <cutils/sched_policy.h>
#include <system/thread_defs.h>
#include <sound/asound.h>
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index 8edf1f3..431c248 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -111,7 +111,7 @@
<target name>-<sound card name>-<form factor>-snd-card
parse target name, sound card name and form factor
*/
- char *snd_card_name = strdup(in_snd_card_name);
+ char *snd_card_name = NULL;
char *tmp = NULL;
char *device = NULL;
char *snd_card = NULL;
@@ -122,6 +122,7 @@
ALOGE("%s: snd_card_name passed is NULL", __func__);
goto on_error;
}
+ snd_card_name = strdup(in_snd_card_name);
device = strtok_r(snd_card_name, "-", &tmp);
if (device == NULL) {
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index d1ec7c6..51e3ba2 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -763,6 +763,7 @@
int audio_extn_utils_get_bit_width_from_string(const char *);
int audio_extn_utils_get_sample_rate_from_string(const char *);
int audio_extn_utils_get_channels_from_string(const char *);
+void audio_extn_utils_release_snd_device(snd_device_t snd_device);
#ifdef DS2_DOLBY_DAP_ENABLED
#define LIB_DS2_DAP_HAL "vendor/lib/libhwdaphal.so"
diff --git a/hal/audio_extn/auto_hal.c b/hal/audio_extn/auto_hal.c
index f57e885..c70dc17 100644
--- a/hal/audio_extn/auto_hal.c
+++ b/hal/audio_extn/auto_hal.c
@@ -31,7 +31,7 @@
#include <errno.h>
#include <pthread.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <math.h>
#include <audio_hw.h>
#include "audio_extn.h"
diff --git a/hal/audio_extn/bt_hal.c b/hal/audio_extn/bt_hal.c
index 6441bef..2020cba 100644
--- a/hal/audio_extn/bt_hal.c
+++ b/hal/audio_extn/bt_hal.c
@@ -31,7 +31,7 @@
/*#define LOG_NDEBUG 0*/
#include <inttypes.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <audio_hw.h>
#include <audio_extn.h>
#include <platform_api.h>
diff --git a/hal/audio_extn/compress_capture.c b/hal/audio_extn/compress_capture.c
index f0aeec2..c1b77b9 100644
--- a/hal/audio_extn/compress_capture.c
+++ b/hal/audio_extn/compress_capture.c
@@ -26,7 +26,7 @@
#include <stdlib.h>
#include <dlfcn.h>
#include <cutils/str_parms.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include "audio_hw.h"
//#include "platform.h"
diff --git a/hal/audio_extn/compress_in.c b/hal/audio_extn/compress_in.c
index 56905d6..6cf6b81 100644
--- a/hal/audio_extn/compress_in.c
+++ b/hal/audio_extn/compress_in.c
@@ -31,10 +31,9 @@
/*#define LOG_NDEBUG 0*/
#define LOG_NDDEBUG 0
-#include <cutils/log.h>
#include <cutils/properties.h>
#include <cutils/str_parms.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <pthread.h>
#include "audio_hw.h"
diff --git a/hal/audio_extn/dev_arbi.c b/hal/audio_extn/dev_arbi.c
index 9c5382a..d83d6bd 100644
--- a/hal/audio_extn/dev_arbi.c
+++ b/hal/audio_extn/dev_arbi.c
@@ -32,7 +32,7 @@
#define LOG_NDDEBUG 0
#include <errno.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <fcntl.h>
#include "audio_hw.h"
#include "platform.h"
diff --git a/hal/audio_extn/dolby.c b/hal/audio_extn/dolby.c
index ffd256f..906c234 100644
--- a/hal/audio_extn/dolby.c
+++ b/hal/audio_extn/dolby.c
@@ -22,10 +22,10 @@
//#define LOG_NDDEBUG 0
#include <errno.h>
#include <cutils/properties.h>
+#include <cutils/str_parms.h>
#include <stdlib.h>
#include <dlfcn.h>
-#include <cutils/str_parms.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include "audio_hw.h"
#include "platform.h"
diff --git a/hal/audio_extn/dts_eagle.c b/hal/audio_extn/dts_eagle.c
index 7ae760b..3771a9d 100644
--- a/hal/audio_extn/dts_eagle.c
+++ b/hal/audio_extn/dts_eagle.c
@@ -21,7 +21,7 @@
#include <math.h>
#include <stdlib.h>
#include <fcntl.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <cutils/properties.h>
#include <cutils/str_parms.h>
#include <sys/ioctl.h>
diff --git a/hal/audio_extn/edid.c b/hal/audio_extn/edid.c
index 175842f..ffb0d64 100644
--- a/hal/audio_extn/edid.c
+++ b/hal/audio_extn/edid.c
@@ -23,10 +23,10 @@
#include <errno.h>
#include <cutils/properties.h>
+#include <cutils/str_parms.h>
#include <stdlib.h>
#include <dlfcn.h>
-#include <cutils/str_parms.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include "audio_hw.h"
#include "platform.h"
diff --git a/hal/audio_extn/ext_hw_plugin.c b/hal/audio_extn/ext_hw_plugin.c
index f6c4799..45ba1d7 100644
--- a/hal/audio_extn/ext_hw_plugin.c
+++ b/hal/audio_extn/ext_hw_plugin.c
@@ -33,7 +33,7 @@
#include <errno.h>
#include <pthread.h>
#include <dlfcn.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <audio_hw.h>
#include "audio_extn.h"
#include "platform_api.h"
diff --git a/hal/audio_extn/ffv.c b/hal/audio_extn/ffv.c
index a5b15cc..b97eedc 100644
--- a/hal/audio_extn/ffv.c
+++ b/hal/audio_extn/ffv.c
@@ -39,10 +39,10 @@
#include <errno.h>
#include <cutils/properties.h>
+#include <cutils/str_parms.h>
#include <stdlib.h>
#include <dlfcn.h>
-#include <cutils/str_parms.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <pthread.h>
#include <sys/resource.h>
#include <unistd.h>
diff --git a/hal/audio_extn/fm.c b/hal/audio_extn/fm.c
index f4b9d8f..b4e9ff2 100644
--- a/hal/audio_extn/fm.c
+++ b/hal/audio_extn/fm.c
@@ -23,7 +23,7 @@
#include <errno.h>
#include <math.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <unistd.h>
#include "audio_hw.h"
diff --git a/hal/audio_extn/gef.c b/hal/audio_extn/gef.c
index cfed6b3..ca1a16b 100644
--- a/hal/audio_extn/gef.c
+++ b/hal/audio_extn/gef.c
@@ -33,7 +33,7 @@
#include <errno.h>
#include <math.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <fcntl.h>
#include <dirent.h>
#include "audio_hw.h"
diff --git a/hal/audio_extn/hw_loopback.c b/hal/audio_extn/hw_loopback.c
index 3d6525a..5366066 100644
--- a/hal/audio_extn/hw_loopback.c
+++ b/hal/audio_extn/hw_loopback.c
@@ -51,16 +51,16 @@
#include <dlfcn.h>
#include <sys/resource.h>
#include <sys/prctl.h>
+#include <cutils/atomic.h>
#include <cutils/properties.h>
#include <cutils/str_parms.h>
-#include <cutils/log.h>
-#include <cutils/atomic.h>
+#include <cutils/sched_policy.h>
+#include <log/log.h>
#include "audio_utils/primitives.h"
#include "audio_hw.h"
#include "platform_api.h"
#include <platform.h>
#include <system/thread_defs.h>
-#include <cutils/sched_policy.h>
#include "audio_extn.h"
#include <sound/compress_params.h>
#include <sound/compress_offload.h>
diff --git a/hal/audio_extn/ip_hdlr_intf.c b/hal/audio_extn/ip_hdlr_intf.c
index 649c99f..3d5e1fe 100755
--- a/hal/audio_extn/ip_hdlr_intf.c
+++ b/hal/audio_extn/ip_hdlr_intf.c
@@ -46,7 +46,7 @@
#include <errno.h>
#include <stdlib.h>
#include <dlfcn.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <sound/asound.h>
#include <cutils/properties.h>
diff --git a/hal/audio_extn/keep_alive.c b/hal/audio_extn/keep_alive.c
index 20214aa..79f2bb0 100644
--- a/hal/audio_extn/keep_alive.c
+++ b/hal/audio_extn/keep_alive.c
@@ -32,7 +32,7 @@
#include <cutils/properties.h>
#include <stdlib.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include "audio_hw.h"
#include "audio_extn.h"
#include "platform_api.h"
diff --git a/hal/audio_extn/listen.c b/hal/audio_extn/listen.c
index b98a429..5c3bbce 100644
--- a/hal/audio_extn/listen.c
+++ b/hal/audio_extn/listen.c
@@ -32,7 +32,7 @@
#include <stdbool.h>
#include <stdlib.h>
#include <dlfcn.h>
-#include <cutils/log.h>
+#include <log/log.h>
#ifdef AUDIO_LISTEN_ENABLED
#include <listen_types.h>
#endif
diff --git a/hal/audio_extn/passthru.c b/hal/audio_extn/passthru.c
index 14f8b72..a59717c 100644
--- a/hal/audio_extn/passthru.c
+++ b/hal/audio_extn/passthru.c
@@ -31,15 +31,15 @@
/*#define LOG_NDEBUG 0*/
#include <stdlib.h>
#include <cutils/atomic.h>
+#include <cutils/properties.h>
#include <cutils/str_parms.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <unistd.h>
#include <pthread.h>
#include "audio_hw.h"
#include "audio_extn.h"
#include "platform_api.h"
#include <platform.h>
-#include <cutils/properties.h>
#include "sound/compress_params.h"
diff --git a/hal/audio_extn/pm.c b/hal/audio_extn/pm.c
index c6ef242..5b3aa4d 100644
--- a/hal/audio_extn/pm.c
+++ b/hal/audio_extn/pm.c
@@ -31,7 +31,7 @@
/*#define LOG_NDEBUG 0*/
#include "pm.h"
-#include <cutils/log.h>
+#include <log/log.h>
#include <cutils/str_parms.h>
#ifdef DYNAMIC_LOG_ENABLED
diff --git a/hal/audio_extn/pm.h b/hal/audio_extn/pm.h
index daa376e..f78c3aa 100644
--- a/hal/audio_extn/pm.h
+++ b/hal/audio_extn/pm.h
@@ -39,7 +39,7 @@
#include "audio_hw.h"
#include <platform.h>
#include <cutils/properties.h>
-#include <cutils/log.h>
+#include <log/log.h>
/* Client name to be registered with PM */
diff --git a/hal/audio_extn/sndmonitor.c b/hal/audio_extn/sndmonitor.c
index 2bcb175..11578fc 100644
--- a/hal/audio_extn/sndmonitor.c
+++ b/hal/audio_extn/sndmonitor.c
@@ -466,6 +466,7 @@
char val[32] = {0};
bool is_cpe = ((s->card >= CPE_MAGIC_NUM) && (s->card < SLPI_MAGIC_NUM));
bool is_slpi = (s->card == SLPI_MAGIC_NUM);
+ char *key = NULL;
/*
* cpe actual card num is (card - CPE_MAGIC_NUM), so subtract accordingly.
* SLPI actual fd num is (card - SLPI_MAGIC_NUM), so subtract accordingly.
@@ -473,9 +474,10 @@
snprintf(val, sizeof(val), "%d,%s",
s->card - (is_cpe ? CPE_MAGIC_NUM : (is_slpi ? SLPI_MAGIC_NUM : 0)),
status == CARD_STATUS_ONLINE ? "ONLINE" : "OFFLINE");
- if (str_parms_add_str(params,
- is_cpe ? "CPE_STATUS" : (is_slpi ? "SLPI_STATUS" : "SND_CARD_STATUS"),
- val) < 0)
+ key = (is_cpe ? "CPE_STATUS" :
+ (is_slpi ? "SLPI_STATUS" :
+ "SND_CARD_STATUS"));
+ if (str_parms_add_str(params, key, val) < 0)
return -1;
int ret = notify(params);
diff --git a/hal/audio_extn/spkr_protection.c b/hal/audio_extn/spkr_protection.c
index 9c30bbe..8c6ff06 100644
--- a/hal/audio_extn/spkr_protection.c
+++ b/hal/audio_extn/spkr_protection.c
@@ -1824,6 +1824,30 @@
}
}
+static bool fbsp_parms_allowed(struct str_parms *parms)
+{
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_FBSP_TRIGGER_SPKR_CAL))
+ return true;
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_FBSP_APPLY_SPKR_CAL))
+ return true;
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_FBSP_GET_SPKR_CAL))
+ return true;
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_FBSP_CFG_WAIT_TIME))
+ return true;
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_FBSP_CFG_FTM_TIME))
+ return true;
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_FBSP_GET_FTM_PARAM))
+ return true;
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_FBSP_TRIGGER_V_VALI))
+ return true;
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_FBSP_V_VALI_WAIT_TIME))
+ return true;
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_FBSP_V_VALI_VALI_TIME))
+ return true;
+
+ return false;
+}
+
int fbsp_set_parameters(struct str_parms *parms)
{
int ret= 0 , err;
@@ -1841,9 +1865,14 @@
}
ALOGV_IF(kv_pairs != NULL, "%s: enter: %s", __func__, kv_pairs);
+ if (!fbsp_parms_allowed(parms)) {
+ ret = -EINVAL;
+ goto done;
+ }
+
len = strlen(kv_pairs);
value = (char*)calloc(len, sizeof(char));
- if(value == NULL) {
+ if (value == NULL) {
ret = -ENOMEM;
ALOGE("[%s] failed to allocate memory",__func__);
goto done;
diff --git a/hal/audio_extn/usb.c b/hal/audio_extn/usb.c
index 5c2ec9c..9981ef0 100644
--- a/hal/audio_extn/usb.c
+++ b/hal/audio_extn/usb.c
@@ -1168,14 +1168,6 @@
usb_card_info->usb_card = card;
usb_card_info->usb_device_type = device;
usb_get_sidetone_mixer(usb_card_info);
- struct usb_card_config *usb_card_info_temp = NULL;
- usb_card_info_temp = calloc(1, sizeof(struct usb_card_config));
- if (usb_card_info_temp != NULL) {
- list_init(&usb_card_info_temp->usb_device_conf_list);
- if (!usb_get_capability(USB_CAPTURE, usb_card_info_temp, card))
- usbmod->is_capture_supported = true;
- free(usb_card_info_temp);
- }
list_add_tail(&usbmod->usb_card_conf_list, &usb_card_info->list);
goto exit;
}
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 6a74a4c..b06276e 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -2274,7 +2274,7 @@
kConfigLocationList[i],
file_name);
if (F_OK == access(full_config_path, 0)) {
- strcpy(file_name, full_config_path);
+ strlcpy(file_name, full_config_path, MIXER_PATH_MAX_LENGTH);
return true;
}
}
@@ -2711,6 +2711,15 @@
return -EINVAL;
}
+void audio_extn_utils_release_snd_device(snd_device_t snd_device)
+{
+ audio_extn_dev_arbi_release(snd_device);
+ audio_extn_sound_trigger_update_device_status(snd_device,
+ ST_EVENT_SND_DEVICE_FREE);
+ audio_extn_listen_update_device_status(snd_device,
+ LISTEN_EVENT_SND_DEVICE_FREE);
+}
+
int audio_extn_utils_get_license_params
(
const struct audio_device *adev,
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index ab99b47..7a9022e 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1126,19 +1126,23 @@
return -EINVAL;
}
- adev->snd_dev_ref_cnt[snd_device]++;
-
- if(platform_get_snd_device_name_extn(adev->platform, snd_device, device_name) < 0 ) {
+ if (platform_get_snd_device_name_extn(adev->platform, snd_device, device_name) < 0) {
ALOGE("%s: Invalid sound device returned", __func__);
return -EINVAL;
}
- if (adev->snd_dev_ref_cnt[snd_device] > 1) {
+
+ adev->snd_dev_ref_cnt[snd_device]++;
+
+ if ((adev->snd_dev_ref_cnt[snd_device] > 1) &&
+ (platform_split_snd_device(adev->platform,
+ snd_device,
+ &num_devices,
+ new_snd_devices) != 0)) {
ALOGV("%s: snd_device(%d: %s) is already active",
__func__, snd_device, device_name);
return 0;
}
-
if (audio_extn_spkr_prot_is_enabled())
audio_extn_spkr_prot_calib_cancel(adev);
@@ -1146,15 +1150,14 @@
if (platform_can_enable_spkr_prot_on_device(snd_device) &&
audio_extn_spkr_prot_is_enabled()) {
- if (platform_get_spkr_prot_acdb_id(snd_device) < 0) {
- adev->snd_dev_ref_cnt[snd_device]--;
- return -EINVAL;
- }
- audio_extn_dev_arbi_acquire(snd_device);
- if (audio_extn_spkr_prot_start_processing(snd_device)) {
+ if (platform_get_spkr_prot_acdb_id(snd_device) < 0) {
+ goto err;
+ }
+ audio_extn_dev_arbi_acquire(snd_device);
+ if (audio_extn_spkr_prot_start_processing(snd_device)) {
ALOGE("%s: spkr_start_processing failed", __func__);
audio_extn_dev_arbi_release(snd_device);
- return -EINVAL;
+ goto err;
}
} else if (platform_split_snd_device(adev->platform,
snd_device,
@@ -1168,17 +1171,17 @@
ALOGD("%s: snd_device(%d: %s)", __func__, snd_device, device_name);
- if ((SND_DEVICE_OUT_BT_A2DP == snd_device) &&
- (audio_extn_a2dp_start_playback() < 0)) {
- ALOGE(" fail to configure A2dp Source control path ");
- return -EINVAL;
- }
+ if ((SND_DEVICE_OUT_BT_A2DP == snd_device) &&
+ (audio_extn_a2dp_start_playback() < 0)) {
+ ALOGE(" fail to configure A2dp Source control path ");
+ goto err;
+ }
- if ((SND_DEVICE_IN_BT_A2DP == snd_device) &&
- (audio_extn_a2dp_start_capture() < 0)) {
- ALOGE(" fail to configure A2dp Sink control path ");
- return -EINVAL;
- }
+ if ((SND_DEVICE_IN_BT_A2DP == snd_device) &&
+ (audio_extn_a2dp_start_capture() < 0)) {
+ ALOGE(" fail to configure A2dp Sink control path ");
+ goto err;
+ }
/* due to the possibility of calibration overwrite between listen
and audio, notify listen hal before audio calibration is sent */
@@ -1187,12 +1190,11 @@
audio_extn_listen_update_device_status(snd_device,
LISTEN_EVENT_SND_DEVICE_BUSY);
if (platform_get_snd_device_acdb_id(snd_device) < 0) {
- adev->snd_dev_ref_cnt[snd_device]--;
audio_extn_sound_trigger_update_device_status(snd_device,
ST_EVENT_SND_DEVICE_FREE);
audio_extn_listen_update_device_status(snd_device,
LISTEN_EVENT_SND_DEVICE_FREE);
- return -EINVAL;
+ goto err;
}
audio_extn_dev_arbi_acquire(snd_device);
audio_route_apply_and_update_path(adev->audio_route, device_name);
@@ -1214,6 +1216,9 @@
}
}
return 0;
+err:
+ adev->snd_dev_ref_cnt[snd_device]--;
+ return -EINVAL;;
}
int disable_snd_device(struct audio_device *adev,
@@ -1228,6 +1233,12 @@
ALOGE("%s: Invalid sound device %d", __func__, snd_device);
return -EINVAL;
}
+
+ if (platform_get_snd_device_name_extn(adev->platform, snd_device, device_name) < 0) {
+ ALOGE("%s: Invalid sound device returned", __func__);
+ return -EINVAL;
+ }
+
if (adev->snd_dev_ref_cnt[snd_device] <= 0) {
ALOGE("%s: device ref cnt is already 0", __func__);
return -EINVAL;
@@ -1235,10 +1246,6 @@
adev->snd_dev_ref_cnt[snd_device]--;
- if(platform_get_snd_device_name_extn(adev->platform, snd_device, device_name) < 0) {
- ALOGE("%s: Invalid sound device returned", __func__);
- return -EINVAL;
- }
if (adev->snd_dev_ref_cnt[snd_device] == 0) {
ALOGD("%s: snd_device(%d: %s)", __func__, snd_device, device_name);
@@ -1264,38 +1271,42 @@
audio_route_reset_and_update_path(adev->audio_route, device_name);
}
- if (SND_DEVICE_OUT_BT_A2DP == snd_device)
+ if (snd_device == SND_DEVICE_OUT_BT_A2DP)
audio_extn_a2dp_stop_playback();
-
- if (SND_DEVICE_IN_BT_A2DP == snd_device)
+ else if (snd_device == SND_DEVICE_IN_BT_A2DP)
audio_extn_a2dp_stop_capture();
-
- if (snd_device == SND_DEVICE_OUT_HDMI || snd_device == SND_DEVICE_OUT_DISPLAY_PORT)
+ else if ((snd_device == SND_DEVICE_OUT_HDMI) ||
+ (snd_device == SND_DEVICE_OUT_DISPLAY_PORT))
adev->is_channel_status_set = false;
- else if (SND_DEVICE_OUT_HEADPHONES == snd_device &&
+ else if ((snd_device == SND_DEVICE_OUT_HEADPHONES) &&
adev->native_playback_enabled) {
ALOGD("%s: %d: napb: disabling native mode in hardware",
__func__, __LINE__);
audio_route_reset_and_update_path(adev->audio_route,
"true-native-mode");
adev->native_playback_enabled = false;
- } else if (SND_DEVICE_OUT_HEADPHONES == snd_device &&
+ } else if ((snd_device == SND_DEVICE_OUT_HEADPHONES) &&
adev->asrc_mode_enabled) {
ALOGD("%s: %d: disabling asrc mode in hardware", __func__, __LINE__);
disable_asrc_mode(adev);
audio_route_apply_and_update_path(adev->audio_route, "hph-lowpower-mode");
- }
- if (((snd_device == SND_DEVICE_IN_HANDSET_6MIC) ||
+ } else if (((snd_device == SND_DEVICE_IN_HANDSET_6MIC) ||
(snd_device == SND_DEVICE_IN_HANDSET_QMIC)) &&
(audio_extn_ffv_get_stream() == adev->active_input)) {
ALOGD("%s: deinit ec ref loopback", __func__);
audio_extn_ffv_deinit_ec_ref_loopback(adev, snd_device);
}
- audio_extn_dev_arbi_release(snd_device);
- audio_extn_sound_trigger_update_device_status(snd_device,
- ST_EVENT_SND_DEVICE_FREE);
- audio_extn_listen_update_device_status(snd_device,
- LISTEN_EVENT_SND_DEVICE_FREE);
+
+ audio_extn_utils_release_snd_device(snd_device);
+ } else {
+ if (platform_split_snd_device(adev->platform,
+ snd_device,
+ &num_devices,
+ new_snd_devices) == 0) {
+ for (i = 0; i < num_devices; i++) {
+ adev->snd_dev_ref_cnt[new_snd_devices[i]]--;
+ }
+ }
}
return 0;
@@ -1438,7 +1449,8 @@
bool switch_device[AUDIO_USECASE_MAX];
snd_device_t uc_derive_snd_device;
snd_device_t derive_snd_device[AUDIO_USECASE_MAX];
- int i, num_uc_to_switch = 0;
+ snd_device_t split_snd_devices[SND_DEVICE_OUT_END];
+ int i, num_uc_to_switch = 0, num_devices = 0;
int status = 0;
bool force_restart_session = false;
/*
@@ -1520,14 +1532,42 @@
list_for_each(node, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
if (switch_device[usecase->id]) {
- disable_snd_device(adev, usecase->out_snd_device);
+ /* Check if output sound device to be switched can be split and if any
+ of the split devices match with derived sound device */
+ if (platform_split_snd_device(adev->platform, usecase->out_snd_device,
+ &num_devices, split_snd_devices) == 0) {
+ adev->snd_dev_ref_cnt[usecase->out_snd_device]--;
+ for (i = 0; i < num_devices; i++) {
+ /* Disable devices that do not match with derived sound device */
+ if (split_snd_devices[i] != derive_snd_device[usecase->id])
+ disable_snd_device(adev, split_snd_devices[i]);
+ }
+ } else {
+ disable_snd_device(adev, usecase->out_snd_device);
+ }
}
}
list_for_each(node, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
if (switch_device[usecase->id]) {
- enable_snd_device(adev, derive_snd_device[usecase->id]);
+ if (platform_split_snd_device(adev->platform, usecase->out_snd_device,
+ &num_devices, split_snd_devices) == 0) {
+ /* Enable derived sound device only if it does not match with
+ one of the split sound devices. This is because the matching
+ sound device was not disabled */
+ bool should_enable = true;
+ for (i = 0; i < num_devices; i++) {
+ if (derive_snd_device[usecase->id] == split_snd_devices[i]) {
+ should_enable = false;
+ break;
+ }
+ }
+ if (should_enable)
+ enable_snd_device(adev, derive_snd_device[usecase->id]);
+ } else {
+ enable_snd_device(adev, derive_snd_device[usecase->id]);
+ }
}
}
@@ -7751,6 +7791,7 @@
struct listnode *node;
struct audio_usecase *usecase = NULL;
int ret = 0;
+
pthread_mutex_lock(&adev->lock);
if (adev->mode != mode) {
ALOGD("%s: mode %d\n", __func__, mode);
@@ -7777,6 +7818,11 @@
voice_stop_call(adev);
platform_set_gsm_mode(adev->platform, false);
adev->current_call_output = NULL;
+ // restore device for other active usecases after stop call
+ list_for_each(node, &adev->usecase_list) {
+ usecase = node_to_item(node, struct audio_usecase, list);
+ select_devices(adev, usecase->id);
+ }
}
}
pthread_mutex_unlock(&adev->lock);
@@ -8332,13 +8378,13 @@
else
audio_extn_sound_trigger_update_ec_ref_status(false);
- error_log_destroy(in->error_log);
- in->error_log = NULL;
-
if (in == NULL) {
ALOGE("%s: audio_stream_in ptr is NULL", __func__);
return;
}
+ error_log_destroy(in->error_log);
+ in->error_log = NULL;
+
if (in->usecase == USECASE_COMPRESS_VOIP_CALL) {
pthread_mutex_lock(&adev->lock);
diff --git a/hal/audio_hw_extn_api.c b/hal/audio_hw_extn_api.c
index 44591c9..af73375 100644
--- a/hal/audio_hw_extn_api.c
+++ b/hal/audio_hw_extn_api.c
@@ -33,7 +33,7 @@
#include <inttypes.h>
#include <errno.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <hardware/audio.h>
#include "sound/compress_params.h"
diff --git a/hal/msm8916/hw_info.c b/hal/msm8916/hw_info.c
index 40e39a2..eb9a483 100644
--- a/hal/msm8916/hw_info.c
+++ b/hal/msm8916/hw_info.c
@@ -33,7 +33,7 @@
#include <stdlib.h>
#include <dlfcn.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <cutils/str_parms.h>
#include "audio_hw.h"
#include "platform.h"
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index a3e09ed..45fadf5 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -25,7 +25,7 @@
#include <dlfcn.h>
#include <fcntl.h>
#include <sys/ioctl.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <cutils/properties.h>
#include <cutils/str_parms.h>
#include <audio_hw.h>
@@ -3784,6 +3784,7 @@
if ((out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER ||
out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2 ||
+ out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_STEREO ||
out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_VBAT ||
out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT) &&
audio_extn_spkr_prot_is_enabled()) {
@@ -7760,6 +7761,7 @@
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2 ||
+ snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_STEREO ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_WSA ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_WSA) {
ret = true;
@@ -7842,6 +7844,7 @@
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2 ||
+ snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_STEREO ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_WSA ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_WSA) {
ret = true;
diff --git a/hal/msm8960/platform.c b/hal/msm8960/platform.c
index f7a7ebf..f21602d 100644
--- a/hal/msm8960/platform.c
+++ b/hal/msm8960/platform.c
@@ -23,7 +23,7 @@
#include <stdlib.h>
#include <dlfcn.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <cutils/properties.h>
#include <audio_hw.h>
#include <platform_api.h>
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index d7384c8..a428f9a 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1533,6 +1533,7 @@
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2 ||
+ snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_STEREO ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_WSA ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_WSA) {
ret = true;
@@ -3944,6 +3945,10 @@
}
device = (struct operator_specific_device *)calloc(1, sizeof(struct operator_specific_device));
+ if (device == NULL) {
+ ALOGE("%s: memory allocation failed", __func__);
+ return;
+ }
device->operator = strdup(operator);
device->mixer_path = strdup(mixer_path);
@@ -4530,6 +4535,7 @@
if ((out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER ||
out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2 ||
+ out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_STEREO ||
out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_VBAT ||
out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT) &&
audio_extn_spkr_prot_is_enabled()) {
@@ -6758,12 +6764,18 @@
value, len);
if (err >= 0) {
struct operator_info *info;
- char *str = value;
+ char *str = value, *context = NULL;
char *name;
str_parms_del(parms, PLATFORM_CONFIG_KEY_OPERATOR_INFO);
info = (struct operator_info *)calloc(1, sizeof(struct operator_info));
- name = strtok(str, ";");
+ name = strtok_r(str, ";", &context);
+ if ((info == NULL) || (name == NULL)) {
+ ret = -EINVAL;
+ ALOGE("%s invalid info or name", __func__);
+ goto done;
+ }
+
info->name = strdup(name);
info->mccmnc = strdup(str + strlen(name) + 1);
@@ -9275,6 +9287,7 @@
snd_device == SND_DEVICE_OUT_SPEAKER_VBAT ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_VBAT ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT ||
+ snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_STEREO ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2 ||
snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_WSA ||
diff --git a/hal/voice.c b/hal/voice.c
index 4e5dfeb..847ce92 100644
--- a/hal/voice.c
+++ b/hal/voice.c
@@ -409,8 +409,8 @@
session_id = voice_get_active_session_id(adev);
ret = platform_set_incall_recording_session_id(adev->platform,
session_id, rec_mode);
- ret = platform_set_incall_recording_session_channels(adev->platform,
- in->config.channels);
+ platform_set_incall_recording_session_channels(adev->platform,
+ in->config.channels);
ALOGV("%s: Update usecase to %d",__func__, in->usecase);
} else {
/*
diff --git a/hal/voice_extn/compress_voip.c b/hal/voice_extn/compress_voip.c
index 003a3ed..e4bc210 100644
--- a/hal/voice_extn/compress_voip.c
+++ b/hal/voice_extn/compress_voip.c
@@ -27,7 +27,7 @@
#include <sys/time.h>
#include <stdlib.h>
#include <math.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <cutils/str_parms.h>
#include <cutils/properties.h>
@@ -816,4 +816,4 @@
ALOGV("%s: exit: status(%d)", __func__, ret);
return ret;
-}
\ No newline at end of file
+}
diff --git a/hal/voice_extn/voice_extn.c b/hal/voice_extn/voice_extn.c
index 1f45a64..f08c73c 100644
--- a/hal/voice_extn/voice_extn.c
+++ b/hal/voice_extn/voice_extn.c
@@ -664,8 +664,6 @@
}
if(voice_extn_compress_voip_enabled)
voice_extn_compress_voip_get_parameters(query, reply);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
str = str_parms_to_str(reply);
ALOGV_IF(str != NULL, "%s: exit: returns \"%s\"", __func__, str);
@@ -678,8 +676,6 @@
{
if(voice_extn_compress_voip_enabled)
voice_extn_compress_voip_out_get_parameters(out, query, reply);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
}
void voice_extn_in_get_parameters(struct stream_in *in,
@@ -688,9 +684,6 @@
{
if(voice_extn_compress_voip_enabled)
voice_extn_compress_voip_in_get_parameters(in, query, reply);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
-
}
@@ -717,8 +710,6 @@
int ret = -ENOSYS;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_set_parameters(adev, parms);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -727,8 +718,6 @@
{
if(voice_extn_compress_voip_enabled)
compress_voip_get_parameters(query, reply);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
}
@@ -738,8 +727,6 @@
{
if(voice_extn_compress_voip_enabled)
compress_voip_out_get_parameters(out, query, reply);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
}
void voice_extn_compress_voip_in_get_parameters(struct stream_in *in,
@@ -748,8 +735,6 @@
{
if(voice_extn_compress_voip_enabled)
compress_voip_in_get_parameters(in, query, reply);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
}
int voice_extn_compress_voip_out_get_buffer_size(struct stream_out *out)
@@ -757,8 +742,6 @@
int ret = -1;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_out_get_buffer_size(out);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -767,8 +750,6 @@
int ret = -1;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_in_get_buffer_size(in);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -778,8 +759,6 @@
int ret = -1;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_start_output_stream(out);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -789,8 +768,6 @@
int ret = -1;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_start_input_stream(in);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -799,8 +776,6 @@
int ret = -1;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_close_output_stream(stream);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -810,8 +785,6 @@
int ret = -1;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_close_input_stream(stream);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -820,8 +793,6 @@
int ret = -1;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_open_output_stream(out);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -831,8 +802,6 @@
int ret = -1;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_open_input_stream(in);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -841,8 +810,6 @@
int ret = -1;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_set_volume(adev, volume);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -851,8 +818,6 @@
int ret = -1;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_set_mic_mute(adev, state);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -861,8 +826,6 @@
bool ret = false;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_pcm_prop_check();
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -871,8 +834,6 @@
bool ret = false;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_is_active(adev);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -881,8 +842,6 @@
bool ret = false;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_is_format_supported(format);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -891,8 +850,6 @@
bool ret = false;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_is_config_supported(config);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
@@ -901,8 +858,6 @@
bool ret = false;
if(voice_extn_compress_voip_enabled)
ret = compress_voip_is_started(adev);
- else
- ALOGE("%s: COMPRESS_VOIP feature is not enabled", __func__);
return ret;
}
diff --git a/post_proc/asphere.c b/post_proc/asphere.c
index 65e8034..7b35a77 100644
--- a/post_proc/asphere.c
+++ b/post_proc/asphere.c
@@ -197,6 +197,18 @@
return asphere.init_status;
}
+static bool asphere_parms_allowed(struct str_parms *parms)
+{
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_ASPHERE_ENABLE))
+ return true;
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_ASPHERE_STRENGTH))
+ return true;
+ if (str_parms_has_key(parms, AUDIO_PARAMETER_KEY_ASPHERE_STATUS))
+ return true;
+
+ return false;
+}
+
void asphere_set_parameters(struct str_parms *parms)
{
int ret = 0;
@@ -205,6 +217,10 @@
char value[32] = {0};
bool set_enable = false, set_strength = false;
+ if (!asphere_parms_allowed(parms)) {
+ return;
+ }
+
if (asphere_init() != 1) {
ALOGW("%s: init check failed!!!", __func__);
return;
diff --git a/post_proc/hw_accelerator.c b/post_proc/hw_accelerator.c
index fae5807..583f001 100644
--- a/post_proc/hw_accelerator.c
+++ b/post_proc/hw_accelerator.c
@@ -32,7 +32,7 @@
/*#define LOG_NDEBUG 0*/
#include <cutils/list.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <fcntl.h>
#include <tinyalsa/asoundlib.h>
#include <sound/audio_effects.h>
diff --git a/post_proc/ma_listener.c b/post_proc/ma_listener.c
index 04a9047..9271dc7 100644
--- a/post_proc/ma_listener.c
+++ b/post_proc/ma_listener.c
@@ -23,7 +23,7 @@
#include <pthread.h>
#include <unistd.h>
#include <cutils/list.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <hardware/audio_effect.h>
#include <audio-base.h>
diff --git a/qahw_api/test/qap_wrapper_extn.c b/qahw_api/test/qap_wrapper_extn.c
index d311570..de954bf 100644
--- a/qahw_api/test/qap_wrapper_extn.c
+++ b/qahw_api/test/qap_wrapper_extn.c
@@ -27,8 +27,8 @@
#include <time.h>
#include <cutils/properties.h>
#include <cutils/list.h>
-#include <cutils/log.h>
#include <cutils/str_parms.h>
+#include <log/log.h>
#include <system/audio.h>
#include <qap_api.h>
#include <qti_audio.h>