什么是SLDataLocator_AndroidSimpleBufferQueue(Android 4.3)?

时间:2014-02-24 17:13:50

标签: android c audio android-ndk opensl

“2”代表以下内容:

SLDataLocator_AndroidSimpleBufferQueue loc_bq   =
{SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2};

根据我的阅读,它是缓冲区的数量。

为什么2?为什么不只是1?如果2更好,那么为什么不能让它更好呢?

由于

1 个答案:

答案 0 :(得分:7)

  

为什么2?

如果您有2个缓冲区,则可以在播放另一个缓冲区时填充新数据。另外,如果您希望能够使用Android的低延迟音频路径,那么直到最近您才需要在缓冲区队列中至少有2个缓冲区。

  

为什么不只是1?

如果你只有一个缓冲区,那么用新数据填充缓冲区变得非常棘手,因为你可能无法足够快地生成新数据。

  

如果2更好,那么为什么不能让它变得更好呢?

当你增加缓冲区的数量时,你也增加了延迟(从你将缓冲区排队到播放缓冲区的时间),假设你保持缓冲区大小相同。