OboeTester: show framesPerCallback
diff --git a/apps/OboeTester/app/src/main/cpp/NativeAudioContext.h b/apps/OboeTester/app/src/main/cpp/NativeAudioContext.h
index 74d0c8a..2f570e5 100644
--- a/apps/OboeTester/app/src/main/cpp/NativeAudioContext.h
+++ b/apps/OboeTester/app/src/main/cpp/NativeAudioContext.h
@@ -287,6 +287,10 @@
return oboeCallbackProxy.getCallbackCount();
}
+ int32_t getFramesPerCallback() {
+ return oboeCallbackProxy.getFramesPerCallback();
+ }
+
virtual void setChannelEnabled(int channelIndex, bool enabled) {}
virtual void setSignalType(int signalType) {}
diff --git a/apps/OboeTester/app/src/main/cpp/OboeStreamCallbackProxy.cpp b/apps/OboeTester/app/src/main/cpp/OboeStreamCallbackProxy.cpp
index fa9f175..17ea8f5 100644
--- a/apps/OboeTester/app/src/main/cpp/OboeStreamCallbackProxy.cpp
+++ b/apps/OboeTester/app/src/main/cpp/OboeStreamCallbackProxy.cpp
@@ -47,6 +47,8 @@
void *audioData,
int numFrames) {
mCallbackCount++;
+ mFramesPerCallback = numFrames;
+
if (mCallbackReturnStop) {
return oboe::DataCallbackResult::Stop;
}
diff --git a/apps/OboeTester/app/src/main/cpp/OboeStreamCallbackProxy.h b/apps/OboeTester/app/src/main/cpp/OboeStreamCallbackProxy.h
index d21d905..c8e1be9 100644
--- a/apps/OboeTester/app/src/main/cpp/OboeStreamCallbackProxy.h
+++ b/apps/OboeTester/app/src/main/cpp/OboeStreamCallbackProxy.h
@@ -42,6 +42,10 @@
mCallbackCount = count;
}
+ int32_t getFramesPerCallback() {
+ return mFramesPerCallback.load();
+ }
+
/**
* Called when the stream is ready to process audio.
*/
@@ -74,6 +78,7 @@
oboe::AudioStreamCallback *mCallback = nullptr;
static bool mCallbackReturnStop;
int64_t mCallbackCount = 0;
+ std::atomic<int32_t> mFramesPerCallback{0};
};
diff --git a/apps/OboeTester/app/src/main/cpp/jni-bridge.cpp b/apps/OboeTester/app/src/main/cpp/jni-bridge.cpp
index 97e09d0..d0a6b46 100644
--- a/apps/OboeTester/app/src/main/cpp/jni-bridge.cpp
+++ b/apps/OboeTester/app/src/main/cpp/jni-bridge.cpp
@@ -150,6 +150,11 @@
}
JNIEXPORT jint JNICALL
+Java_com_google_sample_oboe_manualtest_TestAudioActivity_getFramesPerCallback(JNIEnv *env, jobject) {
+ return (jint) engine.getCurrentActivity()->getFramesPerCallback();
+}
+
+JNIEXPORT jint JNICALL
Java_com_google_sample_oboe_manualtest_OboeAudioStream_startPlaybackNative(JNIEnv *env, jobject) {
return (jint) engine.getCurrentActivity()->startPlayback();
}
diff --git a/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/AudioStreamBase.java b/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/AudioStreamBase.java
index e3c8227..c4cfcd1 100644
--- a/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/AudioStreamBase.java
+++ b/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/AudioStreamBase.java
@@ -51,6 +51,7 @@
public double latency; // msec
public int state;
public long callbackCount;
+ public int framesPerCallback;
// These are constantly changing.
String dump(int framesPerBurst) {
@@ -64,10 +65,13 @@
String latencyText = (latency < 0.0)
? "?"
- : String.format("%6.1f msec", latency);
- buffer.append("latency = " + latencyText
- + ", " + convertStateToString(state)
- + ", #callbacks " + callbackCount+ "\n");
+ : String.format("%6.1f ms", latency);
+ buffer.append(
+ convertStateToString(state)
+ + ", #cb=" + callbackCount
+ + ", f/cb=" + String.format("%3d", framesPerCallback)
+ + ", latency = " + latencyText
+ + "\n");
buffer.append("buffer size = ");
if (bufferSize < 0) {
@@ -162,4 +166,5 @@
public abstract int getXRunCount();
+
}
diff --git a/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/TestAudioActivity.java b/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/TestAudioActivity.java
index d9ea057..317b07b 100644
--- a/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/TestAudioActivity.java
+++ b/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/TestAudioActivity.java
@@ -104,6 +104,7 @@
if (streamContext.configurationView != null) {
// Handler runs this on the main UI thread.
int framesPerBurst = streamContext.tester.getCurrentAudioStream().getFramesPerBurst();
+ status.framesPerCallback = getFramesPerCallback();
final String msg = status.dump(framesPerBurst);
streamContext.configurationView.setStatusText(msg);
updateStreamDisplay();
@@ -423,6 +424,7 @@
private native int pauseNative();
private native int stopNative();
protected native void setActivityType(int activityType);
+ private native int getFramesPerCallback();
public void startAudio() {
int result = startNative();