【发布时间】:2015-09-28 14:41:28
【问题描述】:
想了解传递给addCallbackBuffer的预览缓冲区与通过onPreviewFrame传递的byte[]数组有什么关系,提示如下相关问题。
第一季度。我猜addCallbackBuffer 传入的缓冲区用于存储新的相机帧,并且在调用onPreviewFrame 之前,该缓冲区被复制到通过onPreviewFrame 传递的数据缓冲区中。如果是这种情况,这意味着我可以在输入onPreviewFrame 后立即调用addCallbackBuffer 重用我的预览帧缓冲区,并在处理完onPreviewFrame 返回的缓冲区后在函数末尾注明.对吗?
第二季度。我也不清楚使用两个预览帧缓冲区的机制。假设我在初始化期间添加了两个私有 byte[] 预览缓冲区,如下所示:
addCallbackBuffer(mPreviewBuffer1);
addCallbackBuffer(mPreviewBuffer2);
当我在onPreviewFrame 中时,如何知道使用了哪个预览缓冲区,以便我可以再次使用addCallbackBuffer 重新添加正确的预览帧缓冲区?
private byte[] mPreviewBuffer1;
private byte[] mPreviewBuffer1;
...
public void onPreviewFrame(byte[] camera, Camera c) {
...
// how do I decide which buffer to re-add?
//c.addCallbackBuffer(mPreviewBuffer1);
//c.addCallbackBuffer(mPreviewBuffer2);
...
}
第三季度。我是否正确理解另一个线程负责获取帧缓冲区,即只要预览缓冲区在队列中,我们将在 onPreviewFrame 执行时捕获帧?如果不是这样,拥有两个回调缓冲区对速度没有帮助,不是吗?
【问题讨论】:
标签: java android android-camera