SDL_ConvertAudio.3
资源名称:NETVIDEO.rar [点击查看]
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:
流媒体/Mpeg4/MP4
开发平台:
Visual C++
- .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_ConvertAudiofPfR(fBSDL_AudioCVT *cvtfR);
- .SH "DESCRIPTION"
- .PP
- fBSDL_ConvertAudiofP takes one parameter, fBcvtfR, which was previously initilized&. Initilizing a fIfBSDL_AudioCVTfRfR is a two step process&. First of all, the structure must be passed to fIfBSDL_BuildAudioCVTfPfR along with source and destination format parameters&. Secondly, the fBcvtfR->fBbuffR and fBcvtfR->fBlenfR fields must be setup&. fBcvtfR->fBbuffR should point to the audio data and fBcvtfR->fBlenfR should be set to the length of the audio data in bytes&. Remember, the length of the buffer pointed to by fBbuffR show be fBlenfR*fBlen_multfR bytes in length&.
- .PP
- Once the fBSDL_AudioCVTfRstructure is initilized then we can pass it to fBSDL_ConvertAudiofP, which will convert the audio data pointer to by fBcvtfR->fBbuffR&. If fBSDL_ConvertAudiofP returned fB0fR then the conversion was completed successfully, otherwise fB-1fR is returned&.
- .PP
- If the conversion completed successfully then the converted audio data can be read from fBcvtfR->fBbuffR&. The amount of valid, converted, audio data in the buffer is equal to fBcvtfR->fBlenfR*fBcvtfR->fBlen_ratiofR&.
- .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
- fIfBSDL_BuildAudioCVTfPfR, fIfBSDL_AudioCVTfPfR
- ..." created by instant / docbook-to-man, Tue 11 Sep 2001, 22:58