Loading hal/audio_extn/Android.mk +68 −0 Original line number Diff line number Diff line Loading @@ -604,6 +604,74 @@ LOCAL_SANITIZE := integer_overflow endif include $(BUILD_SHARED_LIBRARY) #------------------------------------------- # Build ICC LIB #------------------------------------------- include $(CLEAR_VARS) LOCAL_MODULE := libicc LOCAL_VENDOR_MODULE := true PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM) ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),) # B-family platform uses msm8974 code base AUDIO_PLATFORM := msm8974 MULTIPLE_HW_VARIANTS_ENABLED := true endif ifeq ($(TARGET_BOARD_AUTO),true) LOCAL_CFLAGS += -DPLATFORM_AUTO endif LOCAL_SRC_FILES:= \ icc.c \ device_utils.c LOCAL_CFLAGS += \ -Wall \ -Werror \ -Wno-unused-function \ -Wno-unused-variable LOCAL_SHARED_LIBRARIES := \ libaudioroute \ libaudioutils \ libcutils \ libdl \ libexpat \ liblog \ libtinyalsa \ libtinycompress LOCAL_C_INCLUDES := \ $(PRIMARY_HAL_PATH) \ $(PRIMARY_HAL_PATH)/$(AUDIO_PLATFORM) \ external/tinyalsa/include \ external/tinycompress/include \ external/expat/lib \ system/media/audio_utils/include \ $(call include-path-for, audio-route) \ LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include/audio LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/techpack/audio/include LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr ifeq ($(strip $(AUDIO_FEATURE_ENABLED_DLKM)),true) LOCAL_HEADER_LIBRARIES += audio_kernel_headers LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/vendor/qcom/opensource/audio-kernel/include LOCAL_ADDITIONAL_DEPENDENCIES += $(BOARD_VENDOR_KERNEL_MODULES) endif LOCAL_HEADER_LIBRARIES += libhardware_headers LOCAL_HEADER_LIBRARIES += libsystem_headers ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),) LOCAL_SANITIZE := integer_overflow endif include $(BUILD_SHARED_LIBRARY) #------------------------------------------- # Build HDMI PASSTHROUGH #------------------------------------------- Loading hal/audio_extn/audio_extn.c +105 −0 Original line number Diff line number Diff line Loading @@ -4989,6 +4989,107 @@ int audio_extn_hfp_set_mic_mute2(struct audio_device *adev, bool state) } // END: HFP ======================================================================== // START: ICC ====================================================================== #ifdef __LP64__ #define ICC_LIB_PATH "/vendor/lib64/libicc.so" #else #define ICC_LIB_PATH "/vendor/lib/libicc.so" #endif static void *icc_lib_handle = NULL; typedef void (*icc_init_t)(icc_init_config_t); static icc_init_t icc_init; typedef bool (*icc_is_active_t)(struct audio_device *adev); static icc_is_active_t icc_is_active; typedef audio_usecase_t (*icc_get_usecase_t)(); static icc_get_usecase_t icc_get_usecase; typedef void (*icc_set_parameters_t)(struct audio_device *adev, struct str_parms *parms); static icc_set_parameters_t icc_set_parameters; int icc_feature_init(bool is_feature_enabled) { ALOGD("%s: Called with feature %s", __func__, is_feature_enabled ? "Enabled" : "NOT Enabled"); if (is_feature_enabled) { // dlopen lib icc_lib_handle = dlopen(ICC_LIB_PATH, RTLD_NOW); if (!icc_lib_handle) { ALOGE("%s: dlopen failed", __func__); goto feature_disabled; } if (!(icc_init = (icc_init_t)dlsym( icc_lib_handle, "icc_init")) || !(icc_is_active = (icc_is_active_t)dlsym( icc_lib_handle, "icc_is_active")) || !(icc_get_usecase = (icc_get_usecase_t)dlsym( icc_lib_handle, "icc_get_usecase")) || !(icc_set_parameters = (icc_set_parameters_t)dlsym( icc_lib_handle, "icc_set_parameters"))) { ALOGE("%s: dlsym failed", __func__); goto feature_disabled; } icc_init_config_t init_config; init_config.fp_platform_get_pcm_device_id = platform_get_pcm_device_id; init_config.fp_platform_set_echo_reference = platform_set_echo_reference; init_config.fp_select_devices = select_devices; init_config.fp_audio_extn_ext_hw_plugin_usecase_start = audio_extn_ext_hw_plugin_usecase_start; init_config.fp_audio_extn_ext_hw_plugin_usecase_stop = audio_extn_ext_hw_plugin_usecase_stop; init_config.fp_get_usecase_from_list = get_usecase_from_list; init_config.fp_disable_audio_route = disable_audio_route; init_config.fp_disable_snd_device = disable_snd_device; icc_init(init_config); ALOGD("%s:: ---- Feature ICC is Enabled ----", __func__); return 0; } feature_disabled: if (icc_lib_handle) { dlclose(icc_lib_handle); icc_lib_handle = NULL; } icc_init = NULL; icc_is_active = NULL; icc_get_usecase = NULL; icc_set_parameters = NULL; ALOGW(":: %s: ---- Feature ICC is disabled ----", __func__); return -ENOSYS; } bool audio_extn_icc_is_active(struct audio_device *adev) { return ((icc_is_active) ? icc_is_active(adev): false); } audio_usecase_t audio_extn_icc_get_usecase() { return ((icc_get_usecase) ? icc_get_usecase(): -1); } void audio_extn_icc_set_parameters(struct audio_device *adev, struct str_parms *parms) { ((icc_set_parameters) ? icc_set_parameters(adev, parms): NULL); } // END: ICC ======================================================================== // START: EXT_HW_PLUGIN =================================================================== #ifdef __LP64__ #define EXT_HW_PLUGIN_LIB_PATH "/vendor/lib64/libexthwplugin.so" Loading Loading @@ -6313,6 +6414,9 @@ void audio_extn_feature_init() hfp_feature_init( property_get_bool("vendor.audio.feature.hfp.enable", false)); icc_feature_init( property_get_bool("vendor.audio.feature.icc.enable", false)); ext_hw_plugin_feature_init( property_get_bool("vendor.audio.feature.ext_hw_plugin.enable", false)); Loading Loading @@ -6372,6 +6476,7 @@ void audio_extn_set_parameters(struct audio_device *adev, audio_extn_set_aptx_dec_bt_addr(adev, parms); audio_extn_ffv_set_parameters(adev, parms); audio_extn_ext_hw_plugin_set_parameters(adev->ext_hw_plugin, parms); audio_extn_icc_set_parameters(adev, parms); } void audio_extn_get_parameters(const struct audio_device *adev, Loading hal/audio_extn/audio_extn.h +19 −0 Original line number Diff line number Diff line Loading @@ -722,6 +722,25 @@ typedef struct hfp_init_config { // END: HFP FEATURE ================================================== // START: ICC FEATURE ==================================================== bool audio_extn_icc_is_active(struct audio_device *adev); audio_usecase_t audio_extn_icc_get_usecase(); void audio_extn_icc_set_parameters(struct audio_device *adev, struct str_parms *parms); typedef struct icc_init_config { fp_platform_get_pcm_device_id_t fp_platform_get_pcm_device_id; fp_platform_set_echo_reference_t fp_platform_set_echo_reference; fp_select_devices_t fp_select_devices; fp_audio_extn_ext_hw_plugin_usecase_start_t fp_audio_extn_ext_hw_plugin_usecase_start; fp_audio_extn_ext_hw_plugin_usecase_stop_t fp_audio_extn_ext_hw_plugin_usecase_stop; fp_get_usecase_from_list_t fp_get_usecase_from_list; fp_disable_audio_route_t fp_disable_audio_route; fp_disable_snd_device_t fp_disable_snd_device; } icc_init_config_t; //END: ICC FEAUTRE ======================================================= // START: EXT_HW_PLUGIN FEATURE ================================================== void* audio_extn_ext_hw_plugin_init(struct audio_device *adev); int audio_extn_ext_hw_plugin_deinit(void *plugin); Loading hal/audio_extn/auto_hal.c +6 −0 Original line number Diff line number Diff line Loading @@ -734,6 +734,9 @@ snd_device_t auto_hal_get_input_snd_device(struct audio_device *adev, case USECASE_VOICE_CALL: snd_device = SND_DEVICE_IN_VOICE_SPEAKER_MIC; break; case USECASE_ICC_CALL: snd_device = SND_DEVICE_IN_ICC; break; default: ALOGE("%s: Usecase (%d) not supported", __func__, uc_id); return -EINVAL; Loading Loading @@ -826,6 +829,9 @@ snd_device_t auto_hal_get_output_snd_device(struct audio_device *adev, case USECASE_AUDIO_PLAYBACK_REAR_SEAT: snd_device = SND_DEVICE_OUT_BUS_RSE; break; case USECASE_ICC_CALL: snd_device = SND_DEVICE_OUT_ICC; break; default: ALOGE("%s: Usecase (%d) not supported", __func__, uc_id); return -EINVAL; Loading hal/audio_extn/ext_hw_plugin.c +8 −6 Original line number Diff line number Diff line Loading @@ -199,6 +199,8 @@ static int32_t ext_hw_plugin_check_plugin_usecase(audio_usecase_t hal_usecase, case USECASE_AUDIO_FM_TUNER_EXT: *plugin_usecase = AUDIO_HAL_PLUGIN_USECASE_FM_TUNER; break; case USECASE_ICC_CALL: *plugin_usecase = AUDIO_HAL_PLUGIN_USECASE_ICC; default: ret = -EINVAL; } Loading Loading @@ -242,7 +244,7 @@ int32_t ext_hw_plugin_usecase_start(void *plugin, struct audio_usecase *usecase) if (((usecase->type == PCM_CAPTURE) || (usecase->type == VOICE_CALL) || (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL) || (usecase->type == PCM_PASSTHROUGH)) && (usecase->type == ICC_CALL) || (usecase->type == PCM_PASSTHROUGH)) && (usecase->in_snd_device != SND_DEVICE_NONE)) { codec_enable.snd_dev = usecase->in_snd_device; /* TODO - below should be related with in_snd_dev */ Loading Loading @@ -316,8 +318,8 @@ int32_t ext_hw_plugin_usecase_start(void *plugin, struct audio_usecase *usecase) } if (((usecase->type == PCM_PLAYBACK) || (usecase->type == VOICE_CALL) || (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL)) && (usecase->out_snd_device != SND_DEVICE_NONE)) { (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL) || (usecase->type == ICC_CALL)) && (usecase->out_snd_device != SND_DEVICE_NONE)) { codec_enable.snd_dev = usecase->out_snd_device; /* TODO - below should be related with out_snd_dev */ codec_enable.sample_rate = 48000; Loading Loading @@ -384,8 +386,8 @@ int32_t ext_hw_plugin_usecase_stop(void *plugin, struct audio_usecase *usecase) } if (((usecase->type == PCM_PLAYBACK) || (usecase->type == VOICE_CALL) || (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL)) && (usecase->out_snd_device != SND_DEVICE_NONE)) { (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL) || (usecase->type == ICC_CALL)) && (usecase->out_snd_device != SND_DEVICE_NONE)) { codec_disable.snd_dev = usecase->out_snd_device; ALOGD("%s: disable audio hal plugin output, %d, %d", Loading @@ -401,7 +403,7 @@ int32_t ext_hw_plugin_usecase_stop(void *plugin, struct audio_usecase *usecase) } if (((usecase->type == PCM_CAPTURE) || (usecase->type == VOICE_CALL) || (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL) || (usecase->type == PCM_PASSTHROUGH)) && (usecase->type == PCM_PASSTHROUGH) || (usecase->type == ICC_CALL)) && (usecase->in_snd_device != SND_DEVICE_NONE)) { codec_disable.snd_dev = usecase->in_snd_device; Loading Loading
hal/audio_extn/Android.mk +68 −0 Original line number Diff line number Diff line Loading @@ -604,6 +604,74 @@ LOCAL_SANITIZE := integer_overflow endif include $(BUILD_SHARED_LIBRARY) #------------------------------------------- # Build ICC LIB #------------------------------------------- include $(CLEAR_VARS) LOCAL_MODULE := libicc LOCAL_VENDOR_MODULE := true PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM) ifneq ($(filter sdm845 sdm710 sdmshrike msmnile kona lito bengal atoll sdm660 msm8937 msm8998 $(MSMSTEPPE) $(TRINKET),$(TARGET_BOARD_PLATFORM)),) # B-family platform uses msm8974 code base AUDIO_PLATFORM := msm8974 MULTIPLE_HW_VARIANTS_ENABLED := true endif ifeq ($(TARGET_BOARD_AUTO),true) LOCAL_CFLAGS += -DPLATFORM_AUTO endif LOCAL_SRC_FILES:= \ icc.c \ device_utils.c LOCAL_CFLAGS += \ -Wall \ -Werror \ -Wno-unused-function \ -Wno-unused-variable LOCAL_SHARED_LIBRARIES := \ libaudioroute \ libaudioutils \ libcutils \ libdl \ libexpat \ liblog \ libtinyalsa \ libtinycompress LOCAL_C_INCLUDES := \ $(PRIMARY_HAL_PATH) \ $(PRIMARY_HAL_PATH)/$(AUDIO_PLATFORM) \ external/tinyalsa/include \ external/tinycompress/include \ external/expat/lib \ system/media/audio_utils/include \ $(call include-path-for, audio-route) \ LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include/audio LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/techpack/audio/include LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr ifeq ($(strip $(AUDIO_FEATURE_ENABLED_DLKM)),true) LOCAL_HEADER_LIBRARIES += audio_kernel_headers LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/vendor/qcom/opensource/audio-kernel/include LOCAL_ADDITIONAL_DEPENDENCIES += $(BOARD_VENDOR_KERNEL_MODULES) endif LOCAL_HEADER_LIBRARIES += libhardware_headers LOCAL_HEADER_LIBRARIES += libsystem_headers ifneq ($(filter kona,$(TARGET_BOARD_PLATFORM)),) LOCAL_SANITIZE := integer_overflow endif include $(BUILD_SHARED_LIBRARY) #------------------------------------------- # Build HDMI PASSTHROUGH #------------------------------------------- Loading
hal/audio_extn/audio_extn.c +105 −0 Original line number Diff line number Diff line Loading @@ -4989,6 +4989,107 @@ int audio_extn_hfp_set_mic_mute2(struct audio_device *adev, bool state) } // END: HFP ======================================================================== // START: ICC ====================================================================== #ifdef __LP64__ #define ICC_LIB_PATH "/vendor/lib64/libicc.so" #else #define ICC_LIB_PATH "/vendor/lib/libicc.so" #endif static void *icc_lib_handle = NULL; typedef void (*icc_init_t)(icc_init_config_t); static icc_init_t icc_init; typedef bool (*icc_is_active_t)(struct audio_device *adev); static icc_is_active_t icc_is_active; typedef audio_usecase_t (*icc_get_usecase_t)(); static icc_get_usecase_t icc_get_usecase; typedef void (*icc_set_parameters_t)(struct audio_device *adev, struct str_parms *parms); static icc_set_parameters_t icc_set_parameters; int icc_feature_init(bool is_feature_enabled) { ALOGD("%s: Called with feature %s", __func__, is_feature_enabled ? "Enabled" : "NOT Enabled"); if (is_feature_enabled) { // dlopen lib icc_lib_handle = dlopen(ICC_LIB_PATH, RTLD_NOW); if (!icc_lib_handle) { ALOGE("%s: dlopen failed", __func__); goto feature_disabled; } if (!(icc_init = (icc_init_t)dlsym( icc_lib_handle, "icc_init")) || !(icc_is_active = (icc_is_active_t)dlsym( icc_lib_handle, "icc_is_active")) || !(icc_get_usecase = (icc_get_usecase_t)dlsym( icc_lib_handle, "icc_get_usecase")) || !(icc_set_parameters = (icc_set_parameters_t)dlsym( icc_lib_handle, "icc_set_parameters"))) { ALOGE("%s: dlsym failed", __func__); goto feature_disabled; } icc_init_config_t init_config; init_config.fp_platform_get_pcm_device_id = platform_get_pcm_device_id; init_config.fp_platform_set_echo_reference = platform_set_echo_reference; init_config.fp_select_devices = select_devices; init_config.fp_audio_extn_ext_hw_plugin_usecase_start = audio_extn_ext_hw_plugin_usecase_start; init_config.fp_audio_extn_ext_hw_plugin_usecase_stop = audio_extn_ext_hw_plugin_usecase_stop; init_config.fp_get_usecase_from_list = get_usecase_from_list; init_config.fp_disable_audio_route = disable_audio_route; init_config.fp_disable_snd_device = disable_snd_device; icc_init(init_config); ALOGD("%s:: ---- Feature ICC is Enabled ----", __func__); return 0; } feature_disabled: if (icc_lib_handle) { dlclose(icc_lib_handle); icc_lib_handle = NULL; } icc_init = NULL; icc_is_active = NULL; icc_get_usecase = NULL; icc_set_parameters = NULL; ALOGW(":: %s: ---- Feature ICC is disabled ----", __func__); return -ENOSYS; } bool audio_extn_icc_is_active(struct audio_device *adev) { return ((icc_is_active) ? icc_is_active(adev): false); } audio_usecase_t audio_extn_icc_get_usecase() { return ((icc_get_usecase) ? icc_get_usecase(): -1); } void audio_extn_icc_set_parameters(struct audio_device *adev, struct str_parms *parms) { ((icc_set_parameters) ? icc_set_parameters(adev, parms): NULL); } // END: ICC ======================================================================== // START: EXT_HW_PLUGIN =================================================================== #ifdef __LP64__ #define EXT_HW_PLUGIN_LIB_PATH "/vendor/lib64/libexthwplugin.so" Loading Loading @@ -6313,6 +6414,9 @@ void audio_extn_feature_init() hfp_feature_init( property_get_bool("vendor.audio.feature.hfp.enable", false)); icc_feature_init( property_get_bool("vendor.audio.feature.icc.enable", false)); ext_hw_plugin_feature_init( property_get_bool("vendor.audio.feature.ext_hw_plugin.enable", false)); Loading Loading @@ -6372,6 +6476,7 @@ void audio_extn_set_parameters(struct audio_device *adev, audio_extn_set_aptx_dec_bt_addr(adev, parms); audio_extn_ffv_set_parameters(adev, parms); audio_extn_ext_hw_plugin_set_parameters(adev->ext_hw_plugin, parms); audio_extn_icc_set_parameters(adev, parms); } void audio_extn_get_parameters(const struct audio_device *adev, Loading
hal/audio_extn/audio_extn.h +19 −0 Original line number Diff line number Diff line Loading @@ -722,6 +722,25 @@ typedef struct hfp_init_config { // END: HFP FEATURE ================================================== // START: ICC FEATURE ==================================================== bool audio_extn_icc_is_active(struct audio_device *adev); audio_usecase_t audio_extn_icc_get_usecase(); void audio_extn_icc_set_parameters(struct audio_device *adev, struct str_parms *parms); typedef struct icc_init_config { fp_platform_get_pcm_device_id_t fp_platform_get_pcm_device_id; fp_platform_set_echo_reference_t fp_platform_set_echo_reference; fp_select_devices_t fp_select_devices; fp_audio_extn_ext_hw_plugin_usecase_start_t fp_audio_extn_ext_hw_plugin_usecase_start; fp_audio_extn_ext_hw_plugin_usecase_stop_t fp_audio_extn_ext_hw_plugin_usecase_stop; fp_get_usecase_from_list_t fp_get_usecase_from_list; fp_disable_audio_route_t fp_disable_audio_route; fp_disable_snd_device_t fp_disable_snd_device; } icc_init_config_t; //END: ICC FEAUTRE ======================================================= // START: EXT_HW_PLUGIN FEATURE ================================================== void* audio_extn_ext_hw_plugin_init(struct audio_device *adev); int audio_extn_ext_hw_plugin_deinit(void *plugin); Loading
hal/audio_extn/auto_hal.c +6 −0 Original line number Diff line number Diff line Loading @@ -734,6 +734,9 @@ snd_device_t auto_hal_get_input_snd_device(struct audio_device *adev, case USECASE_VOICE_CALL: snd_device = SND_DEVICE_IN_VOICE_SPEAKER_MIC; break; case USECASE_ICC_CALL: snd_device = SND_DEVICE_IN_ICC; break; default: ALOGE("%s: Usecase (%d) not supported", __func__, uc_id); return -EINVAL; Loading Loading @@ -826,6 +829,9 @@ snd_device_t auto_hal_get_output_snd_device(struct audio_device *adev, case USECASE_AUDIO_PLAYBACK_REAR_SEAT: snd_device = SND_DEVICE_OUT_BUS_RSE; break; case USECASE_ICC_CALL: snd_device = SND_DEVICE_OUT_ICC; break; default: ALOGE("%s: Usecase (%d) not supported", __func__, uc_id); return -EINVAL; Loading
hal/audio_extn/ext_hw_plugin.c +8 −6 Original line number Diff line number Diff line Loading @@ -199,6 +199,8 @@ static int32_t ext_hw_plugin_check_plugin_usecase(audio_usecase_t hal_usecase, case USECASE_AUDIO_FM_TUNER_EXT: *plugin_usecase = AUDIO_HAL_PLUGIN_USECASE_FM_TUNER; break; case USECASE_ICC_CALL: *plugin_usecase = AUDIO_HAL_PLUGIN_USECASE_ICC; default: ret = -EINVAL; } Loading Loading @@ -242,7 +244,7 @@ int32_t ext_hw_plugin_usecase_start(void *plugin, struct audio_usecase *usecase) if (((usecase->type == PCM_CAPTURE) || (usecase->type == VOICE_CALL) || (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL) || (usecase->type == PCM_PASSTHROUGH)) && (usecase->type == ICC_CALL) || (usecase->type == PCM_PASSTHROUGH)) && (usecase->in_snd_device != SND_DEVICE_NONE)) { codec_enable.snd_dev = usecase->in_snd_device; /* TODO - below should be related with in_snd_dev */ Loading Loading @@ -316,8 +318,8 @@ int32_t ext_hw_plugin_usecase_start(void *plugin, struct audio_usecase *usecase) } if (((usecase->type == PCM_PLAYBACK) || (usecase->type == VOICE_CALL) || (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL)) && (usecase->out_snd_device != SND_DEVICE_NONE)) { (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL) || (usecase->type == ICC_CALL)) && (usecase->out_snd_device != SND_DEVICE_NONE)) { codec_enable.snd_dev = usecase->out_snd_device; /* TODO - below should be related with out_snd_dev */ codec_enable.sample_rate = 48000; Loading Loading @@ -384,8 +386,8 @@ int32_t ext_hw_plugin_usecase_stop(void *plugin, struct audio_usecase *usecase) } if (((usecase->type == PCM_PLAYBACK) || (usecase->type == VOICE_CALL) || (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL)) && (usecase->out_snd_device != SND_DEVICE_NONE)) { (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL) || (usecase->type == ICC_CALL)) && (usecase->out_snd_device != SND_DEVICE_NONE)) { codec_disable.snd_dev = usecase->out_snd_device; ALOGD("%s: disable audio hal plugin output, %d, %d", Loading @@ -401,7 +403,7 @@ int32_t ext_hw_plugin_usecase_stop(void *plugin, struct audio_usecase *usecase) } if (((usecase->type == PCM_CAPTURE) || (usecase->type == VOICE_CALL) || (usecase->type == VOIP_CALL) || (usecase->type == PCM_HFP_CALL) || (usecase->type == PCM_PASSTHROUGH)) && (usecase->type == PCM_PASSTHROUGH) || (usecase->type == ICC_CALL)) && (usecase->in_snd_device != SND_DEVICE_NONE)) { codec_disable.snd_dev = usecase->in_snd_device; Loading