aaudio_loopback: rectify and low pass filter
Help the autocorrelator recognize the peaks easier.
Reduce false detection of suboctaves.
Better timing for devices with high latency.
Improve error reporting.
Set input capacity based on output burst.
Bug: 119032743
Test: see repro case in bug
Test: aaudio_loopback -te -pl
Change-Id: I921c81db882f46ede8988cbdbebda0765e775086
diff --git a/media/libaaudio/examples/utils/AAudioArgsParser.h b/media/libaaudio/examples/utils/AAudioArgsParser.h
index ece9e6a..a5dc55f 100644
--- a/media/libaaudio/examples/utils/AAudioArgsParser.h
+++ b/media/libaaudio/examples/utils/AAudioArgsParser.h
@@ -130,10 +130,12 @@
}
int32_t getBufferCapacity() const {
+ printf("%s() returns %d\n", __func__, mBufferCapacity);
return mBufferCapacity;
}
void setBufferCapacity(int32_t frames) {
+ printf("%s(%d)\n", __func__, frames);
mBufferCapacity = frames;
}
@@ -197,7 +199,7 @@
* @param builder
*/
void applyParameters(AAudioStreamBuilder *builder) const {
- AAudioStreamBuilder_setBufferCapacityInFrames(builder, mBufferCapacity);
+ AAudioStreamBuilder_setBufferCapacityInFrames(builder, getBufferCapacity());
AAudioStreamBuilder_setChannelCount(builder, mChannelCount);
AAudioStreamBuilder_setDeviceId(builder, mDeviceId);
AAudioStreamBuilder_setFormat(builder, mFormat);
@@ -281,7 +283,7 @@
if (strlen(arg) > 2) {
policy = atoi(&arg[2]);
}
- if (!AAudio_setMMapPolicy(policy)) {
+ if (AAudio_setMMapPolicy(policy) != AAUDIO_OK) {
printf("ERROR: invalid MMAP policy mode %i\n", policy);
}
} break;