Loading hal/audio_hw.c +11 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,9 @@ static const char * const use_case_table[AUDIO_USECASE_MAX] = { [USECASE_VOICE2_CALL] = "voice2-call", [USECASE_VOLTE_CALL] = "volte-call", [USECASE_QCHAT_CALL] = "qchat-call", [USECASE_INCALL_REC_UPLINK] = "incall-rec-uplink", [USECASE_INCALL_REC_DOWNLINK] = "incall-rec-downlink", [USECASE_INCALL_REC_UPLINK_AND_DOWNLINK] = "incall-rec-uplink-and-downlink", }; Loading Loading @@ -638,6 +641,14 @@ int start_input_stream(struct stream_in *in) struct audio_device *adev = in->dev; ALOGV("%s: enter: usecase(%d)", __func__, in->usecase); /* Check if source matches incall recording usecase criteria */ ret = voice_check_and_set_incall_rec_usecase(adev, in); if (ret) goto error_config; else ALOGV("%s: usecase(%d)", __func__, in->usecase); in->pcm_device_id = platform_get_pcm_device_id(in->usecase, PCM_CAPTURE); if (in->pcm_device_id < 0) { ALOGE("%s: Could not find PCM device id for the usecase(%d)", Loading hal/audio_hw.h +4 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,10 @@ typedef enum { USECASE_VOLTE_CALL, USECASE_QCHAT_CALL, USECASE_INCALL_REC_UPLINK, USECASE_INCALL_REC_DOWNLINK, USECASE_INCALL_REC_UPLINK_AND_DOWNLINK, AUDIO_USECASE_MAX } audio_usecase_t; Loading hal/msm8960/platform.c +6 −0 Original line number Diff line number Diff line Loading @@ -883,3 +883,9 @@ int platform_set_parameters(void *platform, struct str_parms *parms) LOGE("%s: Not implemented", __func__); return -ENOSYS; } int platform_set_incall_recoding_session_id(void *platform, uint32_t session_id) { LOGE("%s: Not implemented", __func__); return -ENOSYS; } hal/msm8974/platform.c +37 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,7 @@ static const int pcm_device_table[AUDIO_USECASE_MAX][2] = { LOWLATENCY_PCM_DEVICE}, [USECASE_AUDIO_PLAYBACK_MULTI_CH] = {MULTI_CHANNEL_PCM_DEVICE, MULTI_CHANNEL_PCM_DEVICE}, [USECASE_AUDIO_RECORD] = {DEEP_BUFFER_PCM_DEVICE, DEEP_BUFFER_PCM_DEVICE}, [USECASE_AUDIO_RECORD] = {AUDIO_RECORD_PCM_DEVICE, AUDIO_RECORD_PCM_DEVICE}, [USECASE_AUDIO_RECORD_LOW_LATENCY] = {LOWLATENCY_PCM_DEVICE, LOWLATENCY_PCM_DEVICE}, [USECASE_AUDIO_PLAYBACK_FM] = {FM_PLAYBACK_PCM_DEVICE, FM_CAPTURE_PCM_DEVICE}, Loading @@ -107,6 +107,12 @@ static const int pcm_device_table[AUDIO_USECASE_MAX][2] = { [USECASE_VOICE2_CALL] = {VOICE2_CALL_PCM_DEVICE, VOICE2_CALL_PCM_DEVICE}, [USECASE_VOLTE_CALL] = {VOLTE_CALL_PCM_DEVICE, VOLTE_CALL_PCM_DEVICE}, [USECASE_QCHAT_CALL] = {QCHAT_CALL_PCM_DEVICE, QCHAT_CALL_PCM_DEVICE}, [USECASE_INCALL_REC_UPLINK] = {AUDIO_RECORD_PCM_DEVICE, AUDIO_RECORD_PCM_DEVICE}, [USECASE_INCALL_REC_DOWNLINK] = {AUDIO_RECORD_PCM_DEVICE, AUDIO_RECORD_PCM_DEVICE}, [USECASE_INCALL_REC_UPLINK_AND_DOWNLINK] = {AUDIO_RECORD_PCM_DEVICE, AUDIO_RECORD_PCM_DEVICE}, }; /* Array to store sound devices */ Loading Loading @@ -983,6 +989,36 @@ int platform_set_parameters(void *platform, struct str_parms *parms) return ret; } int platform_set_incall_recoding_session_id(void *platform, uint32_t session_id) { int ret = 0; struct platform_data *my_data = (struct platform_data *)platform; struct audio_device *adev = my_data->adev; struct mixer_ctl *ctl; const char *mixer_ctl_name = "Voc VSID"; int num_ctl_values; int i; ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name); if (!ctl) { ALOGE("%s: Could not get ctl for mixer cmd - %s", __func__, mixer_ctl_name); ret = -EINVAL; } else { num_ctl_values = mixer_ctl_get_num_values(ctl); for (i = 0; i < num_ctl_values; i++) { if (mixer_ctl_set_value(ctl, i, session_id)) { ALOGV("Error: invalid session_id: %x", session_id); ret = -EINVAL; break; } } } return ret; } void platform_get_parameters(void *platform, struct str_parms *query, struct str_parms *reply) Loading hal/msm8974/platform.h +1 −0 Original line number Diff line number Diff line Loading @@ -142,6 +142,7 @@ enum { #define AUDIO_CAPTURE_PERIOD_COUNT 2 #define DEEP_BUFFER_PCM_DEVICE 0 #define AUDIO_RECORD_PCM_DEVICE 0 #define MULTI_CHANNEL_PCM_DEVICE 1 #define VOICE_CALL_PCM_DEVICE 2 #define FM_PLAYBACK_PCM_DEVICE 5 Loading Loading
hal/audio_hw.c +11 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,9 @@ static const char * const use_case_table[AUDIO_USECASE_MAX] = { [USECASE_VOICE2_CALL] = "voice2-call", [USECASE_VOLTE_CALL] = "volte-call", [USECASE_QCHAT_CALL] = "qchat-call", [USECASE_INCALL_REC_UPLINK] = "incall-rec-uplink", [USECASE_INCALL_REC_DOWNLINK] = "incall-rec-downlink", [USECASE_INCALL_REC_UPLINK_AND_DOWNLINK] = "incall-rec-uplink-and-downlink", }; Loading Loading @@ -638,6 +641,14 @@ int start_input_stream(struct stream_in *in) struct audio_device *adev = in->dev; ALOGV("%s: enter: usecase(%d)", __func__, in->usecase); /* Check if source matches incall recording usecase criteria */ ret = voice_check_and_set_incall_rec_usecase(adev, in); if (ret) goto error_config; else ALOGV("%s: usecase(%d)", __func__, in->usecase); in->pcm_device_id = platform_get_pcm_device_id(in->usecase, PCM_CAPTURE); if (in->pcm_device_id < 0) { ALOGE("%s: Could not find PCM device id for the usecase(%d)", Loading
hal/audio_hw.h +4 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,10 @@ typedef enum { USECASE_VOLTE_CALL, USECASE_QCHAT_CALL, USECASE_INCALL_REC_UPLINK, USECASE_INCALL_REC_DOWNLINK, USECASE_INCALL_REC_UPLINK_AND_DOWNLINK, AUDIO_USECASE_MAX } audio_usecase_t; Loading
hal/msm8960/platform.c +6 −0 Original line number Diff line number Diff line Loading @@ -883,3 +883,9 @@ int platform_set_parameters(void *platform, struct str_parms *parms) LOGE("%s: Not implemented", __func__); return -ENOSYS; } int platform_set_incall_recoding_session_id(void *platform, uint32_t session_id) { LOGE("%s: Not implemented", __func__); return -ENOSYS; }
hal/msm8974/platform.c +37 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,7 @@ static const int pcm_device_table[AUDIO_USECASE_MAX][2] = { LOWLATENCY_PCM_DEVICE}, [USECASE_AUDIO_PLAYBACK_MULTI_CH] = {MULTI_CHANNEL_PCM_DEVICE, MULTI_CHANNEL_PCM_DEVICE}, [USECASE_AUDIO_RECORD] = {DEEP_BUFFER_PCM_DEVICE, DEEP_BUFFER_PCM_DEVICE}, [USECASE_AUDIO_RECORD] = {AUDIO_RECORD_PCM_DEVICE, AUDIO_RECORD_PCM_DEVICE}, [USECASE_AUDIO_RECORD_LOW_LATENCY] = {LOWLATENCY_PCM_DEVICE, LOWLATENCY_PCM_DEVICE}, [USECASE_AUDIO_PLAYBACK_FM] = {FM_PLAYBACK_PCM_DEVICE, FM_CAPTURE_PCM_DEVICE}, Loading @@ -107,6 +107,12 @@ static const int pcm_device_table[AUDIO_USECASE_MAX][2] = { [USECASE_VOICE2_CALL] = {VOICE2_CALL_PCM_DEVICE, VOICE2_CALL_PCM_DEVICE}, [USECASE_VOLTE_CALL] = {VOLTE_CALL_PCM_DEVICE, VOLTE_CALL_PCM_DEVICE}, [USECASE_QCHAT_CALL] = {QCHAT_CALL_PCM_DEVICE, QCHAT_CALL_PCM_DEVICE}, [USECASE_INCALL_REC_UPLINK] = {AUDIO_RECORD_PCM_DEVICE, AUDIO_RECORD_PCM_DEVICE}, [USECASE_INCALL_REC_DOWNLINK] = {AUDIO_RECORD_PCM_DEVICE, AUDIO_RECORD_PCM_DEVICE}, [USECASE_INCALL_REC_UPLINK_AND_DOWNLINK] = {AUDIO_RECORD_PCM_DEVICE, AUDIO_RECORD_PCM_DEVICE}, }; /* Array to store sound devices */ Loading Loading @@ -983,6 +989,36 @@ int platform_set_parameters(void *platform, struct str_parms *parms) return ret; } int platform_set_incall_recoding_session_id(void *platform, uint32_t session_id) { int ret = 0; struct platform_data *my_data = (struct platform_data *)platform; struct audio_device *adev = my_data->adev; struct mixer_ctl *ctl; const char *mixer_ctl_name = "Voc VSID"; int num_ctl_values; int i; ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name); if (!ctl) { ALOGE("%s: Could not get ctl for mixer cmd - %s", __func__, mixer_ctl_name); ret = -EINVAL; } else { num_ctl_values = mixer_ctl_get_num_values(ctl); for (i = 0; i < num_ctl_values; i++) { if (mixer_ctl_set_value(ctl, i, session_id)) { ALOGV("Error: invalid session_id: %x", session_id); ret = -EINVAL; break; } } } return ret; } void platform_get_parameters(void *platform, struct str_parms *query, struct str_parms *reply) Loading
hal/msm8974/platform.h +1 −0 Original line number Diff line number Diff line Loading @@ -142,6 +142,7 @@ enum { #define AUDIO_CAPTURE_PERIOD_COUNT 2 #define DEEP_BUFFER_PCM_DEVICE 0 #define AUDIO_RECORD_PCM_DEVICE 0 #define MULTI_CHANNEL_PCM_DEVICE 1 #define VOICE_CALL_PCM_DEVICE 2 #define FM_PLAYBACK_PCM_DEVICE 5 Loading