Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
说明:
1. 默认关闭,通过设置property debug.camera.preview为1 来打开
2. /data/下的dump目录需要自己创建,权限设置为777或者是media用户
3. dump出来的数据不用工具直接可以查看
4. 每设置一次property会dump一帧,文件名包含分辨率以及第几帧
5. 用是UVC Camera,上来的就是mjpeg(yuyv)数据流
这里写图片描述
这里写图片描述
改动如下:
hardware/rockchip/camera/camerahal/CameraAdapter.cpp
diff --git a/CameraHal/CameraAdapter.cpp b/CameraHal/CameraAdapter.cpp
index 3a86e8c..50e4dd7 100755
--- a/CameraHal/CameraAdapter.cpp
+++ b/CameraHal/CameraAdapter.cpp
@@ -666,7 +666,6 @@ int CameraAdapter::getFrame(FramInfo_s** tmpFrame){
if(mPreviewFrameIndex < FILTER_FRAME_NUMBER || mPreviewFrameIndex % 2 == 0)
#endif
/*Kris, 170210, reduce fps to lower cpu usage. }*/
-
{
LOG2("%s:filter frame %d",__FUNCTION__,mPreviewFrameIndex);
mCamDriverStreamLock.lock();
@@ -699,6 +698,25 @@ int CameraAdapter::getFrame(FramInfo_s** tmpFrame){
*tmpFrame = &(mPreviewFrameInfos[cfilledbuffer1.index]);
LOG2("%s(%d): fill frame info success",__FUNCTION__,__LINE__);
+
+/*Kris, 170719, add support to dump preview data dynamicly. {*/
+ char value[PROPERTY_VALUE_MAX];
+ char filename[40];
+ property_get("debug.camera.preview", value, NULL);
+ if (atoi(value) > 0) {
+ sprintf(filename, "/data/dump/raw_%dx%d_%d.jpg",mCamDrvWidth,mCamDrvHeight,mPreviewFrameIndex);
+ FILE *debug_preview_fp = fopen(filename,"wb");
+ if(!debug_preview_fp) {
+ ALOGE("Create %s failed(%d, %s)",filename,debug_preview_fp, strerror(errno));
+ } else {
+ ALOGI("Dump preview data to file %s", filename);
+ fwrite(mPreviewFrameInfos[cfilledbuffer1.index].vir_addr ,mPreviewFrameInfos[cfilledbuffer1.index].frame_siz
+ fclose(debug_preview_fp);
+ }
+ property_set("debug.camera.preview", "0");
+ }
+/*Kris, 170719, add support to dump preview data dynamicly. }*/
+
// if (gLogLevel == 2)
// debugShowFPS();
getFrame_out: