问题描述
我正在使用 oboe 库来制作音乐应用。在那里我通过将 PCM 浮点值写入给定的指针来制作音乐。我很少有我能听到的欠载。我还使用以下双簧管 API 验证了这一点:
managedStream->getXRunCount();
文档说明如下:
* An XRun is an Underrun or an Overrun.
* During playing,an underrun will occur if the stream is not written in time
* and the system runs out of valid data.
* An underrun or overrun can cause an audible "pop" or "glitch".
我正在尝试调试问题。我找到了 Don 的 awesome tutorial。我使用以下内容捕获了 10 秒的 systrace,请注意,在这 10 秒内,我听到了 0 次可听见的欠载弹出/点击声:
systrace.py --time=10 -o trace.html -a com.example.app 音频调度 频率
aaRdy
调用的结果如下(蓝色框高度显示缓冲区中有多少样本,需要更多高度更多样本):
但是缓冲区开始为空,首先下降到 96 帧, 然后……哦,亲爱的……归零!在零时,我们保证有音频 故障,因为缓冲区中没有数据。
我在看文章时提出的问题,我可以保证,如果蓝色框为空,则表示存在欠载。但是,在我的 systrace 中,它永远不会为空,而且我没有听到未满载的弹出点击但 managedStream->getXRunCount();
call 实际上返回了 12
。我不确定是否存在欠载。
蓝色框的减少是否意味着即使不是 0 也存在欠载?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)