问题描述:
RK3288 USB UVC camera 摄像头 VIDIOC_DQBUF Failed!!! err[I/O error]
Open camera 成功:
02-22 14:54:56.398 185-878/? I/CameraClient: Opening camera 0
02-22 14:54:56.398 185-878/? D/CameraHal: camera_get_camera_info(1347): camera_get_camera_info(1347): camera_0 facing(0), orientation(90)
02-22 14:54:56.398 185-878/? I/CameraHal: camera_device_open(501): camera_device open
02-22 14:54:56.399 185-878/? D/CameraHal: gCameraHalLogLevel: 0
02-22 14:54:56.399 185-878/? D/CameraHal: CameraHal(121): it is a uvc camera!
02-22 14:54:56.399 648-676/com.android.systemui E/CameraManagerGlobal: Camera id 0 has status changed to 0x80000000
但是,取像失败,从而导致系统camera打开失败:
02-22 15:11:11.680 185-2380/? D/CameraHal: startPreview(177): startPreview177:preview_w = 1280,preview_h = 720,drv_w = 1280,drv_h = 720
02-22 15:11:11.680 185-2380/? D/CameraHal: cameraSetSize(487): cameraSetSize(487):IN, w = 1280,h = 720
02-22 15:11:11.705 185-2380/? D/CameraHal: cameraStream(509): cameraStream(509):on = 1
02-22 15:11:12.543 185-2380/? D/CameraHal: startPreview(223): startPreview(223):OUT
02-22 15:11:12.543 185-2372/? D/CameraHal: displayThread(596): displayThread(596): receive CMD_DISPLAY_START
02-22 15:11:12.543 185-2372/? D/CameraHal: cameraDisplayBufferDestory(399): cameraDisplayBufferDestory(399): mANativeWindow is NULL, destory is ignore
02-22 15:11:12.554 185-2380/? D/CameraHal: commandThread(905): commandThread(905): CMD_PREVIEW_START out
02-22 15:11:12.554 185-2380/? D/CameraHal: setParameters(655): suppport focus modes:fixed, expect:fixed
02-22 15:11:15.040 185-2394/? E/CameraHal: getFrame(625): getFrame(625): VIDIOC_DQBUF Failed!!! err[I/O error]
02-22 15:11:15.040 185-2394/? E/CameraHal: getFrame(631): getFrame(631): camera driver or device may be error, so notify CAMERA_MSG_ERROR
修改方法:
diff --git a/CameraHal/CameraUSBAdapter.cpp b/CameraHal/CameraUSBAdapter.cpp
index b88dd17..adb446b 100644
--- a/CameraHal/CameraUSBAdapter.cpp
+++ b/CameraHal/CameraUSBAdapter.cpp
@@ -134,8 +134,8 @@ void CameraUSBAdapter::initDefaultParameters(int camFd)
params.set(KEY_PREVIEW_W_FORCE,"0");
params.set(KEY_PREVIEW_H_FORCE,"0");
- params.set(CameraParameters::KEY_SUPPORTED_PREVIEW_SIZES, parameterString.string());
- params.setPreviewSize(640,480);
+ params.set(CameraParameters::KEY_SUPPORTED_PREVIEW_SIZES, "1280x960,1280x720");
+ params.setPreviewSize(1280,960);
/*picture size setting*/
params.set(CameraParameters::KEY_SUPPORTED_PICTURE_SIZES, parameterString.string());
params.setPictureSize(mCamDriverFrmWidthMax, mCamDriverFrmHeightMax);
注:params.setPreviewSize(1280,720); 这个里面的参数为camera sensor的输出分辨率。