作者zonble (zonble)
看板MacDev
标题Re: [问题] 请问iPhone有办法将接收道的声音直接放 …
时间Wed May 11 22:00:56 2011
※ 引述《tocute (小飘)》之铭言:
: ※ 引述《zonble (zonble)》之铭言:
: 刚好也需要类似的功能
: 谢谢Z大提供的AudioStudy 教学
: 因为是研究之初 所以有些地方看不懂想请教一下各位板友
: 我最大的疑惑是
: 我找到的范例 几乎都是在
: AudioQueueNewOutput 的 callback function 读档
: 根据我以前在ms, android 的经验
: audio data 不是应该在 callback function 传进来的参数吗
: ex :AudioQueueBufferRef inBuffer
: 在callback function 内再把 audio data: inBuffer 传给 speaker
: 而Z大提供的AudioStudy 里面的OutptBufferHandler
: 似乎只有做 NSLog 这动作
: 即使注解掉 也能跑
audio queue 的 callback function 是在目前的 audio queue
资料已经放完之後,才会去触发。所以,你一般看到的范例在做
的事情是,因为目前的资料已经放完了,需要继续要资料,可能
是去读档案,或是已经在记忆体的 data,所以会在 callback
function 中继续读资料。
但是这个范例的状况是,由於是把录音进来的资料直接放出来,
所以,在放出声音之後,就没去做这件继续读资料的事情,反正
Input 有什麽资料,就往 Output 送。
实际上在把声音丢到 Output 工作的,就是 88 到 94 行这段,
把 Input 进来的 buffer,用 memcpy 把资料直接复制到新的
buffer,然後在 94 行的 AudioQueueEnqueueBuffer,丢到
Output queue 去。
比较需要注意的是,Input Queue 在一直不断重复使用同一个
buffer,然後每次都产生新的 buffer 给 output queue。
这个范例写得比较随便 :p
--
zonble.net
cocoa.zonble.net
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.42.195.12