首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioTrack WRITE_BLOCKING vs WRITE_NON_BLOCKING

AudioTrack WRITE_BLOCKING vs WRITE_NON_BLOCKING
EN

Stack Overflow用户
提问于 2019-02-22 15:33:04
回答 1查看 1.1K关注 0票数 0

我正在努力弄清楚Android AudioTrack到底是如何工作的。对我来说,一个困惑之处是写作模式。

write()方法的文档指示您可以传递写入模式封堵

根据这些描述,WRITE_BLOCKING是否会在所有数据被播放之前一直阻塞?例如,如果我有一个大小为2048的44100的单音频缓冲区,用WRITE_BLOCKING调用have将阻塞2048 * (1000.0 / 44100)毫秒?这不意味着,一旦写入完成,您就立即处于缓冲区运行不足的场景中吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-22 20:19:46

正如@Michael提到的那样,它会阻塞数据,直到数据被排队。这与WRITE_BLOCKING描述中的含义相同;它会阻塞数据,直到数据被写入内部缓冲区(在构造过程中,您指定了缓冲区的大小)。

如果缓冲区已经满(数据尚未播放),write( ..., 2048, WRITE_BLOCKING )将阻塞大约2048 * (1000.0 / 44100)秒。如果write()确实阻塞了任意一段时间,那么一旦它返回,您就可以合理地确保最大限度地填充内部缓冲区。如果没有任何进一步的write()sAudioTrack将继续向混频器提供音频输出,直到内部缓冲区耗尽为止。

此设计(内部缓冲区)旨在帮助您避免缓冲区不足。缓冲区越大,没有write()的时间就越长。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54830378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档