gpt4 book ai didi

java - 在 Camera2 api 上使用 captureBurst 时 JPEG 回调超时

转载 作者:行者123 更新时间:2023-12-01 11:14:57 29 4
gpt4 key购买 nike

我正在使用camera2 api从captureBurst中获取一堆图像。该应用程序是camera2basic 的略微修改版本。

图像读取器已声明:

ImageReader multiReader = ImageReader.NewInstance(width, height, ImageFormatType.Jpeg, 10);

我正在使用这个cameraCaptureCallback:

private class CameraCaptureStateListener: CameraCaptureSession.StateCallback
{

public Action<CameraCaptureSession> OnConfigureFailedAction;
public override void OnConfigureFailed (CameraCaptureSession session)
{
if (OnConfigureFailedAction != null)
{
OnConfigureFailedAction (session);
}
}
public Action<CameraCaptureSession> OnConfiguredAction;
public override void OnConfigured(CameraCaptureSession session)
{
if(OnConfiguredAction != null)
{
OnConfiguredAction(session);
}
}
}

这是捕获 session :

mCameraDevice.CreateCaptureSession(outputSurfaces, new CameraCaptureStateListener()
{
OnConfiguredAction = (CameraCaptureSession session) => {
try
{
List<CaptureRequest> requests = new List<CaptureRequest>();
for(int i = 0; i < 10; i++)
{
requests.Add(crBuilder.Build());
Log.Debug("CaptureRequest", "Added new captureRequst");
}
session.CaptureBurst(requests, captureListener, backgroundHandler);
Toast.MakeText (activity, "BurstCapture Complete", ToastLength.Long).Show ();
}
catch (CameraAccessException ex)
{
Log.WriteLine(LogPriority.Info, "Capture Session error: ", ex.ToString());
}
}
}, backgroundHandler );

这是我的错误日志:

[Adreno-EGL] <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LA.BF.1.1.1_RB1.05.00.02.042.016_msm8974_LA.BF.1.1.1_RB1__release_AU ()
[Adreno-EGL] OpenGL ES Shader Compiler Version: E031.25.03.00
[Adreno-EGL] Build Date: 02/11/15 Wed
[Adreno-EGL] Local Branch: mybranch7539026
[Adreno-EGL] Remote Branch: quic/LA.BF.1.1.1_rb1.10
[Adreno-EGL] Local Patches: NONE
[Adreno-EGL] Reconstruct Branch: AU_LINUX_ANDROID_LA.BF.1.1.1_RB1.05.00.02.042.016 + 62ca4eb + acd831d + 9f8b442 + e027a02 + cba30ba + 53c303a + a649d79 + 23e16f8 + 5e97da7 + cbd2a44 + 33d072a + 7aacf06 + 72b33e7 + 28f6f60 + b4c13d8 + NOTHING
[OpenGLRenderer] Initialized EGL, version 1.4
[OpenGLRenderer] Enabling debug mode 0
[CameraDeviceState] Legacy camera service transitioning to state CONFIGURING
[RequestThread-0] Configure outputs: 1 surfaces configured.
[Camera] app passed NULL surface
[CameraDeviceState] Legacy camera service transitioning to state IDLE
[CameraFragment: CameraCharacteristics] lensFocusDistanceCalibration =
[RequestQueue] Repeating capture request set.
[LegacyRequestMapper] convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[CameraDeviceState] Legacy camera service transitioning to state CAPTURING
[BufferQueueConsumer] [unnamed-24394-2] setMaxAcquiredBufferCount: invalid count 1000
[RequestQueue] Repeating capture request cancelled.
[CameraDeviceState] Legacy camera service transitioning to state IDLE
[CameraDeviceState] Legacy camera service transitioning to state CONFIGURING
[RequestThread-0] Configure outputs: 2 surfaces configured.
[Camera] app passed NULL surface
[RequestThread-0] configureOutputs - set take picture size to 4160x3120
[CameraDeviceState] Legacy camera service transitioning to state IDLE
[Choreographer] Skipped 1381 frames! The application may be doing too much work on its main thread.
Thread started: #3
[Mono] DllImport attempting to load: '/system/lib/libc.so'.
[Mono] DllImport loaded library '/system/lib/libc.so'.
[Mono] DllImport searching in: '/system/lib/libc.so' ('/system/lib/libc.so').
[Mono] Searching for 'gettid'.
[Mono] Probing 'gettid'.
[Mono] Found as 'gettid'.
[CaptureRequest] Added new captureRequst
[CaptureRequest] Added new captureRequst
[CaptureRequest] Added new captureRequst
[CaptureRequest] Added new captureRequst
[CaptureRequest] Added new captureRequst
[CaptureRequest] Added new captureRequst
[CaptureRequest] Added new captureRequst
[CaptureRequest] Added new captureRequst
[CaptureRequest] Added new captureRequst
[CaptureRequest] Added new captureRequst
[LegacyRequestMapper] convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[RenderScript] Application requested CPU execution
[RenderScript] 0xb8382058 Launching thread(s), CPUs 4
[CameraDeviceState] Legacy camera service transitioning to state CAPTURING
[RequestThread-0] Received jpeg.
[RequestThread-0] Producing jpeg buffer...
[ImageReader_JNI] ImageReader_imageSetup: Receiving JPEG in HAL_PIXEL_FORMAT_RGBA_8888 buffer.
[LegacyRequestMapper] convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[RequestThread-0] Received jpeg.
[RequestThread-0] Producing jpeg buffer...
[LegacyRequestMapper] convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[RequestThread-0] Received jpeg.
[RequestThread-0] Producing jpeg buffer...
[LegacyRequestMapper] convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[RequestThread-0] Received jpeg.
[RequestThread-0] Producing jpeg buffer...
[RequestThread-0] Hit timeout for jpeg callback!
[LegacyRequestMapper] convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[RequestThread-0] Hit timeout for jpeg callback!
[RequestHolder] Capture failed for request: 1
[LegacyRequestMapper] convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[RequestThread-0] Hit timeout for jpeg callback!
[RequestHolder] Capture failed for request: 1
[LegacyRequestMapper] convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[RequestThread-0] Hit timeout for jpeg callback!
[RequestHolder] Capture failed for request: 1
[LegacyRequestMapper] convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[RequestThread-0] Hit timeout for jpeg callback!
[RequestHolder] Capture failed for request: 1
[LegacyRequestMapper] convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[RequestThread-0] Hit timeout for jpeg callback!
[RequestHolder] Capture failed for request: 1
[LegacyRequestMapper] convertRequestMetadata - control.awbRegions setting is not supported, ignoring value
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[LegacyRequestMapper] Only received metering rectangles with weight 0.
[RequestThread-0] Hit timeout for jpeg callback!
[RequestHolder] Capture failed for request: 1
[CameraDeviceState] Legacy camera service transitioning to state IDLE
[CameraDeviceState] Legacy camera service transitioning to state CONFIGURING
[RequestThread-0] Configure outputs: 1 surfaces configured.
[Camera] app passed NULL surface
[CameraDeviceState] Legacy camera service transitioning to state IDLE
[ImageReader_JNI] ImageReader_imageSetup: Receiving JPEG in HAL_PIXEL_FORMAT_RGBA_8888 buffer.
[ImageReader_JNI] ImageReader_imageSetup: Receiving JPEG in HAL_PIXEL_FORMAT_RGBA_8888 buffer.
[Legacy-CameraDevice-JNI] produceFrame: Pixel buffer needs size 1529528, cannot fit in gralloc buffer of size 1248
[Legacy-CameraDevice-JNI] LegacyCameraDevice_nativeProduceFrame: Error while producing frame Invalid argument (-22).
Thread started: #4

另外仅供引用,这是来自 Xamarin Studio,这就是为什么它是用 C# 而不是 Java 编写的

看来,因为我使用 xamarin 来单步执行代码,所以它没有停止所有线程,这导致 Activity 线程(已停止)和 jpeg 缓冲区之间出现竞争条件,从而导致 jpeg回调错误。

最佳答案

在您的 Camera 2 API View 中修改此行

imageReader = ImageReader.newInstance(largest.getWidth(), largest.getHeight(),ImageFormat.JPEG, 2);

关于java - 在 Camera2 api 上使用 captureBurst 时 JPEG 回调超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31946796/

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