强制初始回调到SLAndroidSimpleBufferQueueItf

时间:2013-12-12 21:54:56

标签: android-ndk opensl

我有一个OpenSL音频播放器的缓冲区接口(SLAndroidSimpleBufferQueueItf)。我用界面注册我的回调。在我的回调中,我正在对数据进行条件等待,以便在循环缓冲区中填充。

我的问题是我无法弄清楚如何初次调用我的回调。

我通过在创建界面后立即将硬编码数据传递给Enqueue来强制它。这样可以播放我的虚拟数据,然后进入我的回调,它将等待circ缓冲区上的数据。

这可以让一切顺利。我只是不想传递这个虚拟数据来第一次触发回调。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

经过进一步审查后,似乎对我来说最好的解决方案是为Enqueue函数提供一个填充0的缓冲区。

它让球滚动,导致我的回叫被调用,在一个条件下进入等待状态,等待传入的数据发送给扬声器。