AAudio: Sample rate converter flag
Add a flag for sample rate converter in AAudio.
Bug: 219533889
Test: atest AAudioTests
Test: OboeTester test output for various sample rates
Change-Id: I735639e915d573605863c0e404d85724105004dc
diff --git a/media/audio/aconfig/Android.bp b/media/audio/aconfig/Android.bp
index 5b10794..897f499 100644
--- a/media/audio/aconfig/Android.bp
+++ b/media/audio/aconfig/Android.bp
@@ -17,6 +17,12 @@
srcs: ["audio.aconfig"],
}
+aconfig_declarations {
+ name: "com.android.media.aaudio-aconfig",
+ package: "com.android.media.aaudio",
+ srcs: ["aaudio.aconfig"],
+}
+
cc_aconfig_library {
name: "com.android.media.audioserver-aconfig-cc",
aconfig_declarations: "com.android.media.audioserver-aconfig",
@@ -37,6 +43,12 @@
defaults: ["audio-aconfig-cc-defaults"],
}
+cc_aconfig_library {
+ name: "com.android.media.aaudio-aconfig-cc",
+ aconfig_declarations: "com.android.media.aaudio-aconfig",
+ defaults: ["audio-aconfig-cc-defaults"],
+}
+
java_aconfig_library {
name: "com.android.media.audio-aconfig-java",
aconfig_declarations: "com.android.media.audio-aconfig",
diff --git a/media/audio/aconfig/aaudio.aconfig b/media/audio/aconfig/aaudio.aconfig
new file mode 100644
index 0000000..7196525
--- /dev/null
+++ b/media/audio/aconfig/aaudio.aconfig
@@ -0,0 +1,12 @@
+# Flags for aaudio
+#
+# Please add flags in alphabetical order.
+
+package: "com.android.media.aaudio"
+
+flag {
+ name: "sample_rate_conversion"
+ namespace: "media_audio"
+ description: "Enable the AAudio sample rate converter."
+ bug: "219533889"
+}
diff --git a/media/libaaudio/fuzzer/Android.bp b/media/libaaudio/fuzzer/Android.bp
index ee53717..46c4148 100644
--- a/media/libaaudio/fuzzer/Android.bp
+++ b/media/libaaudio/fuzzer/Android.bp
@@ -41,6 +41,7 @@
"libaudioclient_aidl_conversion",
"libaudio_aidl_conversion_common_cpp",
"libutils",
+ "com.android.media.aaudio-aconfig-cc",
],
static_libs: [
"liblog",
diff --git a/media/libaaudio/src/Android.bp b/media/libaaudio/src/Android.bp
index 7882951..886603d 100644
--- a/media/libaaudio/src/Android.bp
+++ b/media/libaaudio/src/Android.bp
@@ -173,6 +173,7 @@
"aaudio-aidl-cpp",
"audioclient-types-aidl-cpp",
"libaudioclient_aidl_conversion",
+ "com.android.media.aaudio-aconfig-cc",
],
cflags: [
diff --git a/media/libaaudio/src/client/AudioStreamInternal.cpp b/media/libaaudio/src/client/AudioStreamInternal.cpp
index 8d9bf20..ca0db0d 100644
--- a/media/libaaudio/src/client/AudioStreamInternal.cpp
+++ b/media/libaaudio/src/client/AudioStreamInternal.cpp
@@ -42,6 +42,7 @@
#include "fifo/FifoBuffer.h"
#include "utility/AudioClock.h"
#include <media/AidlConversion.h>
+#include <com_android_media_aaudio.h>
#include "AudioStreamInternal.h"
@@ -63,8 +64,6 @@
#define LOG_TIMESTAMPS 0
-#define ENABLE_SAMPLE_RATE_CONVERTER 1
-
AudioStreamInternal::AudioStreamInternal(AAudioServiceInterface &serviceInterface, bool inService)
: AudioStream()
, mClockModel()
@@ -193,11 +192,13 @@
setSampleRate(configurationOutput.getSampleRate());
}
-#if !ENABLE_SAMPLE_RATE_CONVERTER
- if (getSampleRate() != getDeviceSampleRate()) {
- goto error;
+ if (!com::android::media::aaudio::sample_rate_conversion()) {
+ if (getSampleRate() != getDeviceSampleRate()) {
+ ALOGD("%s - skipping sample rate converter. SR = %d, Device SR = %d", __func__,
+ getSampleRate(), getDeviceSampleRate());
+ goto error;
+ }
}
-#endif
// Save device format so we can do format conversion and volume scaling together.
setDeviceFormat(configurationOutput.getFormat());