作者zonble (zonble)
看板MacDev
标题Re: [问题] 请问iPhone有办法将接收道的声音直接放 …
时间Tue Oct 19 19:13:11 2010
※ 引述《ryanliang (暑假闲闲的大学生~~)》之铭言:
: ※ 引述《zonble (zonble)》之铭言:
: 只是我想请问,在您的范例中,该要怎麽确定audio streaming有成功
: ?换句话说,如何去检查inputBuffers里是有资料的?
我说一下我所理解的 Audio Queue 好了。
Audio Queue 就很像是几个水桶(buffer)在那边排队。如果在处理
输入的时候,首先就会准备几个空的水桶,用来装 streaming 进来的
资料,如果一个水桶装完了,就先把这桶水拿到一个地方处理,同时
有另外一个水桶接上去继续装水。这个把装好的水桶拿出来,处理装
进来的水的工作,就是在我们所指定的 callback function 中。
在 callback function 中,我们可以把收到的 binary data 储存起
来,或是要看看做些什麽其他的事情,像是送到某个 view 中,显示
目前收到的音量、画个条状图有多大之类的。做完这些事情之後,我
们就要把这个空水桶拿回去继续排队装水,这就是 enqueue。
在处理输出的时候,我们就不能够拿空水桶,而是要准备一些装满水
的水桶,拿去输出装置,把水倒出来。而触发 callback 的时机就刚
好与输入相反,是一桶水被倒光了之後,会把这个空水桶拿回来,要
你把水装进这个空水桶里。
我的写法比较随便,在装满水的 callback function 里头,直接产
生一个新的 buffer,然後就拿去倒水了。因为是装满水的 callback
function,如果没有装满水,那应该要去回报 apple bug了吧。:p
--
zonble.net
cocoa.zonble.net
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.62.110.98