diff --git a/include/SDL3/SDL_audio.h b/include/SDL3/SDL_audio.h index 8ca1a65ee..86d58a89d 100644 --- a/include/SDL3/SDL_audio.h +++ b/include/SDL3/SDL_audio.h @@ -84,6 +84,7 @@ typedef Uint16 SDL_AudioFormat; #define SDL_AUDIO_MASK_BIG_ENDIAN (1<<12) #define SDL_AUDIO_MASK_SIGNED (1<<15) #define SDL_AUDIO_BITSIZE(x) ((x) & SDL_AUDIO_MASK_BITSIZE) +#define SDL_AUDIO_BYTESIZE(x) (SDL_AUDIO_BITSIZE(x) / 8) #define SDL_AUDIO_ISFLOAT(x) ((x) & SDL_AUDIO_MASK_FLOAT) #define SDL_AUDIO_ISBIGENDIAN(x) ((x) & SDL_AUDIO_MASK_BIG_ENDIAN) #define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x)) diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index 5171d326d..b0c413169 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -766,7 +766,7 @@ SDL_bool SDL_OutputAudioThreadIterate(SDL_AudioDevice *device) case MIXSTRATEGY_MIX: { //SDL_Log("MIX STRATEGY: MIX"); float *mix_buffer = (float *) ((device->spec.format == SDL_AUDIO_F32) ? device_buffer : device->mix_buffer); - const int needed_samples = buffer_size / (SDL_AUDIO_BITSIZE(device->spec.format) / 8); + const int needed_samples = buffer_size / SDL_AUDIO_BYTESIZE(device->spec.format); const int work_buffer_size = needed_samples * sizeof (float); SDL_AudioSpec outspec; @@ -832,7 +832,7 @@ SDL_bool SDL_OutputAudioThreadIterate(SDL_AudioDevice *device) void SDL_OutputAudioThreadShutdown(SDL_AudioDevice *device) { SDL_assert(!device->iscapture); - const int samples = (device->buffer_size / (SDL_AUDIO_BITSIZE(device->spec.format) / 8)) / device->spec.channels; + const int samples = (device->buffer_size / SDL_AUDIO_BYTESIZE(device->spec.format)) / device->spec.channels; // Wait for the audio to drain. !!! FIXME: don't bother waiting if device is lost. SDL_Delay(((samples * 1000) / device->spec.freq) * 2); current_audio.impl.ThreadDeinit(device); @@ -1261,7 +1261,7 @@ static int GetDefaultSampleFramesFromFreq(int freq) void SDL_UpdatedAudioDeviceFormat(SDL_AudioDevice *device) { device->silence_value = SDL_GetSilenceValueForFormat(device->spec.format); - device->buffer_size = device->sample_frames * (SDL_AUDIO_BITSIZE(device->spec.format) / 8) * device->spec.channels; + device->buffer_size = device->sample_frames * SDL_AUDIO_BYTESIZE(device->spec.format) * device->spec.channels; device->work_buffer_size = device->sample_frames * sizeof (float) * device->spec.channels; device->work_buffer_size = SDL_max(device->buffer_size, device->work_buffer_size); // just in case we end up with a 64-bit audio format at some point. } diff --git a/src/audio/SDL_audiocvt.c b/src/audio/SDL_audiocvt.c index aaa8510b5..326256ba8 100644 --- a/src/audio/SDL_audiocvt.c +++ b/src/audio/SDL_audiocvt.c @@ -1048,8 +1048,8 @@ void ConvertAudio(int num_frames, const void *src, SDL_AudioFormat src_format, i // Calculate the largest frame size needed to convert between the two formats. static int CalculateMaxFrameSize(SDL_AudioFormat src_format, int src_channels, SDL_AudioFormat dst_format, int dst_channels) { - const int src_format_size = SDL_AUDIO_BITSIZE(src_format) / 8; - const int dst_format_size = SDL_AUDIO_BITSIZE(dst_format) / 8; + const int src_format_size = SDL_AUDIO_BYTESIZE(src_format); + const int dst_format_size = SDL_AUDIO_BYTESIZE(dst_format); const int max_app_format_size = SDL_max(src_format_size, dst_format_size); const int max_format_size = SDL_max(max_app_format_size, sizeof (float)); // ConvertAudio and ResampleAudio use floats. const int max_channels = SDL_max(src_channels, dst_channels); @@ -1058,7 +1058,7 @@ static int CalculateMaxFrameSize(SDL_AudioFormat src_format, int src_channels, S static int GetAudioSpecFrameSize(const SDL_AudioSpec* spec) { - return (SDL_AUDIO_BITSIZE(spec->format) / 8) * spec->channels; + return SDL_AUDIO_BYTESIZE(spec->format) * spec->channels; } static Sint64 GetStreamResampleRate(SDL_AudioStream* stream, int src_freq) diff --git a/src/audio/alsa/SDL_alsa_audio.c b/src/audio/alsa/SDL_alsa_audio.c index 73181761c..b8086a8ca 100644 --- a/src/audio/alsa/SDL_alsa_audio.c +++ b/src/audio/alsa/SDL_alsa_audio.c @@ -355,7 +355,7 @@ static int ALSA_PlayDevice(SDL_AudioDevice *device, const Uint8 *buffer, int buf { SDL_assert(buffer == device->hidden->mixbuf); Uint8 *sample_buf = device->hidden->mixbuf; - const int frame_size = ((SDL_AUDIO_BITSIZE(device->spec.format)) / 8) * + const int frame_size = SDL_AUDIO_BYTESIZE(device->spec.format) * device->spec.channels; snd_pcm_uframes_t frames_left = (snd_pcm_uframes_t) (buflen / frame_size); @@ -402,7 +402,7 @@ static Uint8 *ALSA_GetDeviceBuf(SDL_AudioDevice *device, int *buffer_size) static int ALSA_CaptureFromDevice(SDL_AudioDevice *device, void *buffer, int buflen) { Uint8 *sample_buf = (Uint8 *)buffer; - const int frame_size = ((SDL_AUDIO_BITSIZE(device->spec.format)) / 8) * + const int frame_size = SDL_AUDIO_BYTESIZE(device->spec.format) * device->spec.channels; const int total_frames = buflen / frame_size; snd_pcm_uframes_t frames_left = total_frames; diff --git a/src/audio/emscripten/SDL_emscriptenaudio.c b/src/audio/emscripten/SDL_emscriptenaudio.c index 62780dcfc..df823f132 100644 --- a/src/audio/emscripten/SDL_emscriptenaudio.c +++ b/src/audio/emscripten/SDL_emscriptenaudio.c @@ -38,7 +38,7 @@ static Uint8 *EMSCRIPTENAUDIO_GetDeviceBuf(SDL_AudioDevice *device, int *buffer_ static int EMSCRIPTENAUDIO_PlayDevice(SDL_AudioDevice *device, const Uint8 *buffer, int buffer_size) { - const int framelen = (SDL_AUDIO_BITSIZE(device->spec.format) / 8) * device->spec.channels; + const int framelen = SDL_AUDIO_BYTESIZE(device->spec.format) * device->spec.channels; MAIN_THREAD_EM_ASM({ var SDL3 = Module['SDL3']; var numChannels = SDL3.audio.currentOutputBuffer['numberOfChannels']; diff --git a/src/audio/n3ds/SDL_n3dsaudio.c b/src/audio/n3ds/SDL_n3dsaudio.c index 7bb961d07..f8c6034b2 100644 --- a/src/audio/n3ds/SDL_n3dsaudio.c +++ b/src/audio/n3ds/SDL_n3dsaudio.c @@ -161,7 +161,7 @@ static int N3DSAUDIO_OpenDevice(SDL_AudioDevice *device) SDL_memset(device->hidden->waveBuf, 0, sizeof(ndspWaveBuf) * NUM_BUFFERS); - const int sample_frame_size = device->spec.channels * (SDL_AUDIO_BITSIZE(device->spec.format) / 8); + const int sample_frame_size = device->spec.channels * SDL_AUDIO_BYTESIZE(device->spec.format); for (unsigned i = 0; i < NUM_BUFFERS; i++) { device->hidden->waveBuf[i].data_vaddr = data_vaddr; device->hidden->waveBuf[i].nsamples = device->buffer_size / sample_frame_size; diff --git a/src/audio/netbsd/SDL_netbsdaudio.c b/src/audio/netbsd/SDL_netbsdaudio.c index 899fe3c34..d8aafc08b 100644 --- a/src/audio/netbsd/SDL_netbsdaudio.c +++ b/src/audio/netbsd/SDL_netbsdaudio.c @@ -130,7 +130,7 @@ static void NETBSDAUDIO_WaitDevice(SDL_AudioDevice *device) SDL_AudioDeviceDisconnected(device); return; } - const size_t remain = (size_t)((iscapture ? info.record.seek : info.play.seek) * (SDL_AUDIO_BITSIZE(device->spec.format) / 8)); + const size_t remain = (size_t)((iscapture ? info.record.seek : info.play.seek) * SDL_AUDIO_BYTESIZE(device->spec.format)); if (!iscapture && (remain >= device->buffer_size)) { SDL_Delay(10); } else if (iscapture && (remain < device->buffer_size)) { @@ -181,7 +181,7 @@ static void NETBSDAUDIO_FlushCapture(SDL_AudioDevice *device) struct SDL_PrivateAudioData *h = device->hidden; audio_info_t info; if (ioctl(device->hidden->audio_fd, AUDIO_GETINFO, &info) == 0) { - size_t remain = (size_t)(info.record.seek * (SDL_AUDIO_BITSIZE(device->spec.format) / 8)); + size_t remain = (size_t)(info.record.seek * SDL_AUDIO_BYTESIZE(device->spec.format)); while (remain > 0) { char buf[512]; const size_t len = SDL_min(sizeof(buf), remain); diff --git a/src/audio/pipewire/SDL_pipewire.c b/src/audio/pipewire/SDL_pipewire.c index 08083a01a..8c6720bf0 100644 --- a/src/audio/pipewire/SDL_pipewire.c +++ b/src/audio/pipewire/SDL_pipewire.c @@ -1108,7 +1108,7 @@ static int PIPEWIRE_OpenDevice(SDL_AudioDevice *device) } /* Size of a single audio frame in bytes */ - priv->stride = (SDL_AUDIO_BITSIZE(device->spec.format) / 8) * device->spec.channels; + priv->stride = SDL_AUDIO_BYTESIZE(device->spec.format) * device->spec.channels; if (device->sample_frames < min_period) { device->sample_frames = min_period; diff --git a/src/audio/wasapi/SDL_wasapi.c b/src/audio/wasapi/SDL_wasapi.c index a50228487..36a9c85ec 100644 --- a/src/audio/wasapi/SDL_wasapi.c +++ b/src/audio/wasapi/SDL_wasapi.c @@ -621,7 +621,7 @@ static int mgmtthrtask_PrepDevice(void *userdata) return -1; } - device->hidden->framesize = (SDL_AUDIO_BITSIZE(device->spec.format) / 8) * device->spec.channels; + device->hidden->framesize = SDL_AUDIO_BYTESIZE(device->spec.format) * device->spec.channels; if (device->iscapture) { IAudioCaptureClient *capture = NULL; diff --git a/test/testaudio.c b/test/testaudio.c index d012c933a..bbe91e52a 100644 --- a/test/testaudio.c +++ b/test/testaudio.c @@ -513,7 +513,7 @@ static void StreamThing_ontick(Thing *thing, Uint64 now) if (!available || (SDL_GetAudioStreamFormat(thing->data.stream.stream, NULL, &spec) < 0)) { DestroyThingInPoof(thing); } else { - const int ticksleft = (int) ((((Uint64) ((available / (SDL_AUDIO_BITSIZE(spec.format) / 8)) / spec.channels)) * 1000) / spec.freq); + const int ticksleft = (int) ((((Uint64) ((available / SDL_AUDIO_BYTESIZE(spec.format)) / spec.channels)) * 1000) / spec.freq); const float pct = thing->data.stream.total_ticks ? (((float) (ticksleft)) / ((float) thing->data.stream.total_ticks)) : 0.0f; thing->progress = 1.0f - pct; } @@ -553,7 +553,7 @@ static void StreamThing_ondrop(Thing *thing, int button, float x, float y) SDL_UnbindAudioStream(thing->data.stream.stream); /* unbind from current device */ if (thing->line_connected_to->what == THING_LOGDEV_CAPTURE) { SDL_FlushAudioStream(thing->data.stream.stream); - thing->data.stream.total_ticks = (int) (((((Uint64) (SDL_GetAudioStreamAvailable(thing->data.stream.stream) / (SDL_AUDIO_BITSIZE(spec->format) / 8))) / spec->channels) * 1000) / spec->freq); + thing->data.stream.total_ticks = (int) (((((Uint64) (SDL_GetAudioStreamAvailable(thing->data.stream.stream) / SDL_AUDIO_BYTESIZE(spec->format))) / spec->channels) * 1000) / spec->freq); } } @@ -596,7 +596,7 @@ static Thing *CreateStreamThing(const SDL_AudioSpec *spec, const Uint8 *buf, con if (buf && buflen) { SDL_PutAudioStreamData(thing->data.stream.stream, buf, (int) buflen); SDL_FlushAudioStream(thing->data.stream.stream); - thing->data.stream.total_ticks = (int) (((((Uint64) (SDL_GetAudioStreamAvailable(thing->data.stream.stream) / (SDL_AUDIO_BITSIZE(spec->format) / 8))) / spec->channels) * 1000) / spec->freq); + thing->data.stream.total_ticks = (int) (((((Uint64) (SDL_GetAudioStreamAvailable(thing->data.stream.stream) / SDL_AUDIO_BYTESIZE(spec->format))) / spec->channels) * 1000) / spec->freq); } thing->ontick = StreamThing_ontick; thing->ondrag = StreamThing_ondrag; diff --git a/test/testaudiostreamdynamicresample.c b/test/testaudiostreamdynamicresample.c index a1f4c42c1..69cee209b 100644 --- a/test/testaudiostreamdynamicresample.c +++ b/test/testaudiostreamdynamicresample.c @@ -292,7 +292,7 @@ static void loop(void) if (SDL_GetAudioStreamFormat(stream, &src_spec, &dst_spec) == 0) { available_bytes = SDL_GetAudioStreamAvailable(stream); - available_seconds = (float)available_bytes / (float)(SDL_AUDIO_BITSIZE(dst_spec.format) / 8 * dst_spec.freq * dst_spec.channels); + available_seconds = (float)available_bytes / (float)(SDL_AUDIO_BYTESIZE(dst_spec.format) * dst_spec.freq * dst_spec.channels); /* keep it looping. */ if (auto_loop && (available_seconds < 10.0f)) { diff --git a/test/testautomation_audio.c b/test/testautomation_audio.c index fe397bb57..16dd085fb 100644 --- a/test/testautomation_audio.c +++ b/test/testautomation_audio.c @@ -712,8 +712,8 @@ static int audio_convertAudio(void *arg) 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; + src_samplesize = SDL_AUDIO_BYTESIZE(spec1.format) * spec1.channels; + dst_samplesize = SDL_AUDIO_BYTESIZE(spec2.format) * spec2.channels; src_len = l * src_samplesize; SDLTest_Log("Creating dummy sample buffer of %i length (%i bytes)", l, src_len);