aaudio examples: allow -n0 for minimum buffer size
Default buffer size will be 2.
Bug: 129545119
Test: should see requested BufferSize = 0
Test: adb shell write_sine_callback -pl -n0
Change-Id: I85d2792537aebec17d96dc7df6f79e34b9f8fddd
diff --git a/media/libaaudio/examples/loopback/src/loopback.cpp b/media/libaaudio/examples/loopback/src/loopback.cpp
index c7c42eb..49d921f 100644
--- a/media/libaaudio/examples/loopback/src/loopback.cpp
+++ b/media/libaaudio/examples/loopback/src/loopback.cpp
@@ -40,7 +40,8 @@
// V0.4.01 = add -h hang option
// fix -n option to set output buffer for -tm
// plot first glitch
-#define APP_VERSION "0.4.01"
+// V0.4.02 = allow -n0 for minimal buffer size
+#define APP_VERSION "0.4.02"
// Tag for machine readable results as property = value pairs
#define RESULT_TAG "RESULT: "
@@ -535,7 +536,7 @@
printf("INPUT stream ----------------------------------------\n");
// Use different parameters for the input.
argParser.setDeviceId(requestedInputDeviceId);
- argParser.setNumberOfBursts(AAUDIO_UNSPECIFIED);
+ argParser.setNumberOfBursts(AAudioParameters::kDefaultNumberOfBursts);
argParser.setFormat(requestedInputFormat);
argParser.setPerformanceMode(inputPerformanceLevel);
argParser.setChannelCount(requestedInputChannelCount);
diff --git a/media/libaaudio/examples/utils/AAudioArgsParser.h b/media/libaaudio/examples/utils/AAudioArgsParser.h
index f5ed7aa..8bb2e86 100644
--- a/media/libaaudio/examples/utils/AAudioArgsParser.h
+++ b/media/libaaudio/examples/utils/AAudioArgsParser.h
@@ -225,6 +225,8 @@
}
}
+ static constexpr int32_t kDefaultNumberOfBursts = 2;
+
private:
int32_t mChannelCount = AAUDIO_UNSPECIFIED;
aaudio_format_t mFormat = AAUDIO_FORMAT_UNSPECIFIED;
@@ -239,7 +241,7 @@
aaudio_content_type_t mContentType = AAUDIO_UNSPECIFIED;
aaudio_input_preset_t mInputPreset = AAUDIO_UNSPECIFIED;
- int32_t mNumberOfBursts = AAUDIO_UNSPECIFIED;
+ int32_t mNumberOfBursts = kDefaultNumberOfBursts;
int32_t mFramesPerCallback = AAUDIO_UNSPECIFIED;
};
@@ -352,7 +354,7 @@
printf(" 1 = _NEVER, never use MMAP\n");
printf(" 2 = _AUTO, use MMAP if available, default for -m with no number\n");
printf(" 3 = _ALWAYS, use MMAP or fail\n");
- printf(" -n{numberOfBursts} for setBufferSize\n");
+ printf(" -n{numberOfBursts} for setBufferSize, default %d\n", kDefaultNumberOfBursts);
printf(" -p{performanceMode} set output AAUDIO_PERFORMANCE_MODE*, default NONE\n");
printf(" n for _NONE\n");
printf(" l for _LATENCY\n");
@@ -407,17 +409,28 @@
getFormat(), AAudioStream_getFormat(stream));
int32_t framesPerBurst = AAudioStream_getFramesPerBurst(stream);
- int32_t sizeFrames = AAudioStream_getBufferSizeInFrames(stream);
printf(" Buffer: burst = %d\n", framesPerBurst);
+
+ int32_t sizeFrames = AAudioStream_getBufferSizeInFrames(stream);
if (framesPerBurst > 0) {
- printf(" Buffer: size = %d = (%d * %d) + %d\n",
+ int32_t requestedSize = getNumberOfBursts() * framesPerBurst;
+ printf(" BufferSize: requested = %4d, actual = %4d = (%d * %d) + %d\n",
+ requestedSize,
sizeFrames,
(sizeFrames / framesPerBurst),
framesPerBurst,
(sizeFrames % framesPerBurst));
+ } else {
+ printf(" BufferSize: %d\n", sizeFrames);
}
- printf(" Capacity: requested = %d, actual = %d\n", getBufferCapacity(),
- AAudioStream_getBufferCapacityInFrames(stream));
+
+ int32_t capacityFrames = AAudioStream_getBufferCapacityInFrames(stream);
+ printf(" Capacity: requested = %4d, actual = %4d = (%d * %d) + %d\n",
+ getBufferCapacity(),
+ capacityFrames,
+ (capacityFrames / framesPerBurst),
+ framesPerBurst,
+ (capacityFrames % framesPerBurst));
printf(" CallbackSize: requested = %d, actual = %d\n", getFramesPerCallback(),
AAudioStream_getFramesPerDataCallback(stream));
diff --git a/media/libaaudio/examples/utils/AAudioSimplePlayer.h b/media/libaaudio/examples/utils/AAudioSimplePlayer.h
index 4373fa9..fd1fc45 100644
--- a/media/libaaudio/examples/utils/AAudioSimplePlayer.h
+++ b/media/libaaudio/examples/utils/AAudioSimplePlayer.h
@@ -120,10 +120,9 @@
if (result == AAUDIO_OK) {
int32_t sizeInBursts = parameters.getNumberOfBursts();
- if (sizeInBursts > 0) {
- int32_t framesPerBurst = AAudioStream_getFramesPerBurst(mStream);
- AAudioStream_setBufferSizeInFrames(mStream, sizeInBursts * framesPerBurst);
- }
+ int32_t framesPerBurst = AAudioStream_getFramesPerBurst(mStream);
+ int32_t bufferSizeFrames = sizeInBursts * framesPerBurst;
+ AAudioStream_setBufferSizeInFrames(mStream, bufferSizeFrames);
}
AAudioStreamBuilder_delete(builder);
diff --git a/media/libaaudio/examples/write_sine/src/write_sine_callback.cpp b/media/libaaudio/examples/write_sine/src/write_sine_callback.cpp
index 2b05f10..ca60233 100644
--- a/media/libaaudio/examples/write_sine/src/write_sine_callback.cpp
+++ b/media/libaaudio/examples/write_sine/src/write_sine_callback.cpp
@@ -31,7 +31,7 @@
#include "AAudioSimplePlayer.h"
#include "AAudioArgsParser.h"
-#define APP_VERSION "0.1.6"
+#define APP_VERSION "0.1.7"
constexpr int32_t kDefaultHangTimeMSec = 10;