我有一个OpenSL音频播放器的缓冲区接口(SLAndroidSimpleBufferQueueItf)。我用界面注册我的回调。在我的回调中,我正在对数据进行条件等待,以便在循环缓冲区中填充。
我的问题是我无法弄清楚如何初次调用我的回调。
我通过在创建界面后立即将硬编码数据传递给Enqueue来强制它。这样可以播放我的虚拟数据,然后进入我的回调,它将等待circ缓冲区上的数据。
这可以让一切顺利。我只是不想传递这个虚拟数据来第一次触发回调。
我错过了什么?
答案 0 :(得分:0)
经过进一步审查后,似乎对我来说最好的解决方案是为Enqueue函数提供一个填充0的缓冲区。
它让球滚动,导致我的回叫被调用,在一个条件下进入等待状态,等待传入的数据发送给扬声器。