hal: add rear seat playback support for automotive
Add rear seat playback support for multi-zone
audio support on automotive platform.
Change-Id: Ia3d4c4a4f78950e99a8d4955e910cc8902b6bb17
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 4fa96da..2a7d70a 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -1286,6 +1286,9 @@
#ifndef AUDIO_OUTPUT_FLAG_PHONE
#define AUDIO_OUTPUT_FLAG_PHONE 0x800000
#endif
+#ifndef AUDIO_OUTPUT_FLAG_REAR_SEAT
+#define AUDIO_OUTPUT_FLAG_REAR_SEAT 0x1000000
+#endif
int audio_extn_auto_hal_init(struct audio_device *adev);
void audio_extn_auto_hal_deinit(void);
int audio_extn_auto_hal_create_audio_patch(struct audio_hw_device *dev,
diff --git a/hal/audio_extn/auto_hal.c b/hal/audio_extn/auto_hal.c
index 81ef46c..a295a4d 100644
--- a/hal/audio_extn/auto_hal.c
+++ b/hal/audio_extn/auto_hal.c
@@ -89,6 +89,7 @@
USECASE_AUDIO_PLAYBACK_SYS_NOTIFICATION,
USECASE_AUDIO_PLAYBACK_NAV_GUIDANCE,
USECASE_AUDIO_PLAYBACK_PHONE,
+ USECASE_AUDIO_PLAYBACK_REAR_SEAT,
};
int auto_hal_release_audio_patch(struct audio_hw_device *dev,
@@ -505,6 +506,19 @@
if (out->flags == AUDIO_OUTPUT_FLAG_NONE)
out->flags |= AUDIO_OUTPUT_FLAG_PHONE;
break;
+ case CAR_AUDIO_STREAM_REAR_SEAT:
+ out->usecase = USECASE_AUDIO_PLAYBACK_REAR_SEAT;
+ out->config = pcm_config_deep_buffer;
+ out->config.period_size = fp_get_output_period_size(out->sample_rate, out->format,
+ channels, DEEP_BUFFER_OUTPUT_PERIOD_DURATION);
+ if (out->config.period_size <= 0) {
+ ALOGE("Invalid configuration period size is not valid");
+ ret = -EINVAL;
+ goto error;
+ }
+ if (out->flags == AUDIO_OUTPUT_FLAG_NONE)
+ out->flags |= AUDIO_OUTPUT_FLAG_REAR_SEAT;
+ break;
default:
ALOGE("%s: Car audio stream %x not supported", __func__,
out->car_audio_stream);
@@ -543,6 +557,9 @@
case CAR_AUDIO_STREAM_PHONE:
snd_device = SND_DEVICE_OUT_BUS_PHN;
break;
+ case CAR_AUDIO_STREAM_REAR_SEAT:
+ snd_device = SND_DEVICE_OUT_BUS_RSE;
+ break;
default:
ALOGE("%s: Unknown car audio stream (%x)",
__func__, out->car_audio_stream);
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index fe368e9..a29b6e5 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -150,6 +150,7 @@
STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_SYS_NOTIFICATION),
STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_NAV_GUIDANCE),
STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_PHONE),
+ STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_REAR_SEAT),
STRING_TO_ENUM(AUDIO_INPUT_FLAG_NONE),
STRING_TO_ENUM(AUDIO_INPUT_FLAG_FAST),
STRING_TO_ENUM(AUDIO_INPUT_FLAG_HW_HOTWORD),