From 958b3cfaea40d02bf13136a6ac8f51b3faa625a8 Mon Sep 17 00:00:00 2001
From: Brick <[EMAIL REDACTED]>
Date: Thu, 24 Aug 2023 18:55:40 +0100
Subject: [PATCH] Tweaked and enabled audio_convertAudio test
---
test/testautomation_audio.c | 41 +++++++++++++++++++------------------
1 file changed, 21 insertions(+), 20 deletions(-)
diff --git a/test/testautomation_audio.c b/test/testautomation_audio.c
index b43b8718bd9c..ef35dc2ffe1e 100644
--- a/test/testautomation_audio.c
+++ b/test/testautomation_audio.c
@@ -692,14 +692,13 @@ static int audio_convertAudio(void *arg)
} else {
Uint8 *dst_buf = NULL, *src_buf = NULL;
int dst_len = 0, src_len = 0, real_dst_len = 0;
- int l = 64;
+ int l = 64, m;
int src_samplesize, dst_samplesize;
+ int src_silence, dst_silence;
src_samplesize = (SDL_AUDIO_BITSIZE(spec1.format) / 8) * spec1.channels;
dst_samplesize = (SDL_AUDIO_BITSIZE(spec2.format) / 8) * spec2.channels;
-
- /* Create some random data to convert */
src_len = l * src_samplesize;
SDLTest_Log("Creating dummy sample buffer of %i length (%i bytes)", l, src_len);
src_buf = (Uint8 *)SDL_malloc(src_len);
@@ -708,15 +707,11 @@ static int audio_convertAudio(void *arg)
return TEST_ABORTED;
}
- src_len = src_len & ~(src_samplesize - 1);
- dst_len = dst_samplesize * (src_len / src_samplesize);
- if (spec1.freq < spec2.freq) {
- const double mult = ((double)spec2.freq) / ((double)spec1.freq);
- dst_len *= (int) SDL_ceil(mult);
- }
+ src_silence = SDL_GetSilenceValueForFormat(spec1.format);
+ SDL_memset(src_buf, src_silence, src_len);
- dst_len = dst_len & ~(dst_samplesize - 1);
- dst_buf = (Uint8 *)SDL_calloc(1, dst_len);
+ dst_len = ((int)((((Sint64)l * spec2.freq) - 1) / spec1.freq) + 1) * dst_samplesize;
+ dst_buf = (Uint8 *)SDL_malloc(dst_len);
SDLTest_AssertCheck(dst_buf != NULL, "Check dst data buffer to convert is not NULL");
if (dst_buf == NULL) {
return TEST_ABORTED;
@@ -728,18 +723,28 @@ static int audio_convertAudio(void *arg)
return TEST_ABORTED;
}
+ real_dst_len = SDL_GetAudioStreamAvailable(stream);
+ SDLTest_AssertCheck(dst_len == real_dst_len, "Verify available; expected: %i; got: %i", dst_len, real_dst_len);
+
real_dst_len = SDL_GetAudioStreamData(stream, dst_buf, dst_len);
- SDLTest_AssertCheck(real_dst_len > 0, "Verify result value; expected: > 0; got: %i", real_dst_len);
- if (real_dst_len < 0) {
+ SDLTest_AssertCheck(dst_len == real_dst_len, "Verify result value; expected: %i; got: %i", dst_len, real_dst_len);
+ if (dst_len != real_dst_len) {
return TEST_ABORTED;
}
+ dst_silence = SDL_GetSilenceValueForFormat(spec2.format);
+
+ for (m = 0; m < real_dst_len; ++m) {
+ if (dst_buf[m] != dst_silence) {
+ SDLTest_LogError("Output buffer is not silent");
+ return TEST_ABORTED;
+ }
+ }
+
SDL_DestroyAudioStream(stream);
/* Free converted buffer */
SDL_free(src_buf);
SDL_free(dst_buf);
-
-
}
}
}
@@ -1101,12 +1106,8 @@ static const SDLTest_TestCaseReference audioTest9 = {
audio_lockUnlockOpenAudioDevice, "audio_lockUnlockOpenAudioDevice", "Locks and unlocks an open audio device.", TEST_ENABLED
};
-/* TODO: enable test when SDL_ConvertAudio segfaults on cygwin have been fixed.
- * TODO: re-check, since this was changer to AudioStream */
-/* For debugging, test case can be run manually using --filter audio_convertAudio */
-
static const SDLTest_TestCaseReference audioTest10 = {
- audio_convertAudio, "audio_convertAudio", "Convert audio using available formats.", TEST_DISABLED
+ audio_convertAudio, "audio_convertAudio", "Convert audio using available formats.", TEST_ENABLED
};
/* TODO: enable test when SDL_AudioDeviceConnected has been implemented. */