【展锐】双摄帧同步踩坑_多摄帧同步时序-程序员宅基地

技术标签: android  camera  

导通配置步骤:
sensor_config.xml文件

主摄位置添加
<SensorRole>dualcam_master</SensorRole>
辅摄添加
<SensorRole>dualcam_slave</SensorRole>

驱动文件

软同步导通
sensor_ic_ops sensor_name_ops_tab中添加.read_aec_info = sensor_read_aec_info即可
硬件帧同步导通
在stream on函数中添加判断后调用写入寄存器的函数即可
主摄:
    if(sns_drv_cxt->is_multi_mode>0 && sns_drv_cxt->is_multi_mode != MODE_TUNING) {
    
        sensor_drv_set_master_FrameSync(handle, param); //函数里的寄存器最好按照datasheet来
    }
辅摄:
    if(sns_drv_cxt->is_multi_mode>0 && sns_drv_cxt->is_multi_mode != MODE_TUNING) {
    
        sensor_drv_set_slave_FrameSync(handle, param);
    }

软同步和硬同步只能存在一个,使用硬同步的话,软同步就得注释掉

帧同步确认

硬件帧同步确认
adb shell setprop persist.vendor.cam.bokeh.dump capdepth
1. 执行命令: adb shell setprop persist.vendor.cam.bokeh.dump capdepth
2. 打开虚化模式下相机对着显示器已运行的秒表工具“OnlyStopWatch_x64”显示界面进行拍照;
3. Dump yuv图片:adb pull data/vendor/cameraserver 指定存放位置;
4. 使用“yuv2bmp”工具将对应主副摄的Yuv图片转换为bmp图片,查看主副摄bmp图片秒表时间显示;
5. 主副摄帧同步时间差标准≤10ms,正常情况下几乎相等;
6. 测量主辅摄mipi data波形和sync信号波形

软同步确认
抓取实时log确认关键词:aec_alg_status_printf
ae.m,5,stb,near_stb,face_unstb,unlock,50Hz,fps[10.00, 30.00]:11.11
ae.s0,7,unstb,near_unstb,face_unstb,unlock,50Hz,fps[10.00, 30.00]:11.11
ae.m,6,stb,near_stb,face_unstb,unlock,50Hz,fps[10.00, 30.00]:11.11
ae.s0,8,unstb,near_unstb,face_unstb,unlock,50Hz,fps[10.00, 30.00]:11.11
ae.m,7,stb,near_stb,face_unstb,lock,50Hz,fps[10.00, 30.00]:11.11
ae.s0,9,unstb,near_unstb,face_unstb,unlock,50Hz,fps[10.00, 30.00]:11.11
ae.m,8,stb,near_stb,face_unstb,lock,50Hz,fps[10.00, 30.00]:11.11
ae.m表示主摄,ae.s0代表辅摄

到这里帧同步就算是导通了,坑在哪里,主要是硬件帧同步

1.在看文档时总能看到硬件帧同步上层固定19或者20fps,但是怎么固定又不告诉你
方法一:*#*#83781#*#*向右滑动找到HARDWAREZ中camera FPS这里全部设置为19或者20就算是固定fps了
方法二:adb shell setprop persist.vendor.cam.bokeh.preview.fps 1919 命令固定;
默认是 adb shell setprop persist.vendor.cam.bokeh.preview.fps 3010 1030fp浮动帧率

2.导通硬件帧同步后代码中的这个命令的值也要同步修改才算是硬件帧同步固定fps,
SprdCamera3OEMIf.cpp中setCamPreviewFps函数中可以看到此条命令也明确写了注释硬件帧同步不支持浮动帧率,
只能固定帧率;所以在导通硬件帧同步的时候见方法二默认他就是浮动帧率的,就算你按照浮动fps导通了硬件帧同
步,验证也没有问题,但是到测试开始测试后就会报隐藏问题,这就需要回头排查帧同步,而且很难排查到硬件帧
同步需要固定

硬件帧同步同软件帧同步对比

硬件帧同步:只能是固定帧率,这点会影响到算法和tuning调试,而且后续报问题较多,如环境亮度突然激增容易出
现卡顿或者卡死,主辅摄帧率不一致也会导致过曝;但是随着使用时间增长,他还是能够保证同步质量;
软同步:为浮动帧率,没有配置软同步会导致预览画面很暗或者很亮,但是展锐平台的AE能力不是很强,很容易导
致fps不一致,也就很容易没有同步上

双摄注意点:

最开始要给平台帮忙评估,主辅摄最大支持多少size,最大fps为多少,支持浮动还是固定帧率,不要拿到需求
就开始做
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LAJICSDN1/article/details/121899855

智能推荐

Android 中调用线程thread.stop 方法后报错,Deprecated Thread methods are not supported._timethread().stop();报错-程序员宅基地

文章浏览阅读3.9k次。03-16 15:39:03.082 16179-16179/tech.androidstudio.handlerdemotimer E/global: Deprecated Thread methods are not supported.03-16 15:39:03.082 16179-16179/tech.androidstudio.handlerdemotimer E/global: _timethread().stop();报错

%e5 转换汉字 php,汉字转Unicode编码,Unicode编码转汉字-程序员宅基地

文章浏览阅读2.3k次。/*** 汉字转Unicode编码* @param string $str 原始汉字的字符串* @param string $encoding 原始汉字的编码* @param boot $ishex 是否为十六进制表示(支持十六进制和十进制)* @param string $prefix 编码后的前缀* @param string $postfix 编码后的后缀*/function unicode..._%e5

东汉十三州以及各个郡的说明_三国地图十三州精确到城池-程序员宅基地

文章浏览阅读6.4w次,点赞7次,收藏10次。东汉十三州以及州下辖的郡县。_三国地图十三州精确到城池

响应式编程实现异步RPC,提升xxl-job调度吞吐量-程序员宅基地

文章浏览阅读1.1k次。在xxl-job中,RPC即用于调度中心请求执行器执行job、kill job,也用于执行器请求调度中心主动注册、执行结果上报。xxl-job实现的RPC类似Feign框架,是基于http..._xxljob 用的什么协议

C++ Json到对象的自动序列化和反序列化工作_c++ json序列化和反序列化-程序员宅基地

文章浏览阅读555次,点赞17次,收藏22次。JSERIALIZE_DEF_OBJECTLIST(Person,Object,objectList) //接受json中的objectList对象数组,对象数组使用此宏定义。JSERIALIZE_DEF_OBJECTTYPE(Person,Son,son) //接受json中的son对象,对象成员使用此宏定义。//输出反序列化结果。

DOSBOX 0.74模拟器安装Windows 95_dosbox imgmount-程序员宅基地

文章浏览阅读7.8k次,点赞2次,收藏6次。DosBox本身带有5.0版的DOS系统,启动后虚拟一个Z盘存放有Dosbox特有的外部指令,如config.com、imgmount.com等,经测试,可以顺利安装各版本的windows 3.1系统,但是不能安装win95,需要用原版的dos镜像启动才能安装。1. 获取启动盘镜像文件 下载Win95启动软盘镜像文件,名为boot.img,放到DosBox 0.74的目录下。2. 制作硬盘镜像文件_dosbox imgmount

随便推点

C++--继承基本概念、对象赋值转换、作用域_什么是赋值转换-程序员宅基地

文章浏览阅读254次,点赞5次,收藏2次。继承1. 继承的基本概念1.1 继承的定义1.2 继承基类成员访问方式的变化2. 基类和派生类对象赋值转换3. 继承中的作用域1. 继承的基本概念继承是面向对象程序设计使代码复用的最重要的手段,允许在保持原有类特性的基础上进行扩展,增加功能,产生新的类,称为派生类/子类。继承是类设计层次的复用。1.1 继承的定义派生类 : 继承方式 基类class Student : public Person1.2 继承基类成员访问方式的变化父类成员在子类中的访问权限(除过父类中的私有成员):_什么是赋值转换

模式识别(2)KNN分类_usps数据集是在哪里提出的-程序员宅基地

文章浏览阅读2.3k次,点赞10次,收藏36次。基于USPS和UCI数据集的近邻法分类一、问题描述 使用近邻算法进行分类问题的研究,并在USPS手写体数据集和UCI数据集上的iris和sonar数据上验证算法的有效性,并分别对近邻法中k近邻算法、最近邻算法和Fisher线性判别进行对比分析。二、数据集说明2.1 USPS手写体 USPS,美国邮政署,是美国联邦政府的独立机构,其中的手_usps数据集是在哪里提出的

Access根据出生日期计算年龄_Excel表格中怎么用出生日期计算年龄?这些方法好用哟...-程序员宅基地

文章浏览阅读1.9k次。  平时工作中用到Excel表格的几率特别大,也积累了一些小技巧,今天就给大家分享一下计算年龄的方法。  在Excel表格中利用“系统时间”和“出生年月”来计算“周岁年龄”、“虚岁年龄”和“实际年龄”是非常方便的,特别是人事管理和工资的统计中遇到的可能性比较大,一起来看一下计算年龄的方法吧。  方法一  第一步,如下图所示,先把需要计算年龄的出生日期输入到表格中。   第二步,然后在B2单元格中输..._access计算年龄

【EJB】异步方法调用-程序员宅基地

文章浏览阅读641次,点赞23次,收藏18次。虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

如何构建知识体系_网络智能知识体系的构建方法-程序员宅基地

文章浏览阅读286次。分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net先说一件值得思考的事情:高考的时候大家都是一样的教科书,同一个教室,同样的老师辅导,时间精力基本差不多,可是最后别人考的是清华北大或者一本,而你的实力只能考个三本,为什么?当然这里主要是智商的影响,那么其他因素呢?智商解决的问题能不能后天用其他方式来补位一下?大家平时都看过很多方法论的文章,看的时候很爽觉得非常有用,但是一两周后基本还是老样子了。其中有很大_网络智能知识体系的构建方法

超全的数组去重12种方法_数组去重方法-程序员宅基地

文章浏览阅读2.7w次,点赞33次,收藏349次。前言数组去重,可以说是一个比较常见的面试题,今天来盘点一下都有哪些方法可以实现数组去重。方法1、双重for循环这是一个最笨的方法,双重循环。var arr = [1, 2, 3,4 ,5,6, 4, 3, 8, 1] // 数组去重: // 方法1: 双重for 循环 function newArrFn (arr) { // 创建一个新的空数组 let newArr = [] for(let i = 0;i<arr.length;i+_数组去重方法

推荐文章

热门文章

相关标签