diff options
Diffstat (limited to 'distrib/sdl-1.2.15/docs/man3/SDL_ConvertAudio.3')
-rw-r--r-- | distrib/sdl-1.2.15/docs/man3/SDL_ConvertAudio.3 | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/distrib/sdl-1.2.15/docs/man3/SDL_ConvertAudio.3 b/distrib/sdl-1.2.15/docs/man3/SDL_ConvertAudio.3 new file mode 100644 index 0000000..73ef974 --- /dev/null +++ b/distrib/sdl-1.2.15/docs/man3/SDL_ConvertAudio.3 @@ -0,0 +1,95 @@ +.TH "SDL_ConvertAudio" "3" "Tue 11 Sep 2001, 22:58" "SDL" "SDL API Reference" +.SH "NAME" +SDL_ConvertAudio \- Convert audio data to a desired audio format\&. +.SH "SYNOPSIS" +.PP +\fB#include "SDL\&.h" +.sp +\fBint \fBSDL_ConvertAudio\fP\fR(\fBSDL_AudioCVT *cvt\fR); +.SH "DESCRIPTION" +.PP +\fBSDL_ConvertAudio\fP takes one parameter, \fBcvt\fR, which was previously initilized\&. Initilizing a \fI\fBSDL_AudioCVT\fR\fR is a two step process\&. First of all, the structure must be passed to \fI\fBSDL_BuildAudioCVT\fP\fR along with source and destination format parameters\&. Secondly, the \fBcvt\fR->\fBbuf\fR and \fBcvt\fR->\fBlen\fR fields must be setup\&. \fBcvt\fR->\fBbuf\fR should point to the audio data and \fBcvt\fR->\fBlen\fR should be set to the length of the audio data in bytes\&. Remember, the length of the buffer pointed to by \fBbuf\fR show be \fBlen\fR*\fBlen_mult\fR bytes in length\&. +.PP +Once the \fBSDL_AudioCVT\fRstructure is initilized then we can pass it to \fBSDL_ConvertAudio\fP, which will convert the audio data pointer to by \fBcvt\fR->\fBbuf\fR\&. If \fBSDL_ConvertAudio\fP returned \fB0\fR then the conversion was completed successfully, otherwise \fB-1\fR is returned\&. +.PP +If the conversion completed successfully then the converted audio data can be read from \fBcvt\fR->\fBbuf\fR\&. The amount of valid, converted, audio data in the buffer is equal to \fBcvt\fR->\fBlen\fR*\fBcvt\fR->\fBlen_ratio\fR\&. +.SH "EXAMPLES" +.PP +.nf +\f(CW/* Converting some WAV data to hardware format */ +void my_audio_callback(void *userdata, Uint8 *stream, int len); + +SDL_AudioSpec *desired, *obtained; +SDL_AudioSpec wav_spec; +SDL_AudioCVT wav_cvt; +Uint32 wav_len; +Uint8 *wav_buf; +int ret; + +/* Allocated audio specs */ +desired=(SDL_AudioSpec *)malloc(sizeof(SDL_AudioSpec)); +obtained=(SDL_AudioSpec *)malloc(sizeof(SDL_AudioSpec)); + +/* Set desired format */ +desired->freq=22050; +desired->format=AUDIO_S16LSB; +desired->samples=8192; +desired->callback=my_audio_callback; +desired->userdata=NULL; + +/* Open the audio device */ +if ( SDL_OpenAudio(desired, obtained) < 0 ){ + fprintf(stderr, "Couldn\&'t open audio: %s +", SDL_GetError()); + exit(-1); +} + +free(desired); + +/* Load the test\&.wav */ +if( SDL_LoadWAV("test\&.wav", &wav_spec, &wav_buf, &wav_len) == NULL ){ + fprintf(stderr, "Could not open test\&.wav: %s +", SDL_GetError()); + SDL_CloseAudio(); + free(obtained); + exit(-1); +} + +/* Build AudioCVT */ +ret = SDL_BuildAudioCVT(&wav_cvt, + wav_spec\&.format, wav_spec\&.channels, wav_spec\&.freq, + obtained->format, obtained->channels, obtained->freq); + +/* Check that the convert was built */ +if(ret==-1){ + fprintf(stderr, "Couldn\&'t build converter! +"); + SDL_CloseAudio(); + free(obtained); + SDL_FreeWAV(wav_buf); +} + +/* Setup for conversion */ +wav_cvt\&.buf=(Uint8 *)malloc(wav_len*wav_cvt\&.len_mult); +wav_cvt\&.len=wav_len; +memcpy(wav_cvt\&.buf, wav_buf, wav_len); + +/* We can delete to original WAV data now */ +SDL_FreeWAV(wav_buf); + +/* And now we\&'re ready to convert */ +SDL_ConvertAudio(&wav_cvt); + +/* do whatever */ +\&. +\&. +\&. +\&. + +\fR +.fi +.PP +.SH "SEE ALSO" +.PP +\fI\fBSDL_BuildAudioCVT\fP\fR, \fI\fBSDL_AudioCVT\fP\fR +.\" created by instant / docbook-to-man, Tue 11 Sep 2001, 22:58 |