下面是对addCallbackBuffer的解释:
http://developer.android.com/reference/android/hardware/Camera.html#addCallbackBuffer(byte[])
我不明白这个机制以及如何使用它。我们可以添加一个或多个缓冲区。假设我们添加了10个缓冲区。是否在填充10缓冲区时调用onPreviewFrame方法?
假设从缓冲队列中删除了一个缓冲区,并使用该缓冲区调用onPreviewFrame。当我们用到达的缓冲区调用addCallbackBuffer方法时,缓冲区是否被添加到队列的头部,然后用该缓冲区调用下一个onPreviewFrame?
当我们调用addCallbackBuffer时,如何获取帧的时间戳?
当我们调用addCallbackBuffer时有帧丢失吗?

最佳答案

将setPreviewCallbackWithBuffer和addCallbackBuffer一起使用。
首先,应该在调用setPreviewCallbackWithBuffer之前调用addCallbackBuffer。您可以通过为4-5帧调用addCallbackBuffer来添加缓冲区。这取决于你的项目。一帧需要多少字节expains here.
每次调用onPreviewFrame时,都会使用addCallbackBuffer添加的缓冲区。只要addCallbackBuffer添加了足够的缓冲区,就会调用onPreviewFrame。如果onpreviewframe没有缓冲区,则开始删除帧,并且不调用onpreviewframe。
所以在执行过程中应该一直调用addCallbackBuffer。处理数据后,可以使用onPreviewFrame上的byte数组参数调用addCallbackBuffer。这样,您总是重用相同的缓冲区。
如果有一点我没有解释,请告诉我。

07-27 13:25