From 5b77ad54c41608ae95597c141fbebeaa95563446 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Thu, 9 Feb 2023 17:49:35 -0800
Subject: [PATCH] Fixed order and constness of parameters to
SDL_ConvertAudioSamples()
---
docs/README-migration.md | 4 ++--
include/SDL3/SDL_audio.h | 18 +++++++++---------
src/audio/SDL_audio.c | 18 +++++++++---------
src/dynapi/SDL_dynapi_procs.h | 2 +-
test/testresample.c | 4 ++--
5 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/docs/README-migration.md b/docs/README-migration.md
index 6eecb10d4b38..989d245aa7f9 100644
--- a/docs/README-migration.md
+++ b/docs/README-migration.md
@@ -70,8 +70,8 @@ should be changed to:
```c
Uint8 *dst_data = NULL;
int dst_len = 0;
- if (SDL_ConvertAudioSamples(src_format, src_channels, src_rate, src_len, src_data
- dst_format, dst_channels, dst_rate, &dst_len, &dst_data) < 0) {
+ if (SDL_ConvertAudioSamples(src_format, src_channels, src_rate, src_data, src_len
+ dst_format, dst_channels, dst_rate, &dst_data, &dst_len) < 0) {
/* error */
}
do_something(dst_data, dst_len);
diff --git a/include/SDL3/SDL_audio.h b/include/SDL3/SDL_audio.h
index 09223a62f254..0d445798b8d5 100644
--- a/include/SDL3/SDL_audio.h
+++ b/include/SDL3/SDL_audio.h
@@ -555,7 +555,7 @@ extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDevice
*
* \param dev a device opened by SDL_OpenAudioDevice()
* \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
+ * SDL_GetError() for more information.
*
* \since This function is available since SDL 3.0.0.
*
@@ -580,7 +580,7 @@ extern DECLSPEC int SDLCALL SDL_PlayAudioDevice(SDL_AudioDeviceID dev);
*
* \param dev a device opened by SDL_OpenAudioDevice()
* \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
+ * SDL_GetError() for more information.
*
* \since This function is available since SDL 3.0.0.
*
@@ -1025,7 +1025,7 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
*
* \param dev the device ID of which to clear the audio queue
* \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
+ * SDL_GetError() for more information.
*
* \since This function is available since SDL 3.0.0.
*
@@ -1079,7 +1079,7 @@ extern DECLSPEC int SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
*
* \param dev the ID of the device to be locked
* \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
+ * SDL_GetError() for more information.
*
* \since This function is available since SDL 3.0.0.
*
@@ -1132,14 +1132,14 @@ extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
* \param src_format The format of the source audio
* \param src_channels The number of channels of the source audio
* \param src_rate The sampling rate of the source audio
- * \param src_len The len of src_data
* \param src_data The audio data to be converted
+ * \param src_len The len of src_data
* \param dst_format The format of the desired audio output
* \param dst_channels The number of channels of the desired audio output
* \param dst_rate The sampling rate of the desired audio output
- * \param dst_len Will be filled with the len of dst_data
* \param dst_data Will be filled with a pointer to converted audio data,
* which should be freed with SDL_free().
+ * \param dst_len Will be filled with the len of dst_data
* \returns 0 on success or a negative error code on failure. On error,
* *dst_data will be NULL and so not allocated.
*
@@ -1150,13 +1150,13 @@ extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
extern DECLSPEC int SDLCALL SDL_ConvertAudioSamples(SDL_AudioFormat src_format,
Uint8 src_channels,
int src_rate,
+ const Uint8 *src_data,
int src_len,
- Uint8 *src_data,
SDL_AudioFormat dst_format,
Uint8 dst_channels,
int dst_rate,
- int *dst_len,
- Uint8 **dst_data);
+ Uint8 **dst_data,
+ int *dst_len);
/* Ends C function definitions when using C++ */
#ifdef __cplusplus
diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c
index 6abba6b679db..23ee40053bcf 100644
--- a/src/audio/SDL_audio.c
+++ b/src/audio/SDL_audio.c
@@ -1674,8 +1674,8 @@ void SDL_CalculateAudioSpec(SDL_AudioSpec *spec)
}
int SDL_ConvertAudioSamples(
- SDL_AudioFormat src_format, Uint8 src_channels, int src_rate, int src_len, Uint8 *src_data,
- SDL_AudioFormat dst_format, Uint8 dst_channels, int dst_rate, int *dst_len, Uint8 **dst_data)
+ SDL_AudioFormat src_format, Uint8 src_channels, int src_rate, const Uint8 *src_data, int src_len,
+ SDL_AudioFormat dst_format, Uint8 dst_channels, int dst_rate, Uint8 **dst_data, int *dst_len)
{
int ret = -1;
SDL_AudioStream *stream = NULL;
@@ -1684,21 +1684,21 @@ int SDL_ConvertAudioSamples(
int real_dst_len;
- if (src_len < 0) {
- return SDL_InvalidParamError("src_len");
- }
if (src_data == NULL) {
return SDL_InvalidParamError("src_data");
}
- if (dst_len == NULL) {
- return SDL_InvalidParamError("dst_len");
+ if (src_len < 0) {
+ return SDL_InvalidParamError("src_len");
}
if (dst_data == NULL) {
return SDL_InvalidParamError("dst_data");
}
+ if (dst_len == NULL) {
+ return SDL_InvalidParamError("dst_len");
+ }
- *dst_len = 0;
*dst_data = NULL;
+ *dst_len = 0;
stream = SDL_CreateAudioStream(src_format, src_channels, src_rate, dst_format, dst_channels, dst_rate);
if (stream == NULL) {
@@ -1737,8 +1737,8 @@ int SDL_ConvertAudioSamples(
end:
if (ret != 0) {
SDL_free(*dst_data);
- *dst_len = 0;
*dst_data = NULL;
+ *dst_len = 0;
}
SDL_DestroyAudioStream(stream);
return ret;
diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h
index 4b66477b6806..6b68bec352b0 100644
--- a/src/dynapi/SDL_dynapi_procs.h
+++ b/src/dynapi/SDL_dynapi_procs.h
@@ -900,7 +900,7 @@ SDL_DYNAPI_PROC(int,SDL_GetRenderVSync,(SDL_Renderer *a, int *b),(a,b),return)
SDL_DYNAPI_PROC(int,SDL_PlayAudioDevice,(SDL_AudioDeviceID a),(a),return)
SDL_DYNAPI_PROC(void*,SDL_aligned_alloc,(size_t a, size_t b),(a,b),return)
SDL_DYNAPI_PROC(void,SDL_aligned_free,(void *a),(a),)
-SDL_DYNAPI_PROC(int,SDL_ConvertAudioSamples,(SDL_AudioFormat a, Uint8 b, int c, int d, Uint8 *e, SDL_AudioFormat f, Uint8 g, int h, int *i, Uint8 **j),(a,b,c,d,e,f,g,h,i,j),return)
+SDL_DYNAPI_PROC(int,SDL_ConvertAudioSamples,(SDL_AudioFormat a, Uint8 b, int c, const Uint8 *d, int e, SDL_AudioFormat f, Uint8 g, int h, Uint8 **i, int *j),(a,b,c,d,e,f,g,h,i,j),return)
SDL_DYNAPI_PROC(SDL_DisplayID*,SDL_GetDisplays,(int *a),(a),return)
SDL_DYNAPI_PROC(SDL_DisplayID,SDL_GetPrimaryDisplay,(void),(),return)
SDL_DYNAPI_PROC(const SDL_DisplayMode**,SDL_GetFullscreenDisplayModes,(SDL_DisplayID a, int *b),(a,b),return)
diff --git a/test/testresample.c b/test/testresample.c
index 15eb76c4917f..281c6b71d440 100644
--- a/test/testresample.c
+++ b/test/testresample.c
@@ -53,8 +53,8 @@ int main(int argc, char **argv)
goto end;
}
- if (SDL_ConvertAudioSamples(spec.format, spec.channels, spec.freq, len, data,
- spec.format, cvtchans, cvtfreq, &dst_len, &dst_buf) < 0) {
+ if (SDL_ConvertAudioSamples(spec.format, spec.channels, spec.freq, data, len,
+ spec.format, cvtchans, cvtfreq, &dst_buf, &dst_len) < 0) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "failed to convert samples: %s\n", SDL_GetError());
ret = 4;
goto end;