SDL_OpenAudio

名字

SDL_OpenAudio用渴望參數打開音頻的裝置.

概要

使用
SDL;

功能SDL_OpenAudio渴望得到:PSDL_AudioSpec:整數;

描繪

如果成功,把真實硬體參數置於結構指,這個功能用 渴望參數和回程0打開音頻的裝置向前在身邊 得到公認.如果零被得到,如果必然,把音頻的資料傳給產品回修通知功能將被保證是在請求格式中和將向硬體音頻的格式自動被兌換.如果它未能打開音頻的裝置或者不能建立音頻的線,這個功能歸還-1.

打開音頻的裝置一渴望 TSDL_AudioSpec一定是建立.

渴望:PSDL_AudioSpec;
.
.
渴望:=PSDL_AudioSpec((malloc((SizeOf((SDL_AudioSpec)));
那時你必須使這結構充滿你的渴望音頻的規格說明.

desired.freq

在每秒樣品中渴望音頻.

渴望. 格式

渴望音頻的格式((看見 TSDL_AudioSpec)

渴望. 樣品

在樣品中音頻的緩衝記憶體的渴望尺寸.這數應該是一二的力量和可以在音頻的司機旁邊被調整適應一更適宜於硬體價值.好的價值觀在範圍在中間512和8192看來似乎是全包取決於應用和CPU速度.如果及時應用正做重處理和不能填補音頻的緩衝記憶體,更小價值觀生產更快反應時間但是能導致潛流.一立體聲系統樣品由在LR管理中既又到處渠道構成.指出下列的公式直接向時間講述樣品的數目:ms=((samples*1000)/freq

desire.callback

這個應該被使朝向一個功能,當音頻的裝置是為更多資料準備好的時候,將被大聲說出的.它被通過一指向在音頻的緩衝記憶體的位元組中音頻的緩衝記憶體和長度的指針.這個功能通常順利運轉一根分開線,透過在你的代碼中大聲說出SDL_LockAudioSDL_UnlockAudio 和那樣你應該防護它訪問的資料結構.產品回修通知原型是:

空無一物產品回修通知((空無一物*userdata,Uint8*stream,int len);
userdata是在TSDL_AudioSpec userdata田野中儲藏指針.溪流是一指向使你想要的音頻的緩衝記憶體充滿資訊的指針和len 是在位元組中音頻的緩衝記憶體的長度.

desire.userdata

是第一參數把這指針傳給產品回修通知功能.

SDL_OpenAudio從向功能和發現一音頻的配置相配的嘗試渴望 TSDL_AudioSpec結構通行證看出這些田野你的渴望 .當那時在上方表揚如果得到參數是沒有時,和從你的 渴望音頻的設置向是它硬體設置改變信仰者SDL演奏.

如果得到,是那時渴望 TSDL_AudioSpec是你的工作規格說明,除此之外 得到 TSDL_AudioSpec成為工作規格說明和desirec 規格說明能被刪除.當建立SDL_AudioCVT是為向硬體格式兌換裝載資料的時候,資料在工作規格說明使用的.

SDL_OpenAudio為兩者都渴望得到規格說明計算尺寸 安靜田野.在價值是去用過的安靜商店代表在音頻的緩衝記憶體中安靜的同時, 尺寸田野在位元組中儲藏音頻的緩衝記憶體的總尺寸

當你是你的音頻的產品回修通知功能被打電話準備好的時候,音頻的裝置出發當它已經打開的時候,玩 安靜和應該因為演奏被職業SDL_PauseAudio (0)有助於.自音頻的司機可以修改向音頻的緩衝記憶體要求 尺寸以來,在你打開音頻的裝置之後,你應該分配任何本地混合緩衝記憶體.

例子

我們產品回修通知功能的//原型 
過程my_audio_callback userdata:Pointer;溪流:PUint8;len:整數;
.
.
.

//打開音頻的裝置
渴望得到:PSDL_AudioSpec;
hardware_spec:PSDL_AudioSpec;
.
.
.
//分配一渴望SDL_AudioSpec是
渴望:=PSDL_AudioSpec((malloc((SizeOf((SDL_AudioSpec)));


//分配空間得到SDL_AudioSpec是
得到:=PSDL_AudioSpec((malloc((SizeOf((SDL_AudioSpec)));

//22050Hz-FM無線電特性
desired.freq:=22050;

//16位簽署音頻信號
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);
末端;

//是渴望投機不再被需要
自由((渴望);
hardware_spec:=得到公認;
.
.
//為演奏準備產品回修通知
.
.
.
演奏//出發
SDL_PauseAudio((0);

也注意到

TSDL_AudioSpec ,SDL_LockAudio ,SDL_UnlockAudio ,SDL_PauseAudio