gpt4 book ai didi

java - Android相机获取回调缓冲区队列的长度

转载 作者:太空宇宙 更新时间:2023-11-04 12:22:44 24 4
gpt4 key购买 nike

如何知道队列中当前的回调数量?

有时计数会下降到 1 个回调,而我每秒只能获取 2 帧。

设置:

private void setupCallback(int bufferSize)
{
mCamera.setPreviewCallbackWithBuffer(this);
for (int i = 0; i <= NUM_BUFFERS; ++i)
{
byte[] cameraBuffer = new byte[bufferSize];
mCamera.addCallbackBuffer(cameraBuffer);
}
}

@Override
public void onPreviewFrame(byte[] data, Camera camera)
{
processFrame(data);
camera.addCallbackBuffer(data);
}

日志说:

D/Camera-JNI: Using callback buffer from queue of length 4

但有时使用相同的代码:

D/Camera-JNI: Using callback buffer from queue of length 1

我如何知道出了问题并重置这些缓冲区?

最佳答案

Android API 中无法执行此操作。您可以将 processFrame 移动到另一个线程,以便 onPreviewFrame 本质上是非阻塞的。这样,大部分队列将在您的进程内,您将能够跟踪它。

您还应该注意,onPreviewFrame 是在您调用 Camera.open() 的同一线程上调用的。如果该线程正忙于执行某些操作,则不会调用 onPreviewFrame,并且相应的缓冲区将从缓冲池中删除。因此,我建议您使用专用线程来处理相机

关于java - Android相机获取回调缓冲区队列的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38670103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com