SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
--HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401938
This commit is contained in:
parent
91a32b77a2
commit
0f030a1802
686 changed files with 117556 additions and 98661 deletions
|
@ -47,140 +47,149 @@
|
|||
#define DISKDEFAULT_WRITEDELAY 150
|
||||
|
||||
/* Audio driver functions */
|
||||
static int DISKAUD_OpenAudio(_THIS, SDL_AudioSpec *spec);
|
||||
static int DISKAUD_OpenAudio(_THIS, SDL_AudioSpec * spec);
|
||||
static void DISKAUD_WaitAudio(_THIS);
|
||||
static void DISKAUD_PlayAudio(_THIS);
|
||||
static Uint8 *DISKAUD_GetAudioBuf(_THIS);
|
||||
static void DISKAUD_CloseAudio(_THIS);
|
||||
|
||||
static const char *DISKAUD_GetOutputFilename(void)
|
||||
static const char *
|
||||
DISKAUD_GetOutputFilename(void)
|
||||
{
|
||||
const char *envr = SDL_getenv(DISKENVR_OUTFILE);
|
||||
return((envr != NULL) ? envr : DISKDEFAULT_OUTFILE);
|
||||
const char *envr = SDL_getenv(DISKENVR_OUTFILE);
|
||||
return ((envr != NULL) ? envr : DISKDEFAULT_OUTFILE);
|
||||
}
|
||||
|
||||
/* Audio driver bootstrap functions */
|
||||
static int DISKAUD_Available(void)
|
||||
static int
|
||||
DISKAUD_Available(void)
|
||||
{
|
||||
const char *envr = SDL_getenv("SDL_AUDIODRIVER");
|
||||
if (envr && (SDL_strcmp(envr, DISKAUD_DRIVER_NAME) == 0)) {
|
||||
return(1);
|
||||
}
|
||||
return(0);
|
||||
const char *envr = SDL_getenv("SDL_AUDIODRIVER");
|
||||
if (envr && (SDL_strcmp(envr, DISKAUD_DRIVER_NAME) == 0)) {
|
||||
return (1);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
static void DISKAUD_DeleteDevice(SDL_AudioDevice *device)
|
||||
static void
|
||||
DISKAUD_DeleteDevice(SDL_AudioDevice * device)
|
||||
{
|
||||
SDL_free(device->hidden);
|
||||
SDL_free(device);
|
||||
SDL_free(device->hidden);
|
||||
SDL_free(device);
|
||||
}
|
||||
|
||||
static SDL_AudioDevice *DISKAUD_CreateDevice(int devindex)
|
||||
static SDL_AudioDevice *
|
||||
DISKAUD_CreateDevice(int devindex)
|
||||
{
|
||||
SDL_AudioDevice *this;
|
||||
const char *envr;
|
||||
SDL_AudioDevice *this;
|
||||
const char *envr;
|
||||
|
||||
/* Initialize all variables that we clean on shutdown */
|
||||
this = (SDL_AudioDevice *)SDL_malloc(sizeof(SDL_AudioDevice));
|
||||
if ( this ) {
|
||||
SDL_memset(this, 0, (sizeof *this));
|
||||
this->hidden = (struct SDL_PrivateAudioData *)
|
||||
SDL_malloc((sizeof *this->hidden));
|
||||
}
|
||||
if ( (this == NULL) || (this->hidden == NULL) ) {
|
||||
SDL_OutOfMemory();
|
||||
if ( this ) {
|
||||
SDL_free(this);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
SDL_memset(this->hidden, 0, (sizeof *this->hidden));
|
||||
/* Initialize all variables that we clean on shutdown */
|
||||
this = (SDL_AudioDevice *) SDL_malloc(sizeof(SDL_AudioDevice));
|
||||
if (this) {
|
||||
SDL_memset(this, 0, (sizeof *this));
|
||||
this->hidden = (struct SDL_PrivateAudioData *)
|
||||
SDL_malloc((sizeof *this->hidden));
|
||||
}
|
||||
if ((this == NULL) || (this->hidden == NULL)) {
|
||||
SDL_OutOfMemory();
|
||||
if (this) {
|
||||
SDL_free(this);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
SDL_memset(this->hidden, 0, (sizeof *this->hidden));
|
||||
|
||||
envr = SDL_getenv(DISKENVR_WRITEDELAY);
|
||||
this->hidden->write_delay = (envr) ? SDL_atoi(envr) : DISKDEFAULT_WRITEDELAY;
|
||||
envr = SDL_getenv(DISKENVR_WRITEDELAY);
|
||||
this->hidden->write_delay =
|
||||
(envr) ? SDL_atoi(envr) : DISKDEFAULT_WRITEDELAY;
|
||||
|
||||
/* Set the function pointers */
|
||||
this->OpenAudio = DISKAUD_OpenAudio;
|
||||
this->WaitAudio = DISKAUD_WaitAudio;
|
||||
this->PlayAudio = DISKAUD_PlayAudio;
|
||||
this->GetAudioBuf = DISKAUD_GetAudioBuf;
|
||||
this->CloseAudio = DISKAUD_CloseAudio;
|
||||
/* Set the function pointers */
|
||||
this->OpenAudio = DISKAUD_OpenAudio;
|
||||
this->WaitAudio = DISKAUD_WaitAudio;
|
||||
this->PlayAudio = DISKAUD_PlayAudio;
|
||||
this->GetAudioBuf = DISKAUD_GetAudioBuf;
|
||||
this->CloseAudio = DISKAUD_CloseAudio;
|
||||
|
||||
this->free = DISKAUD_DeleteDevice;
|
||||
this->free = DISKAUD_DeleteDevice;
|
||||
|
||||
return this;
|
||||
return this;
|
||||
}
|
||||
|
||||
AudioBootStrap DISKAUD_bootstrap = {
|
||||
DISKAUD_DRIVER_NAME, "direct-to-disk audio",
|
||||
DISKAUD_Available, DISKAUD_CreateDevice
|
||||
DISKAUD_DRIVER_NAME, "direct-to-disk audio",
|
||||
DISKAUD_Available, DISKAUD_CreateDevice
|
||||
};
|
||||
|
||||
/* This function waits until it is possible to write a full sound buffer */
|
||||
static void DISKAUD_WaitAudio(_THIS)
|
||||
static void
|
||||
DISKAUD_WaitAudio(_THIS)
|
||||
{
|
||||
SDL_Delay(this->hidden->write_delay);
|
||||
SDL_Delay(this->hidden->write_delay);
|
||||
}
|
||||
|
||||
static void DISKAUD_PlayAudio(_THIS)
|
||||
static void
|
||||
DISKAUD_PlayAudio(_THIS)
|
||||
{
|
||||
int written;
|
||||
int written;
|
||||
|
||||
/* Write the audio data */
|
||||
written = SDL_RWwrite(this->hidden->output,
|
||||
this->hidden->mixbuf, 1,
|
||||
this->hidden->mixlen);
|
||||
/* Write the audio data */
|
||||
written = SDL_RWwrite(this->hidden->output,
|
||||
this->hidden->mixbuf, 1, this->hidden->mixlen);
|
||||
|
||||
/* If we couldn't write, assume fatal error for now */
|
||||
if ( (Uint32)written != this->hidden->mixlen ) {
|
||||
this->enabled = 0;
|
||||
}
|
||||
/* If we couldn't write, assume fatal error for now */
|
||||
if ((Uint32) written != this->hidden->mixlen) {
|
||||
this->enabled = 0;
|
||||
}
|
||||
#ifdef DEBUG_AUDIO
|
||||
fprintf(stderr, "Wrote %d bytes of audio data\n", written);
|
||||
fprintf(stderr, "Wrote %d bytes of audio data\n", written);
|
||||
#endif
|
||||
}
|
||||
|
||||
static Uint8 *DISKAUD_GetAudioBuf(_THIS)
|
||||
static Uint8 *
|
||||
DISKAUD_GetAudioBuf(_THIS)
|
||||
{
|
||||
return(this->hidden->mixbuf);
|
||||
return (this->hidden->mixbuf);
|
||||
}
|
||||
|
||||
static void DISKAUD_CloseAudio(_THIS)
|
||||
static void
|
||||
DISKAUD_CloseAudio(_THIS)
|
||||
{
|
||||
if ( this->hidden->mixbuf != NULL ) {
|
||||
SDL_FreeAudioMem(this->hidden->mixbuf);
|
||||
this->hidden->mixbuf = NULL;
|
||||
}
|
||||
if ( this->hidden->output != NULL ) {
|
||||
SDL_RWclose(this->hidden->output);
|
||||
this->hidden->output = NULL;
|
||||
}
|
||||
if (this->hidden->mixbuf != NULL) {
|
||||
SDL_FreeAudioMem(this->hidden->mixbuf);
|
||||
this->hidden->mixbuf = NULL;
|
||||
}
|
||||
if (this->hidden->output != NULL) {
|
||||
SDL_RWclose(this->hidden->output);
|
||||
this->hidden->output = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static int DISKAUD_OpenAudio(_THIS, SDL_AudioSpec *spec)
|
||||
static int
|
||||
DISKAUD_OpenAudio(_THIS, SDL_AudioSpec * spec)
|
||||
{
|
||||
const char *fname = DISKAUD_GetOutputFilename();
|
||||
|
||||
/* Open the audio device */
|
||||
this->hidden->output = SDL_RWFromFile(fname, "wb");
|
||||
if ( this->hidden->output == NULL ) {
|
||||
return(-1);
|
||||
}
|
||||
const char *fname = DISKAUD_GetOutputFilename();
|
||||
|
||||
/* Open the audio device */
|
||||
this->hidden->output = SDL_RWFromFile(fname, "wb");
|
||||
if (this->hidden->output == NULL) {
|
||||
return (-1);
|
||||
}
|
||||
#if HAVE_STDIO_H
|
||||
fprintf(stderr, "WARNING: You are using the SDL disk writer"
|
||||
" audio driver!\n Writing to file [%s].\n", fname);
|
||||
fprintf(stderr, "WARNING: You are using the SDL disk writer"
|
||||
" audio driver!\n Writing to file [%s].\n", fname);
|
||||
#endif
|
||||
|
||||
/* Allocate mixing buffer */
|
||||
this->hidden->mixlen = spec->size;
|
||||
this->hidden->mixbuf = (Uint8 *) SDL_AllocAudioMem(this->hidden->mixlen);
|
||||
if ( this->hidden->mixbuf == NULL ) {
|
||||
return(-1);
|
||||
}
|
||||
SDL_memset(this->hidden->mixbuf, spec->silence, spec->size);
|
||||
/* Allocate mixing buffer */
|
||||
this->hidden->mixlen = spec->size;
|
||||
this->hidden->mixbuf = (Uint8 *) SDL_AllocAudioMem(this->hidden->mixlen);
|
||||
if (this->hidden->mixbuf == NULL) {
|
||||
return (-1);
|
||||
}
|
||||
SDL_memset(this->hidden->mixbuf, spec->silence, spec->size);
|
||||
|
||||
/* We're ready to rock and roll. :-) */
|
||||
return(0);
|
||||
/* We're ready to rock and roll. :-) */
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* vi: set ts=4 sw=4 expandtab: */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue