当前位置: 首页 > news >正文

一次32bit有符号数据类型转换为64bit无符号数据类型引发的溢出错误

现象:

        在调试一款sensor,通过10帧->8帧->6帧,这样不断的降低帧率调试低照度下的图像效果。ISP配置文件上设置的最大曝光曝光参数为:

EXP:15266  Again:15494 Dgain:714  ISPDGain:1360。

当达到最低帧率最低亮度时,其调试工具界面上应该显示的也应该是如上最大的AE参数。

但实际情况是:在图像调试工具上显示的AE参数时,ispdgain显示居然可以达到1416,超过了isp配置中所设定的最大ispdgain阈值。
    

原因:

      当AE参数为:EXP:15266  Again:15494 Dgain:714  ISPDGain:1360,在驱动库调用接口设置相应节点EV值的时候,
      由于保存AE节点的数据类型都是设置的有符号的int类型,其最大值范围为-2147483648~2147483647,计算机中负数以补码的形式保存,故对应的二进制为:(10000000   00000000    00000000   00000000) ~(01111111   11111111   11111111  11111111)

    在计算节点最大EV值的时候,代入相应的曝光参数计算得到最大EV值为: 3360890160
    3360890160 转换为二进制为:11001000  01010011  00011101  00110000,已经超过了int的最大范围了。由于驱动库内部把最大EV值定义为无符号的64bit数据类型。转换为无符号的64位时,需要根据32位的最高位对64位高位的进行补充操作。即底层在转换将有符号数据类型转换为无符号的时候,需要根据高位进行判断,最高位是1的话则用1进行扩展高位,是0的话则用0进行扩展高位。
    即有符号的32bit 3360890160 转换为无符号的64bit类型时,转换得到如下二进制数值:
    11111111   11111111   11111111   11111111  11001000  01010011  00011101  00110000,转换为10进制为:18446744072775474480。因此对应节点最大的EV值为: 18446744072775474480
         
        AE算法逻辑计算的EV值超过最大EV值的时候,本应该限制到最大值。但是由于现在32bit 有符号转换为64bit无符号过程中,中间乘积出现了溢出情况,导致最大的EV值比实际的最大EV值大很多,无法进行最大值的EV值的限制。相当于最大EV值的限制操作失效了。
        后续调整曝光参数的过程中,特别是的照度下比较暗的情况下计算出来的EV值可能超过最大EV值,导致调试界面上显示的AE参数会超过配置文件中设置设置的最大曝光参数值。

        虽然sensor驱动会对相关的AE参数最大值进行限制,但是在应用中是通过ISP 驱动库相关的接口获取当前的AE参数,如果此时应用再将这些获取的AE操作做些逻辑处理时,可能就会引发一些错误行为。
   

措施:

        将相关节点AE参数数据类型由32bit 有符号的数据类型定义为64bit 无符号类型

相关文章:

一次32bit有符号数据类型转换为64bit无符号数据类型引发的溢出错误

现象: 在调试一款sensor,通过10帧->8帧->6帧,这样不断的降低帧率调试低照度下的图像效果。ISP配置文件上设置的最大曝光曝光参数为: EXP:15266 Again:15494 Dgain:714 ISPDGain:1360。 当达到最低帧率最低亮度时&#x…...

aosp安卓15新特性dump的wms窗口层级树优化的更加美观

背景: 近来在体验调试aosp15时候,使用了dumpsys activity containers时候,发现wms层级结构树有一个巨大的变化。 很多学员朋友对这个优化改进都给出巨大的点赞,有的学员朋友还想老版本自己实现一下这种树绘制: 对比…...

git的使用、router和route的区别以及v-show和v-if的差别

这里写目录标题 多人协作使用git的步骤(使用gitub)建立自己的空仓库连接远程仓库使伙伴可以使用仓库将代码拉入空仓库进行git指令的学习 router和route的区别router定义:用途: route定义:用途: v-show和v-i…...

Win系统通过命令行查看笔记本电池损耗/寿命/健康

在 Windows 10/11 系统中,可以通过指令查看笔记本电池的寿命情况,方法如下: 0,打开cmd/终端 键盘快捷键:Win R,然后输入cmd,点击【确定】 1,执行命令 在命令行中输入下面指令并按…...

【安当产品应用案例100集】029-使用安全芯片保护设备核心业务逻辑

我国工业企业普遍缺乏数据安全意识,对数据安全保护缺乏基本认识。这导致企业在数据安全方面的投入不足,保护能力基本不具备,难以有效应对数据安全风险。不过随着安全事件越来越多,很多工业企业的安全意识也越来越高,在…...

Redis高级篇之缓存一致性详细教程

文章目录 0 前言1.缓存双写一致性的理解1.1 缓存按照操作来分 2. 数据库和缓存一致性的几种更新策略2.1 可以停机的情况2.2 我们讨论4种更新策略2.3 解决方案 总结 0 前言 缓存一致性问题在工作中绝对没办法回避的问题,比如:在实际开发过程中&#xff0c…...

C++ 文件操作详解

C 文件操作详解 在C中,文件操作分为文本文件和二进制文件的操作,通过文件流类(ifstream、ofstream、fstream)进行文件的读写。这些类封装了文件的输入和输出操作,并继承了istream和ostream的功能,使得流对…...

计算机网络:网络层 —— 边界网关协议 BGP

文章目录 路由选择协议动态路由协议边界网关协议 BGPBGP 的基本概念BGP-4 的四种报文 路由选择协议 因特网是全球最大的互联网,它所采取的路由选择协议具有以下三个主要特点: 自适应:因特网采用动态路由选择,能较好地适应网络状态…...

Python数据可视化seaborn

产品经理在做数据分析时可能需要通过可视化来分析。seaborn官网 1. relplot 散点图 https://seaborn.pydata.org/examples/scatterplot_sizes.html import pandas as pd import seaborn as sns df pd.DataFrame({x: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],y: [8, 6, 7, 8, 4, 6,…...

Java继承练习

构建Person类(属性:名字、年龄、工作岗位),创建三个对象,并且根据对象的年龄或名字长度来进行冒泡排序 package chapter08.homework.test01;public class homework01 {public static void main(String[] args) {Perso…...

Excel怎么转换成word?分享两种方法!

Excel文件想要转换成word文档中,直接粘贴复制的话,可能会导致表格格式错乱,那么如何转换才能够保证表格不错乱?今天分享两个方法,excel表格转换为word文件。 方法一: 首先打开excel表格,将表格…...

nignx代理获取真实地址request.getRequestURL()

# 反向代理配置到后端接口 location /prod-api/ { # proxy_set_header Host $proxy_host; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarde…...

登录注册窗口(二)

登录注册窗口(二) 前言 在上一集我们就完成了整个登录注册窗口的布局,我们为了能够点击那两个特殊的按钮,我们就要去连接他们的槽函数。那么我们就开始这一集的内容吧。 需求分析 为了能够切换手机号与用户名的注册登录以及注…...

go channel 通道

一、底层实现 1、数据结构 type hchan struct {qcount uint // total data in the queuedataqsiz uint // size of the circular queuebuf unsafe.Pointer // points to an array of dataqsiz elementselemsize uint16closed uint32timer *t…...

论文阅读:Computational Long Exposure Mobile Photography (二)

这篇文章是谷歌发表在 2023 ACM transaction on Graphic 上的一篇文章,介绍如何在手机摄影中实现长曝光的一些拍摄效果。 Abstract 长曝光摄影能拍出令人惊叹的影像,用运动模糊来呈现场景中的移动元素。它通常有两种模式,分别产生前景模糊或…...

基于SSM+小程序的高校寻物平台管理系统(失物1)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 本基于微信小程序的高校寻物平台有管理员,用户以及失主三个角色。 1、管理员功能有个人中心,用户管理,失主管理,寻物启示管理,拾…...

gerrit 搭建遇到的问题

1、启动Apache,端口被占用 : AH00072: make sock: could not bind to address (0S 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。: AH00072: make sock: could not bind to address 0.0.0.:443 a AH00451: no listening sockets available, shutti…...

UBUNTU查看CPU核心数

UBUNTU查看CPU核心数 前言一、使用lscpu命令1. 执行命令2. 查看输出 二、使用/proc/cpuinfo文件1. 查看文件2. 解释输出 三、使用nproc命令1. 执行命令2. 查看输出 四、使用htop或top工具1. 使用htop2. 使用top 五、使用inxi命令1. 执行命令2. 查看输出 六、使用图形界面工具1.…...

【JS】声明提升与块级作用域

我是目录 引言声明提升声明提升的理解函数表达式声明提升总结代码生成与查找变量的过程代码生成词法分析( Tokenizing/Lexing)语法分析( Parsing)代码生成生成代码总结查找变量不同版本中的执行上下文不同版本对执行上下文的定义let/constlet特点const特点let/const声明的变…...

Flink的流、批处理

Flink的数据流处理,是持续流模型,数据不会落地,上游和下游的Task同时启动,等待数据的到达,Flink的批处理还是用的MapReduce计算模型,先处理map端,再执行reduce端。 flink的流处理(STREAMING)&a…...

【文档翻译】QNX Neutrino RTOS 7.1用户手册 - 第五章 文件操作

本文翻译自BlackBerry官方提供的QNX Neutrino RTOS User’s Guide,仅供学习参考使用 第五章 文件操作 文章目录第五章 文件操作文件类型文件名和路径名绝对路径和相对路径点和点点目录没有硬盘字母以点开头的路径名扩展名路径空间映射文件名规则所有内容的存储位置…...

大中小型企业数据配置年度成本估算分析

引言 在数字化转型浪潮下,数据已成为企业的核心资产。无论是初创公司、中型企业还是大型集团,合理规划数据存储、处理与分析的成本,对于优化IT预算、提升投资回报率至关重要。本文旨在为不同规模的企业提供一个清晰、可操作的年度数据配置成本…...

Structured3D完整指南:如何用3D结构化数据轻松构建智能室内场景

Structured3D完整指南:如何用3D结构化数据轻松构建智能室内场景 【免费下载链接】Structured3D [ECCV20] Structured3D: A Large Photo-realistic Dataset for Structured 3D Modeling 项目地址: https://gitcode.com/gh_mirrors/st/Structured3D 如果你正在…...

Verilator仿真保姆级避坑指南:从安装最新版到用GTKWave看波形的完整流程

Verilator仿真实战手册:从源码编译到波形调试的深度解析 1. 为什么选择Verilator:开源EDA工具链的新选择 在数字电路设计领域,仿真验证环节往往决定着项目成败。传统商业仿真器虽然功能强大,但高昂的授权费用和复杂的配置流程让许…...

2026论文写作工具红黑榜:一键生成论文工具怎么选?一篇讲透:

2026年论文写作工具红黑榜出炉,红榜优先选千笔AI、ThouPen、豆包,适配国内学术规范;黑榜避开低质免费工具、无真实引用平台、过度依赖全文生成的工具。选择时建议按需求匹配三维模型:需求匹配度 - 数据可信度 - 成本承受力。一、红…...

从零构建企业级网络:Cisco 1841静态路由配置全攻略(附实验拓扑/排错指南/避坑手册)

🚀 从零构建企业级网络:Cisco 1841静态路由配置全攻略(附实验拓扑/排错指南/避坑手册) 摘要:本文基于《实验8 路由器的管理与配置》实战案例,深度剖析了从硬件选型、模块插拔、IP规划到静态路由配置的完整闭…...

oracle logminer

Oracle LogMiner 日志挖掘 【一、LogMiner 核心概念】LogMiner 是 Oracle 内置的日志分析工具,通过解析 redo log / 归档日志, 提取其中的 SQL 变更记录,用于:• 数据审计(谁改了什么、什么时候改的) • 数…...

我测了四款龙虾助手,最慢最傻的,都是最贵的

如果你现在用着某款龙虾助手觉得还行,先别急着点头—— 你可能只是还没用过真正好用的。 01 一个残酷的排行榜 过去几周,我认真用了四款 CLAW 系列的 AI 编程助手,俗称"龙虾助手":qcalw、easycalw、workbuddy、autoclaw。 结果?差距比我预想的大得多。 直接…...

Godot RL Agents实战:游戏开发者可用的轻量强化学习落地方案

1. 这不是“又一个强化学习教程”,而是给游戏开发者准备的RL落地切口你有没有过这样的经历:在GitHub上看到一个标着“Godot RL”的仓库,点进去发现README里全是PyTorch张量形状、Gymnasium环境注册、PPO超参数表格,再往下翻是几行…...

Godot纸牌游戏框架:分层架构与卡牌状态管理

1. 这不是又一个“通用游戏框架”,而是一套专为纸牌游戏设计的骨骼系统你有没有试过在Godot里从零搭一张卡牌游戏?我试过三次——第一次用Node2D硬堆,拖了二十多个场景,连抽卡动画都得手写Tween;第二次改用Resource做卡…...