4

下面的“2”代表什么:

SLDataLocator_AndroidSimpleBufferQueue loc_bq   =
{SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE, 2};

从我读过的内容来看,它是缓冲区的数量。

为什么是2?为什么不只是 1 ?如果 2 更好,为什么不 10 让它变得更好呢?

谢谢

4

1 回答 1

8

为什么是2?

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

为什么不只是 1 ?

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

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

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

于 2014-02-24T17:30:51.237 回答