From 9cf2382a913add09726934203270215beae3415e Mon Sep 17 00:00:00 2001 From: Phil Burk Date: Fri, 17 Apr 2020 11:53:35 -0700 Subject: [PATCH] aaudio test: check for uninitialized callback buffer This can cause unexpected noise. Bug: 154342174 Test: this is a test Change-Id: I358dfa66ed5922eede38b902c36973740f6ab494 --- media/libaaudio/tests/test_various.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/media/libaaudio/tests/test_various.cpp b/media/libaaudio/tests/test_various.cpp index 5bb104600c..41693e884b 100644 --- a/media/libaaudio/tests/test_various.cpp +++ b/media/libaaudio/tests/test_various.cpp @@ -28,15 +28,20 @@ // Callback function that does nothing. aaudio_data_callback_result_t NoopDataCallbackProc( - AAudioStream *stream, - void *userData, + AAudioStream * stream, + void * /* userData */, void *audioData, int32_t numFrames ) { - (void) stream; - (void) userData; - (void) audioData; - (void) numFrames; + int channels = AAudioStream_getChannelCount(stream); + int numSamples = channels * numFrames; + bool allZeros = true; + float * const floatData = reinterpret_cast(audioData); + for (int i = 0; i < numSamples; i++) { + allZeros &= (floatData[i] == 0.0f); + floatData[i] = 0.0f; + } + EXPECT_TRUE(allZeros); return AAUDIO_CALLBACK_RESULT_CONTINUE; } @@ -56,6 +61,7 @@ void checkReleaseThenClose(aaudio_performance_mode_t perfMode, nullptr); AAudioStreamBuilder_setPerformanceMode(aaudioBuilder, perfMode); AAudioStreamBuilder_setSharingMode(aaudioBuilder, sharingMode); + AAudioStreamBuilder_setFormat(aaudioBuilder, AAUDIO_FORMAT_PCM_FLOAT); // Create an AAudioStream using the Builder. ASSERT_EQ(AAUDIO_OK, @@ -114,6 +120,7 @@ void checkStateTransition(aaudio_performance_mode_t perfMode, // Request stream properties. AAudioStreamBuilder_setDataCallback(aaudioBuilder, NoopDataCallbackProc, nullptr); AAudioStreamBuilder_setPerformanceMode(aaudioBuilder, perfMode); + AAudioStreamBuilder_setFormat(aaudioBuilder, AAUDIO_FORMAT_PCM_FLOAT); // Create an AAudioStream using the Builder. ASSERT_EQ(AAUDIO_OK, AAudioStreamBuilder_openStream(aaudioBuilder, &aaudioStream));