From 96735b8958e9d27d894fd7a7feef0d83ced4e060 Mon Sep 17 00:00:00 2001 From: Aaron Wishnick Date: Tue, 12 Aug 2008 01:03:05 +0000 Subject: [PATCH] More streamer work. --- src/audio/SDL_audio.c | 6 ++++-- src/audio/SDL_audio_c.h | 8 -------- src/audio/SDL_sysaudio.h | 12 ++++++++++++ 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index 2b0a0c62f..36fb1ff2f 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -282,7 +282,7 @@ int SDL_StreamLength(SDL_AudioStreamer * stream) { } /* Initialize the stream by allocating the buffer and setting the read/write heads to the beginning */ -int SDL_StreamInit(SDL_AudioStreamer * stream, int max_len) { +int SDL_StreamInit(SDL_AudioStreamer * stream, int max_len, Uint8 silence) { int i; /* First try to allocate the buffer */ @@ -297,7 +297,7 @@ int SDL_StreamInit(SDL_AudioStreamer * stream, int max_len) { /* Zero out the buffer */ for(i = 0; i < max_len; ++i) { - stream->buffer[i] = 0; + stream->buffer[i] = silence; } } @@ -339,6 +339,8 @@ SDL_RunAudio(void *devicep) silence = device->spec.silence; stream_len = device->spec.size; } + + /* Determine if the streamer is necessary here */ /* Loop, filling the audio buffers */ while (device->enabled) { diff --git a/src/audio/SDL_audio_c.h b/src/audio/SDL_audio_c.h index f8a05ec82..f49fbd42d 100644 --- a/src/audio/SDL_audio_c.h +++ b/src/audio/SDL_audio_c.h @@ -42,12 +42,4 @@ typedef struct } SDL_AudioTypeFilters; extern const SDL_AudioTypeFilters sdl_audio_type_filters[]; -/* Streamer */ -typedef struct -{ - Uint8 *buffer; - int max_len; // the maximum length in bytes - int read_pos, write_pos; // the position of the write and read heads in bytes -} SDL_AudioStreamer; - /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/audio/SDL_sysaudio.h b/src/audio/SDL_sysaudio.h index 54923dddc..c8304e540 100644 --- a/src/audio/SDL_sysaudio.h +++ b/src/audio/SDL_sysaudio.h @@ -68,6 +68,14 @@ typedef struct SDL_AudioDriver SDL_AudioDriverImpl impl; } SDL_AudioDriver; +/* Streamer */ +typedef struct +{ + Uint8 *buffer; + int max_len; /* the maximum length in bytes */ + int read_pos, write_pos; /* the position of the write and read heads in bytes */ +} SDL_AudioStreamer; + /* Define the SDL audio driver structure */ struct SDL_AudioDevice @@ -80,6 +88,10 @@ struct SDL_AudioDevice /* An audio conversion block for audio format emulation */ SDL_AudioCVT convert; + + /* The streamer, if sample rate conversion necessitates it */ + int use_streamer; + SDL_AudioStreamer streamer; /* Current state flags */ int iscapture;