Camera addCallbackBuffer机制如何工作?

Mur*_*rat 4 camera android buffer frame

以下是addCallbackBuffer的解释:http: //developer.android.com/reference/android/hardware/Camera.html#addCallbackBuffer(byte [])

我无法理解这种机制以及如何使用它.我们可以添加一个或多个缓冲区.假设我们添加了10个缓冲区.填充10个缓冲区时是否调用OnPreviewFrame方法?

假设从缓冲区队列中删除缓冲区,并使用该缓冲区调用OnPreviewFrame.当我们使用到达的缓冲区调用addCallbackBuffer方法时,是否将缓冲区添加到队列的头部,然后使用该缓冲区调用下一个OnPreviewFrame?

当我们调用addCallbackBuffer时,我们如何获取帧的时间戳?

当我们调用addCallbackBuffer时是否有任何帧丢失?

far*_*way 9

将setPreviewCallbackWithBuffer和addCallbackBuffer一起使用.

首先,您应该在调用setPreviewCallbackWithBuffer之前调用addCallbackBuffer.您可以通过调用addCallbackBuffer 4-5帧来添加缓冲区.这取决于你的项目.一帧需要多少字节在这里表达..

每次调用onPreviewFrame时,都会使用addCallbackBuffer添加的缓冲区.只要addCallbackBuffer添加了足够的缓冲区,就会调用onPreviewFrame.如果onPreviewFrame没有剩余缓冲区,则会开始丢弃帧并且不会调用onPreviewFrame.

所以你应该在执行期间继续调用addCallbackBuffer.处理完数据后,可以在onPreviewFrame上使用字节数组参数调用addCallbackBuffer.通过这种方式,您始终可以重用相同的缓冲区.

如果有一点我错过了解释,请告诉我.