キューの現在のコールバック量を知るには?Androidカメラがキューのコールバックバッファの長さを取得する
カウントが1コールバックに低下することがあり、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しかかかりません。私は、その期間にonPreviewFrameが3〜4回撮影することを疑う。前の処理がまだ処理されている場合、onPreviewFrameに何が起こるか教えていただけますか? –
私はデフォルトスレッディングに関する注釈を追加しました。どのスレッドで 'Camera.open()'を呼びますか?メインスレッドの – szym
。私は問題が何かを知りました。しかし、それは問題を解決しませんでした。 UIロジックが1つのonPreviewCallbacksを除くすべての例外をスローしていました。だから別のスレッドを作ってもそれを修正することはできません。コール間の時間が長すぎるとコールバックをリセットすることに決めました。 –