Mercurial > sdl-ios-xcode
comparison src/audio/disk/SDL_diskaudio.c @ 1895:c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 10 Jul 2006 21:04:37 +0000 |
parents | c439dad53df8 |
children | 5f6550e5184f 37c9c4590689 |
comparison
equal
deleted
inserted
replaced
1894:c69cee13dd76 | 1895:c121d94672cb |
---|---|
45 #define DISKDEFAULT_OUTFILE "sdlaudio.raw" | 45 #define DISKDEFAULT_OUTFILE "sdlaudio.raw" |
46 #define DISKENVR_WRITEDELAY "SDL_DISKAUDIODELAY" | 46 #define DISKENVR_WRITEDELAY "SDL_DISKAUDIODELAY" |
47 #define DISKDEFAULT_WRITEDELAY 150 | 47 #define DISKDEFAULT_WRITEDELAY 150 |
48 | 48 |
49 /* Audio driver functions */ | 49 /* Audio driver functions */ |
50 static int DISKAUD_OpenAudio(_THIS, SDL_AudioSpec *spec); | 50 static int DISKAUD_OpenAudio(_THIS, SDL_AudioSpec * spec); |
51 static void DISKAUD_WaitAudio(_THIS); | 51 static void DISKAUD_WaitAudio(_THIS); |
52 static void DISKAUD_PlayAudio(_THIS); | 52 static void DISKAUD_PlayAudio(_THIS); |
53 static Uint8 *DISKAUD_GetAudioBuf(_THIS); | 53 static Uint8 *DISKAUD_GetAudioBuf(_THIS); |
54 static void DISKAUD_CloseAudio(_THIS); | 54 static void DISKAUD_CloseAudio(_THIS); |
55 | 55 |
56 static const char *DISKAUD_GetOutputFilename(void) | 56 static const char * |
57 DISKAUD_GetOutputFilename(void) | |
57 { | 58 { |
58 const char *envr = SDL_getenv(DISKENVR_OUTFILE); | 59 const char *envr = SDL_getenv(DISKENVR_OUTFILE); |
59 return((envr != NULL) ? envr : DISKDEFAULT_OUTFILE); | 60 return ((envr != NULL) ? envr : DISKDEFAULT_OUTFILE); |
60 } | 61 } |
61 | 62 |
62 /* Audio driver bootstrap functions */ | 63 /* Audio driver bootstrap functions */ |
63 static int DISKAUD_Available(void) | 64 static int |
65 DISKAUD_Available(void) | |
64 { | 66 { |
65 const char *envr = SDL_getenv("SDL_AUDIODRIVER"); | 67 const char *envr = SDL_getenv("SDL_AUDIODRIVER"); |
66 if (envr && (SDL_strcmp(envr, DISKAUD_DRIVER_NAME) == 0)) { | 68 if (envr && (SDL_strcmp(envr, DISKAUD_DRIVER_NAME) == 0)) { |
67 return(1); | 69 return (1); |
68 } | 70 } |
69 return(0); | 71 return (0); |
70 } | 72 } |
71 | 73 |
72 static void DISKAUD_DeleteDevice(SDL_AudioDevice *device) | 74 static void |
75 DISKAUD_DeleteDevice(SDL_AudioDevice * device) | |
73 { | 76 { |
74 SDL_free(device->hidden); | 77 SDL_free(device->hidden); |
75 SDL_free(device); | 78 SDL_free(device); |
76 } | 79 } |
77 | 80 |
78 static SDL_AudioDevice *DISKAUD_CreateDevice(int devindex) | 81 static SDL_AudioDevice * |
82 DISKAUD_CreateDevice(int devindex) | |
79 { | 83 { |
80 SDL_AudioDevice *this; | 84 SDL_AudioDevice *this; |
81 const char *envr; | 85 const char *envr; |
82 | 86 |
83 /* Initialize all variables that we clean on shutdown */ | 87 /* Initialize all variables that we clean on shutdown */ |
84 this = (SDL_AudioDevice *)SDL_malloc(sizeof(SDL_AudioDevice)); | 88 this = (SDL_AudioDevice *) SDL_malloc(sizeof(SDL_AudioDevice)); |
85 if ( this ) { | 89 if (this) { |
86 SDL_memset(this, 0, (sizeof *this)); | 90 SDL_memset(this, 0, (sizeof *this)); |
87 this->hidden = (struct SDL_PrivateAudioData *) | 91 this->hidden = (struct SDL_PrivateAudioData *) |
88 SDL_malloc((sizeof *this->hidden)); | 92 SDL_malloc((sizeof *this->hidden)); |
89 } | 93 } |
90 if ( (this == NULL) || (this->hidden == NULL) ) { | 94 if ((this == NULL) || (this->hidden == NULL)) { |
91 SDL_OutOfMemory(); | 95 SDL_OutOfMemory(); |
92 if ( this ) { | 96 if (this) { |
93 SDL_free(this); | 97 SDL_free(this); |
94 } | 98 } |
95 return(0); | 99 return (0); |
96 } | 100 } |
97 SDL_memset(this->hidden, 0, (sizeof *this->hidden)); | 101 SDL_memset(this->hidden, 0, (sizeof *this->hidden)); |
98 | 102 |
99 envr = SDL_getenv(DISKENVR_WRITEDELAY); | 103 envr = SDL_getenv(DISKENVR_WRITEDELAY); |
100 this->hidden->write_delay = (envr) ? SDL_atoi(envr) : DISKDEFAULT_WRITEDELAY; | 104 this->hidden->write_delay = |
105 (envr) ? SDL_atoi(envr) : DISKDEFAULT_WRITEDELAY; | |
101 | 106 |
102 /* Set the function pointers */ | 107 /* Set the function pointers */ |
103 this->OpenAudio = DISKAUD_OpenAudio; | 108 this->OpenAudio = DISKAUD_OpenAudio; |
104 this->WaitAudio = DISKAUD_WaitAudio; | 109 this->WaitAudio = DISKAUD_WaitAudio; |
105 this->PlayAudio = DISKAUD_PlayAudio; | 110 this->PlayAudio = DISKAUD_PlayAudio; |
106 this->GetAudioBuf = DISKAUD_GetAudioBuf; | 111 this->GetAudioBuf = DISKAUD_GetAudioBuf; |
107 this->CloseAudio = DISKAUD_CloseAudio; | 112 this->CloseAudio = DISKAUD_CloseAudio; |
108 | 113 |
109 this->free = DISKAUD_DeleteDevice; | 114 this->free = DISKAUD_DeleteDevice; |
110 | 115 |
111 return this; | 116 return this; |
112 } | 117 } |
113 | 118 |
114 AudioBootStrap DISKAUD_bootstrap = { | 119 AudioBootStrap DISKAUD_bootstrap = { |
115 DISKAUD_DRIVER_NAME, "direct-to-disk audio", | 120 DISKAUD_DRIVER_NAME, "direct-to-disk audio", |
116 DISKAUD_Available, DISKAUD_CreateDevice | 121 DISKAUD_Available, DISKAUD_CreateDevice |
117 }; | 122 }; |
118 | 123 |
119 /* This function waits until it is possible to write a full sound buffer */ | 124 /* This function waits until it is possible to write a full sound buffer */ |
120 static void DISKAUD_WaitAudio(_THIS) | 125 static void |
126 DISKAUD_WaitAudio(_THIS) | |
121 { | 127 { |
122 SDL_Delay(this->hidden->write_delay); | 128 SDL_Delay(this->hidden->write_delay); |
123 } | 129 } |
124 | 130 |
125 static void DISKAUD_PlayAudio(_THIS) | 131 static void |
132 DISKAUD_PlayAudio(_THIS) | |
126 { | 133 { |
127 int written; | 134 int written; |
128 | 135 |
129 /* Write the audio data */ | 136 /* Write the audio data */ |
130 written = SDL_RWwrite(this->hidden->output, | 137 written = SDL_RWwrite(this->hidden->output, |
131 this->hidden->mixbuf, 1, | 138 this->hidden->mixbuf, 1, this->hidden->mixlen); |
132 this->hidden->mixlen); | |
133 | 139 |
134 /* If we couldn't write, assume fatal error for now */ | 140 /* If we couldn't write, assume fatal error for now */ |
135 if ( (Uint32)written != this->hidden->mixlen ) { | 141 if ((Uint32) written != this->hidden->mixlen) { |
136 this->enabled = 0; | 142 this->enabled = 0; |
137 } | 143 } |
138 #ifdef DEBUG_AUDIO | 144 #ifdef DEBUG_AUDIO |
139 fprintf(stderr, "Wrote %d bytes of audio data\n", written); | 145 fprintf(stderr, "Wrote %d bytes of audio data\n", written); |
140 #endif | 146 #endif |
141 } | 147 } |
142 | 148 |
143 static Uint8 *DISKAUD_GetAudioBuf(_THIS) | 149 static Uint8 * |
150 DISKAUD_GetAudioBuf(_THIS) | |
144 { | 151 { |
145 return(this->hidden->mixbuf); | 152 return (this->hidden->mixbuf); |
146 } | 153 } |
147 | 154 |
148 static void DISKAUD_CloseAudio(_THIS) | 155 static void |
156 DISKAUD_CloseAudio(_THIS) | |
149 { | 157 { |
150 if ( this->hidden->mixbuf != NULL ) { | 158 if (this->hidden->mixbuf != NULL) { |
151 SDL_FreeAudioMem(this->hidden->mixbuf); | 159 SDL_FreeAudioMem(this->hidden->mixbuf); |
152 this->hidden->mixbuf = NULL; | 160 this->hidden->mixbuf = NULL; |
153 } | 161 } |
154 if ( this->hidden->output != NULL ) { | 162 if (this->hidden->output != NULL) { |
155 SDL_RWclose(this->hidden->output); | 163 SDL_RWclose(this->hidden->output); |
156 this->hidden->output = NULL; | 164 this->hidden->output = NULL; |
157 } | 165 } |
158 } | 166 } |
159 | 167 |
160 static int DISKAUD_OpenAudio(_THIS, SDL_AudioSpec *spec) | 168 static int |
169 DISKAUD_OpenAudio(_THIS, SDL_AudioSpec * spec) | |
161 { | 170 { |
162 const char *fname = DISKAUD_GetOutputFilename(); | 171 const char *fname = DISKAUD_GetOutputFilename(); |
163 | 172 |
164 /* Open the audio device */ | 173 /* Open the audio device */ |
165 this->hidden->output = SDL_RWFromFile(fname, "wb"); | 174 this->hidden->output = SDL_RWFromFile(fname, "wb"); |
166 if ( this->hidden->output == NULL ) { | 175 if (this->hidden->output == NULL) { |
167 return(-1); | 176 return (-1); |
168 } | 177 } |
169 | |
170 #if HAVE_STDIO_H | 178 #if HAVE_STDIO_H |
171 fprintf(stderr, "WARNING: You are using the SDL disk writer" | 179 fprintf(stderr, "WARNING: You are using the SDL disk writer" |
172 " audio driver!\n Writing to file [%s].\n", fname); | 180 " audio driver!\n Writing to file [%s].\n", fname); |
173 #endif | 181 #endif |
174 | 182 |
175 /* Allocate mixing buffer */ | 183 /* Allocate mixing buffer */ |
176 this->hidden->mixlen = spec->size; | 184 this->hidden->mixlen = spec->size; |
177 this->hidden->mixbuf = (Uint8 *) SDL_AllocAudioMem(this->hidden->mixlen); | 185 this->hidden->mixbuf = (Uint8 *) SDL_AllocAudioMem(this->hidden->mixlen); |
178 if ( this->hidden->mixbuf == NULL ) { | 186 if (this->hidden->mixbuf == NULL) { |
179 return(-1); | 187 return (-1); |
180 } | 188 } |
181 SDL_memset(this->hidden->mixbuf, spec->silence, spec->size); | 189 SDL_memset(this->hidden->mixbuf, spec->silence, spec->size); |
182 | 190 |
183 /* We're ready to rock and roll. :-) */ | 191 /* We're ready to rock and roll. :-) */ |
184 return(0); | 192 return (0); |
185 } | 193 } |
186 | 194 |
195 /* vi: set ts=4 sw=4 expandtab: */ |