Merge "hal: Update app type configuration logic"
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index ab3e373..a0dd5ae 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -450,7 +450,8 @@
uint32_t sample_rate,
uint32_t bit_width,
struct stream_app_type_cfg *app_type_cfg);
-int audio_extn_utils_send_app_type_cfg(struct audio_usecase *usecase);
+int audio_extn_utils_send_app_type_cfg(struct audio_device *adev,
+ struct audio_usecase *usecase);
void audio_extn_utils_send_audio_calibration(struct audio_device *adev,
struct audio_usecase *usecase);
#ifdef DS2_DOLBY_DAP_ENABLED
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 24dee64..b9e2a40 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -504,14 +504,11 @@
app_type_cfg->bit_width = 16;
}
-#define GENERAL_RECORDING_APP_TYPE 0x11132
-int audio_extn_utils_send_app_type_cfg(struct audio_usecase *usecase)
+int audio_extn_utils_send_app_type_cfg(struct audio_device *adev,
+ struct audio_usecase *usecase)
{
char mixer_ctl_name[MAX_LENGTH_MIXER_CONTROL_IN_INT];
int app_type_cfg[MAX_LENGTH_MIXER_CONTROL_IN_INT], len = 0, rc;
- struct stream_out *out;
- struct stream_in *in;
- struct audio_device *adev;
struct mixer_ctl *ctl;
int pcm_device_id, acdb_dev_id, snd_device = usecase->out_snd_device;
int32_t sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
@@ -528,21 +525,16 @@
(usecase->id != USECASE_AUDIO_PLAYBACK_MULTI_CH) &&
(!is_offload_usecase(usecase->id)) &&
(usecase->type != PCM_CAPTURE)) {
- ALOGV("%s: a playback path where app type cfg is not required %d", __func__, usecase->id);
+ ALOGV("%s: a rx/tx path where app type cfg is not required %d", __func__, usecase->id);
rc = 0;
goto exit_send_app_type_cfg;
}
if (usecase->type == PCM_PLAYBACK) {
- out = usecase->stream.out;
- adev = out->dev;
snd_device = usecase->out_snd_device;
- pcm_device_id = platform_get_pcm_device_id(out->usecase, PCM_PLAYBACK);
- }
- if (usecase->type == PCM_CAPTURE) {
- in = usecase->stream.in;
- adev = in->dev;
+ pcm_device_id = platform_get_pcm_device_id(usecase->id, PCM_PLAYBACK);
+ } else if (usecase->type == PCM_CAPTURE) {
snd_device = usecase->in_snd_device;
- pcm_device_id = platform_get_pcm_device_id(in->usecase, PCM_CAPTURE);
+ pcm_device_id = platform_get_pcm_device_id(usecase->id, PCM_CAPTURE);
}
snprintf(mixer_ctl_name, sizeof(mixer_ctl_name),
@@ -564,7 +556,14 @@
goto exit_send_app_type_cfg;
}
- if (usecase->type == PCM_PLAYBACK) {
+ if ((usecase->type == PCM_PLAYBACK) && (usecase->stream.out == NULL)) {
+ sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
+ app_type_cfg[len++] = platform_get_default_app_type(adev->platform);
+ app_type_cfg[len++] = acdb_dev_id;
+ app_type_cfg[len++] = sample_rate;
+ ALOGI("%s PLAYBACK app_type %d, acdb_dev_id %d, sample_rate %d",
+ __func__, platform_get_default_app_type(adev->platform), acdb_dev_id, sample_rate);
+ } else if (usecase->type == PCM_PLAYBACK) {
if ((24 == usecase->stream.out->bit_width) &&
(usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER)) {
sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
@@ -573,13 +572,13 @@
(usecase->stream.out->sample_rate < OUTPUT_SAMPLING_RATE_44100)) {
sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
} else {
- sample_rate = out->app_type_cfg.sample_rate;
+ sample_rate = usecase->stream.out->app_type_cfg.sample_rate;
}
- app_type_cfg[len++] = out->app_type_cfg.app_type;
+ app_type_cfg[len++] = usecase->stream.out->app_type_cfg.app_type;
app_type_cfg[len++] = acdb_dev_id;
- if (((out->format == AUDIO_FORMAT_E_AC3) ||
- (out->format == AUDIO_FORMAT_E_AC3_JOC))
+ if (((usecase->stream.out->format == AUDIO_FORMAT_E_AC3) ||
+ (usecase->stream.out->format == AUDIO_FORMAT_E_AC3_JOC))
#ifdef HDMI_PASSTHROUGH_ENABLED
&& (out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH)
#endif
@@ -588,10 +587,9 @@
else
app_type_cfg[len++] = sample_rate;
ALOGI("%s PLAYBACK app_type %d, acdb_dev_id %d, sample_rate %d",
- __func__, out->app_type_cfg.app_type, acdb_dev_id, sample_rate);
- }
- else if (usecase->type == PCM_CAPTURE) {
- app_type_cfg[len++] = GENERAL_RECORDING_APP_TYPE;
+ __func__, usecase->stream.out->app_type_cfg.app_type, acdb_dev_id, sample_rate);
+ } else if (usecase->type == PCM_CAPTURE) {
+ app_type_cfg[len++] = platform_get_default_app_type(adev->platform);
app_type_cfg[len++] = acdb_dev_id;
app_type_cfg[len++] = sample_rate;
ALOGI("%s CAPTURE app_type %d, acdb_dev_id %d, sample_rate %d",
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 367ba4c..1beb0f9 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -454,7 +454,7 @@
audio_extn_sound_trigger_update_stream_status(usecase, ST_EVENT_STREAM_BUSY);
audio_extn_listen_update_stream_status(usecase, LISTEN_EVENT_STREAM_BUSY);
audio_extn_utils_send_audio_calibration(adev, usecase);
- audio_extn_utils_send_app_type_cfg(usecase);
+ audio_extn_utils_send_app_type_cfg(adev, usecase);
strcpy(mixer_path, use_case_table[usecase->id]);
platform_add_backend_name(mixer_path, snd_device, usecase);
ALOGV("%s: apply mixer and update path: %s", __func__, mixer_path);