summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEnrico Granata <egranata@google.com>2022-12-17 05:24:27 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-12-17 05:24:27 +0000
commit055a8165edca30bef853ab3a80fa46c500ab98f3 (patch)
treef57f58e75c87df63ef4eaf94b900ac331f8e9b05
parentf37d3f2d645dedd529a297d571345056b200bb6f (diff)
parentf98a18897502b5df1b6a23d8ca0074f28cd6b322 (diff)
downloadcar-055a8165edca30bef853ab3a80fa46c500ab98f3.tar.gz
Add support for androidboot. configuration of the Audio HAL am: f98a188975
Original change: https://googleplex-android-review.googlesource.com/c/device/generic/car/+/20765521 Change-Id: Ifa03f914527ac04dc7cd9e0033cc649a6ac34813 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--emulator/audio/driver/audio_hw.c51
1 files changed, 43 insertions, 8 deletions
diff --git a/emulator/audio/driver/audio_hw.c b/emulator/audio/driver/audio_hw.c
index 06b0fe8..39c763b 100644
--- a/emulator/audio/driver/audio_hw.c
+++ b/emulator/audio/driver/audio_hw.c
@@ -55,10 +55,26 @@
#define DEFAULT_IN_PERIOD_MS 15
#define DEFAULT_IN_PERIOD_COUNT 4
-static const char* PROP_KEY_OUT_PERIOD_MS = "ro.vendor.caremu.audiohal.out_period_ms";
-static const char* PROP_KEY_OUT_PERIOD_COUNT = "ro.vendor.caremu.audiohal.out_period_count";
-static const char* PROP_KEY_IN_PERIOD_MS = "ro.vendor.caremu.audiohal.in_period_ms";
-static const char* PROP_KEY_IN_PERIOD_COUNT = "ro.vendor.caremu.audiohal.in_period_count";
+#ifndef ARRAY_SIZE
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
+#endif
+
+static const char* PROP_KEY_OUT_PERIOD_MS[2] = {
+ "ro.boot.vendor.caremu.audiohal.out_period_ms",
+ "ro.vendor.caremu.audiohal.out_period_ms",
+};
+static const char* PROP_KEY_OUT_PERIOD_COUNT[2] = {
+ "ro.boot.vendor.caremu.audiohal.out_period_count",
+ "ro.vendor.caremu.audiohal.out_period_count",
+};
+static const char* PROP_KEY_IN_PERIOD_MS[2] = {
+ "ro.boot.vendor.caremu.audiohal.out_period_count",
+ "ro.vendor.caremu.audiohal.out_period_count",
+};
+static const char* PROP_KEY_IN_PERIOD_COUNT[2] = {
+ "ro.boot.vendor.caremu.audiohal.in_period_count",
+ "ro.vendor.caremu.audiohal.in_period_count",
+};
#define PI 3.14159265
#define TWO_PI (2*PI)
@@ -92,10 +108,23 @@ static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
static int adev_get_mic_mute(const struct audio_hw_device *dev, bool *state);
+static int audio_get_property(const char** keys, size_t num_keys, int32_t default_value) {
+ static char prop_value[PROP_VALUE_MAX] = {0};
+ for (size_t i = 0; i < num_keys; ++i) {
+ if (property_get(keys[i], prop_value, NULL) > 0) {
+ return property_get_int32(keys[i], default_value);
+ }
+ }
+
+ return default_value;
+}
+
static int get_out_period_ms() {
static int out_period_ms = -1;
if (out_period_ms == -1) {
- out_period_ms = property_get_int32(PROP_KEY_OUT_PERIOD_MS, DEFAULT_OUT_PERIOD_MS);
+ out_period_ms = audio_get_property(PROP_KEY_OUT_PERIOD_MS,
+ ARRAY_SIZE(PROP_KEY_OUT_PERIOD_MS),
+ DEFAULT_OUT_PERIOD_MS);
}
return out_period_ms;
}
@@ -103,7 +132,9 @@ static int get_out_period_ms() {
static int get_out_period_count() {
static int out_period_count = -1;
if (out_period_count == -1) {
- out_period_count = property_get_int32(PROP_KEY_OUT_PERIOD_COUNT, DEFAULT_OUT_PERIOD_COUNT);
+ out_period_count = audio_get_property(PROP_KEY_OUT_PERIOD_COUNT,
+ ARRAY_SIZE(PROP_KEY_OUT_PERIOD_COUNT),
+ DEFAULT_OUT_PERIOD_COUNT);
}
return out_period_count;
}
@@ -111,7 +142,9 @@ static int get_out_period_count() {
static int get_in_period_ms() {
static int in_period_ms = -1;
if (in_period_ms == -1) {
- in_period_ms = property_get_int32(PROP_KEY_IN_PERIOD_MS, DEFAULT_IN_PERIOD_MS);
+ in_period_ms = audio_get_property(PROP_KEY_IN_PERIOD_MS,
+ ARRAY_SIZE(PROP_KEY_IN_PERIOD_MS),
+ DEFAULT_IN_PERIOD_MS);
}
return in_period_ms;
}
@@ -119,7 +152,9 @@ static int get_in_period_ms() {
static int get_in_period_count() {
static int in_period_count = -1;
if (in_period_count == -1) {
- in_period_count = property_get_int32(PROP_KEY_IN_PERIOD_COUNT, DEFAULT_IN_PERIOD_COUNT);
+ in_period_count = audio_get_property(PROP_KEY_IN_PERIOD_COUNT,
+ ARRAY_SIZE(PROP_KEY_IN_PERIOD_COUNT),
+ DEFAULT_IN_PERIOD_COUNT);
}
return in_period_count;
}