1
如何知道隊列中當前的回調數量?Android攝像頭獲取隊列的回調緩衝區長度
有時計數會下降到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 /相機-JNI:使用回調緩衝從長度的隊列4
但有時用相同的代碼,它說:
D/Ca mera-JNI:使用長度爲1的隊列中的回調緩衝區
我怎麼知道出現了問題並重置了這些緩衝區?
processFrame只需要15ms。我懷疑在這段時間內,預覽幀會拍攝3-4次。你能告訴我,如果以前仍在處理中,onPreviewFrame會發生什麼? –
我添加了關於默認線程的註釋。你在調用'Camera.open()'什麼線程?主線程上的 – szym
。我發現問題是什麼。但它沒有解決這個問題。 UI邏輯拋出了一個異常,在這個異常中除了1個onPreviewCallbacks被佔用。所以製作另一個線程並不能解決問題。如果通話間的時間太長,我決定重新設置回撥。 –