sof freeze(SOF:start of frame)表示ISP这边没有收到sensor这边输出的图像帧数据,这时必须检查 CSID/CSIPHY/CAMIF是否出错。有专门建立了thread来负责SOF的检测,start_sof_check_thread() -> mct_bus_sof_thread_run(),log当中会有下面的错误发出:

// msm-3.18/drivers/media/platform/msm/camera_v2/msm.ccase MSM_CAM_V4L2_IOCTL_NOTIFY_DEBUG: {if (event_data->status) {pr_err("%s:Notifying subdevs about potential sof freeze\n",__func__);

首先看能否dump出现数据:

/*
0 Disabled; this value is set by default
2 Dump preview frames
8 Dump snapshot frames
16 Dump video frames
*/adb root
adb shell setprop persist.camera.isp.dump 8
adb shell chmod 777 /data

Verifying the VFE hardware configuration

In the msm_isp_axis_util.c file, locate the following code snippet:if (vfe_dev->dump_reg)msm_camera_io_dump_2(vfe_dev->vfe_base, 0x900);Replace it with:if (1)msm_camera_io_dump_2(vfe_dev->vfe_base, 0x900);

若声明的传感器输出大小与 VFE 实际接收到的传感器输出大小之间不匹配,将发生 CAMIF错误。

//mm-camera/mm-camera2/media-controller/modules/iface2/iface_util.cstatic void iface_util_dump_camif_cfg(struct msm_vfe_input_cfg *input_cfg)
{struct msm_vfe_pix_cfg *pix_cfg = NULL;if (input_cfg == NULL)return;pix_cfg = &input_cfg->d.pix_cfg;IFACE_HIGH("=====Camif DUMP cfg for PIX interface====\n");IFACE_HIGH("camif input type = %d(MIPI=3), op_pix_clk = %d\n",pix_cfg->camif_cfg.camif_input, input_cfg->input_pix_clk);IFACE_HIGH("camif pix_pattern(RGRG-0/GRGR-1/BGBG-2/GBGB-3) = %d\n",pix_cfg->pixel_pattern);IFACE_HIGH("camif first_pix = %d, last_pix = %d\n",pix_cfg->camif_cfg.first_pixel, pix_cfg->camif_cfg.last_pixel);IFACE_HIGH("camif first_line = %d, last_line = %d\n",pix_cfg->camif_cfg.first_line, pix_cfg->camif_cfg.last_line);IFACE_HIGH("camif pixels_per_line = %d, lines_per_frame = %d\n",pix_cfg->camif_cfg.pixels_per_line, pix_cfg->camif_cfg.lines_per_frame);IFACE_HIGH("camif irq subsample pattern = %x, period = %d sof_step %d\n",pix_cfg->camif_cfg.subsample_cfg.irq_subsample_pattern,pix_cfg->camif_cfg.subsample_cfg.irq_subsample_period,pix_cfg->camif_cfg.subsample_cfg.sof_counter_step);
}

  将调试消息中指示的帧大小与 ISP 传感器的帧大小进行比较。在以下 CAMIF 错误示例中,错误状态 0x9a70a00 表示 ISP 接收帧的大小为 2471x2560(0x9a7 = 2471,0xa00 = 2560)。

01-01 08:07:20.175 E/mm-camera( 302): isp_hw_camif_dump_cfg: camif
input_format= 0
01-01 08:07:20.175 E/mm-camera( 302): isp_hw_camif_dump_cfg: camif
last_pix = 6527
01-01 08:07:20.175 E/mm-camera( 302): isp_hw_camif_dump_cfg: camif
last_line = 0
01-01 08:07:20.175 E/mm-camera( 302): isp_hw_camif_dump_cfg: camif
lines per frame = 2448
01-01 08:07:24.335 E/klogd (640): [81.563301]
msm_vfe40_process_error_status: camif error status: 0x9a70a00

如果存在不匹配,则根本原因可能如下:

  检查传感器设置是否正确,是否满足分辨率大小的要求。例如,传感器的输出大小配置为 12 MB,但 ISP 的接收大小却配置为 8 MB。可能有些传感器无法确保在新分辨率设置发送至传感器后,最初的帧大小能够满足要求。在这种情况下,需要与传感器供应商一起解决此问题。

【Android Camera】SOF Freeze相关推荐

  1. 【Android Camera】之 Preview

    为什么80%的码农都做不了架构师?>>>    Android Camera小系统: 嗯--直接看Camera HAL层,它实现是主要的工作, 它一般通过ioctl调用V4L2 co ...

  2. 【Android Camera】之花落知多少

         我对Android Camera的认识,会陆续的全部写下来,逐步完善大脑里的Camera网络.   1.Android Camera的2个独立进程 Android Camera 是C/S架构 ...

  3. 【Android Camera】马达相关

    (1)最初问题:camera后摄在退出时,马达没有恢复到默认的位置就直接断电了,会听到有咔嚓的一声. 在module_sensor.c中添加如下代码,可解决马达的声音. if(module_param ...

  4. 【Android camera】开发之三:深入理解相机ISP(图像信号处理)必看文章

    目录 成像引擎 我们带着以下问题来了解isp 需要ISP模块的原因有2个方面 一个是镜头和Sensor的物理缺陷(不完美) 二是拍摄的光线条件多样,镜头和Sensor需要根据环境做适应(就像人眼要通过 ...

  5. 【Android RTMP】x264 图像数据编码 ( Camera 图像数据采集 | NV21 图像数据传到 Native 处理 | JNI 传输字节数组 | 局部引用变量处理 | 线程互斥 )

    文章目录 安卓直播推流专栏博客总结 一. NV21 数据传入 Native 层 二. jbyte * 数据类型 ( Java 中的 byte[] 数组传入 JNI 处理方式 ) 三. 局部引用处理 四 ...

  6. 【Android RTMP】Android Camera 视频数据采集预览 ( 图像传感器方向设置 | Camera 使用流程 | 动态权限申请 )

    文章目录 安卓直播推流专栏博客总结 一. Camera 传感器方向简介 二. Camera 图像传感器横向显示数据 三. Camera 图像传感器纵向显示数据 四. 设置 Camera 预览数据方向 ...

  7. 【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )

    文章目录 安卓直播推流专栏博客总结 一. Android 端数据采集涉及到的相关概念 二. Camera 预览图像尺寸设置 三. 获取摄像头采集的数据格式 安卓直播推流专栏博客总结 Android R ...

  8. 【Android RTMP】安卓直播推流总结 ( 直播服务器搭建 | NV21 图像采集 | H.264 视频编码 | PCM 音频采集 | AAC 音频编码 | RTMP 包封装推流 )

    文章目录 一. 安卓直播推流专栏博客总结 二. 相关资源介绍 三. GitHub 源码地址 四. 整体 Android 直播推流数据到服务器并观看直播演示过程 Android 直播推流流程 : 手机采 ...

  9. 【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频采样数据 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )

    文章目录 安卓直播推流专栏博客总结 一. FAAC 编码器编码 AAC 音频采样数据 二. 封装 RTMP 音频数据头 三. 封装 RTMP 音频数据类型 四. 拷贝 AAC 音频数据到 RTMPPa ...

  10. 【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频解码信息 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )

    文章目录 安卓直播推流专栏博客总结 一. FAAC 编码器编码 AAC 音频解码信息 二. 封装 RTMP 音频数据头 三. 封装 RTMP 音频数据类型 四. 拷贝 AAC 音频数据到 RTMPPa ...

最新文章

  1. execute、executeQuery和executeUpdate之间的区别
  2. InnoDB Double write
  3. jodd-StringTemplateParser使用
  4. Ubuntu下的第一个博客
  5. jieba.cut与jieba.lcut的区别
  6. php 强制输出数组,php怎么将对象强制转数组
  7. 如何使用Xcode分析调试在真机运行的UE4 IOS版游戏
  8. 项目支持规划标准文档编写要点
  9. Android 去除最上面应用名称及图标
  10. 【sketchup 2021】草图大师图像输出与渲染之Enscape渲染(优秀的实时渲染软件)的安装与软件说明,并在sketchup软件中调出Enscape软件和使用。
  11. 小程序input textarea 禁止粘贴实现
  12. 博士申请 | 北京大学MILab招收人工智能/医学影像方向2022级博士生
  13. vmware虚拟机ping不通主机
  14. 搜狗首席科学家柳超博士谈“字根嵌入”让机器更懂中文
  15. XAMPP下安装微博模板
  16. 一篇博客收能收录计算机网络?
  17. c语言程序烧写步骤,单片机烧写程序步骤
  18. 微信小程序消息推送通知模板id生成获取
  19. 几个常见网络故障修复命令
  20. 企业微信oauth认证_OAuth验证接口

热门文章

  1. wireshark中筛选中文内容
  2. 黄冈市2021高考成绩查询系统,黄冈师范学院
  3. 大连首闻grid二次开发增强文档
  4. Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns解决方法
  5. Unity编程-初级篇
  6. tex的bib引用时出现 empty ’thebibliography' environment
  7. Adjustment Office
  8. 设置win7一直以管理员身份运行
  9. ps去水印教程_Ps去水印教程:简单三步教新手学习去狮子图像上的水印,多余的文...
  10. 笔记本电脑蓝牙设置开关消失不见的处理方法