Skip to content

Commit

Permalink
Added a GetPendingBytes method to the audio backend.
Browse files Browse the repository at this point in the history
This will (eventually) make SDL_GetQueuedAudioSize() more accurate, and thus
reduce latency. Right now this isn't implemented anywhere, so we assume data
fed to the audio callback is consumed by the hardware and immediately played
to completion.
  • Loading branch information
icculus committed Jul 30, 2014
1 parent db1dd75 commit e5d49c2
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/audio/SDL_audio.c
Expand Up @@ -178,6 +178,12 @@ SDL_AudioPlayDevice_Default(_THIS)
{ /* no-op. */
}

static int
SDL_AudioGetPendingBytes_Default(_THIS)
{
return 0;
}

static Uint8 *
SDL_AudioGetDeviceBuf_Default(_THIS)
{
Expand Down Expand Up @@ -253,6 +259,7 @@ finalize_audio_entry_points(void)
FILL_STUB(ThreadInit);
FILL_STUB(WaitDevice);
FILL_STUB(PlayDevice);
FILL_STUB(GetPendingBytes);
FILL_STUB(GetDeviceBuf);
FILL_STUB(WaitDone);
FILL_STUB(CloseDevice);
Expand Down Expand Up @@ -471,7 +478,7 @@ SDL_GetQueuedAudioSize(SDL_AudioDeviceID devid)
SDL_AudioDevice *device = get_audio_device(devid);
if (device) {
current_audio.impl.LockDevice(device);
retval = device->queued_bytes;
retval = device->queued_bytes + current_audio.impl.GetPendingBytes(device);
current_audio.impl.UnlockDevice(device);
}

Expand Down
1 change: 1 addition & 0 deletions src/audio/SDL_sysaudio.h
Expand Up @@ -60,6 +60,7 @@ typedef struct SDL_AudioDriverImpl
void (*ThreadInit) (_THIS); /* Called by audio thread at start */
void (*WaitDevice) (_THIS);
void (*PlayDevice) (_THIS);
int (*GetPendingBytes) (_THIS);
Uint8 *(*GetDeviceBuf) (_THIS);
void (*WaitDone) (_THIS);
void (*CloseDevice) (_THIS);
Expand Down

0 comments on commit e5d49c2

Please sign in to comment.