SDL_ConvertAudio

名字

SDL_ConvertAudio--向一渴望音頻的格式改變信仰者音頻的資料.

概要

使用
SDL;

功能SDL_ConvertAudio cvt:PSDL_AudioCVT:整數;

描繪

SDL_ConvertAudio採取從前是initilized的一參數, cvt.Initilizing一 TSDL_AudioCVT是一二步過程.首先,結構一定是外加 來源和目的地格式參數把傳給SDL_BuildAudioCVT其次, cvt.buf cv.len田野一定是組織.cvt-> buf應該指向音頻的資料在位元組中和 cvt>len應該被使朝向音頻的資料的長度.記得緩衝記憶體的長度指向前 len*len_mult位元組長是在buf展覽旁邊.

TSDL_AudioCVT結構一旦那時是initilized,我們就能向前在cv.buf 旁邊把它傳給將兌換音頻的資料指針的SDL_ConvertAudio.如果SDL_ConvertAudio歸還 0,那時轉換成功被完成,除此之外 -1被歸還.

如果轉換成功完成,那時兌換音頻的資料能被從cvt中選讀. buf.在緩衝記憶體中有效,轉變,音頻的資料的總量是等於cv.len* cv.len_ratio.

例子

//向硬體格式兌換一些WAV資料 
過程my_audio_callback userdata:Pointer;溪流:PUInt8;len:整數;
開始
.
.
.
渴望得到:PSDL_AudioSpec;
wav_spec:TSDL_AudioSpec;
wav_cvt:TSDL_AudioCVT;
wav_len:UInt32;
wav_buf:PUint8;
被漚軟:整數;

//分配音頻的眼鏡
渴望:=PSDL_AudioSpec((malloc((SizeOf((TSDL_AudioSpec)));
得到:=PSDL_AudioSpec((malloc((SizeOf((TSDL_AudioSpec)));

//裝置是渴望格式
desired.freq:=22050;
desired.format:=AUDIO_S16LSB;
desired.samples:=8192;
desired.callback:=my_audio_callback;
desired.userdata:=;

//打開音頻的裝置
如果SDL_OpenAudio渴望,那時得到<是0
開始
MessageBox 0,PChar格式化Couldn t開放音頻信號:%s'[,SDL_GetError'],錯誤,MB_OK或者MB_ICONHAND;
停止((-1);
末端;

自由((渴望);

//裝載test.wav
如果那時(SDL_LoadWAV((test.wav,@wav_spec,@wav_buf,@wav_len)=)
開始
MessageBox 0,PChar格式化Couldn t開放test.wav:%s'[,SDL_GetError'],錯誤,MB_OK或者MB_ICONHAND;
SDL_CloseAudio;
自由((得到公認);
停止((-1);
末端;

//外型AudioCVT
將:=SDL_BuildAudioCVT漚軟@wav_cvt
wav_spec.format,wav_spec.channels,wav_spec.freq
obtained.format,obtained.channels,obtained.freq;

改變信仰者是的//檢查是建造的
如果那時(將=-1)漚軟
開始
MessageBox 0',Coundn t外型使轉變的人'!'資訊',MB_OK或者MB_ICONHAND;
SDL_CloseAudio;
自由((得到公認);
SDL_FreeWAV((wav_buf);
末端;

為轉換//組織
wav_cvt.buf:=PUint8((malloc((wav_len*wav_cvt.len_mult));
wav_cvt.len:=wav_len;
移動((wav_buf,wav_cvf.buf,wav_len);

//我們罐刪除向現在原來WAV資料
SDL_FreeWAV((wav_buf);

//和現在我們是準備好轉變
SDL_ConvertAudio((@wav_cvt);

//不管是什麼做
.
.
.
.
末端;

也注意到

SDL_BuildAudioCVT ,TSDL_AudioCVT