Android ndk 强制初始回调到SLAndroidSimpleBufferQueueItf

Android ndk 强制初始回调到SLAndroidSimpleBufferQueueItf,android-ndk,opensl,Android Ndk,Opensl,我有一个用于OpenSL音频播放器的缓冲队列接口(SLAndroidSimpleBufferQueueItf)。我用接口注册回调。在我的回调中,我在循环缓冲区中对要填充的数据进行有条件的等待 我的问题是,我不知道如何将初始呼叫发送到我的回调 在创建接口之后,我通过将硬编码数据传递到队列中来强制它。这样做的效果是播放我的虚拟数据,然后进入回调,在那里它将等待circ缓冲区中的数据 这使得一切都能顺利进行。我只是不想在第一次启动回调时传递这个伪数据 我遗漏了什么?在进一步检查之后,似乎对我来说最好的

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

我的问题是,我不知道如何将初始呼叫发送到我的回调

在创建接口之后,我通过将硬编码数据传递到队列中来强制它。这样做的效果是播放我的虚拟数据,然后进入回调,在那里它将等待circ缓冲区中的数据

这使得一切都能顺利进行。我只是不想在第一次启动回调时传递这个伪数据


我遗漏了什么?

在进一步检查之后,似乎对我来说最好的解决方案是为排队函数提供一个填充了0的缓冲区


它使球滚动,导致我的回调被调用,并进入等待状态,等待传入的数据发送给说话人。

为什么不直接从主线程调用回调一次呢?