2. 性能指标定义:帧率、延迟、吞吐量、功耗

做Camera驱动这么多年,我见过太多人一上来就调参数,结果越调越乱。为什么?因为连最基本的性能指标都没搞清楚。今天咱们就把这四个核心指标掰开揉碎了讲清楚。

2.1 帧率(FPS)—— 流畅度的命脉

帧率,说白了就是每秒能出多少张图。30fps、60fps、120fps,数字越大画面越流畅。

但这里有个坑:帧率不是越高越好。我遇到过客户非要跑120fps,结果传感器发热严重,画面全是噪点。嗯,这就是典型的「为了指标而指标」。

用户体验影响:

  • 24fps以下:明显卡顿,人眼能感知到帧与帧之间的跳跃
  • 30fps:视频通话的及格线,勉强流畅
  • 60fps:丝滑体验,大部分用户会觉得「很流畅」
  • 90fps以上:游戏和VR场景需要,普通场景感知不强

我个人习惯在调试时先确认目标帧率,再反推其他参数。比如你要跑60fps,那每帧的处理时间就不能超过16.67ms。这个数字要刻在脑子里。

2.2 延迟(Latency)—— 从按下快门到看见画面

延迟和帧率经常被混淆。我简单解释一下:帧率是「每秒能拍多少张」,延迟是「拍一张要等多久」。

举个例子:你玩射击游戏,帧率60fps很流畅,但按下开枪键到画面显示子弹飞出,中间隔了100ms。这就是延迟高。你想想看,这游戏还能玩吗?

延迟类型 典型值 用户体验
取图延迟 10-30ms 几乎无感知
处理延迟 30-100ms 轻微滞后,可接受
显示延迟 100-200ms 明显延迟,影响操作
端到端延迟 >200ms 无法忍受,必须优化

避坑指南:我曾经在调试一个AR眼镜项目时,帧率跑到了90fps,但用户反馈头晕。一测延迟,端到端延迟高达180ms。这就是典型的「高帧率掩盖了高延迟」问题。记住:帧率是面子,延迟是里子。

2.3 吞吐量(Throughput)—— 数据管道的粗细

吞吐量衡量的是单位时间内能处理多少数据。对于Camera来说,就是每秒能处理多少帧图像数据。

公式很简单:吞吐量 = 帧率 × 每帧数据量

举个例子:1080p@30fps,每帧数据量约6MB(YUV420格式),那吞吐量就是180MB/s。这个数字决定了你的ISP、DDR带宽、总线能不能扛得住。

我的经验:调试吞吐量时,别只看峰值。要看持续吞吐量。很多芯片标称能跑4K@60fps,但跑几分钟就降频了。为什么?因为散热跟不上。所以我在项目中都会做「压力测试」——跑满帧率至少30分钟,看会不会掉帧。

2.4 功耗(Power)—— 续航和发热的平衡

功耗这个指标,说实话,以前做驱动开发时不太重视。直到有一次,客户说「你们这个摄像头模组,手机用半小时就烫得拿不住」。从那以后,功耗成了我调试清单上的第一项。

Camera系统的功耗主要来自:

  • 传感器:占30-40%,帧率越高功耗越大
  • ISP:占25-35%,处理分辨率越高越耗电
  • DDR带宽:占15-20%,吞吐量越大越耗电
  • MIPI接口:占10-15%,数据速率越高越耗电

用户体验影响:

  • 发热:超过45°C,用户会感觉烫手
  • 续航:Camera持续工作,手机续航直接腰斩
  • 降频:温度过高触发降频,帧率暴跌

2.5 四个指标的权衡艺术

你可能会问:这四个指标能不能同时做到最好?答案是:不能。这是典型的「不可能三角」。

我画个简单的权衡关系:

高帧率 → 高吞吐量 → 高功耗 → 发热降频 → 帧率下降
低延迟 → 减少buffer → 可能丢帧 → 画质下降
高画质 → 大分辨率 → 高吞吐量 → 高功耗

所以实际项目中,我们做的不是「优化」,而是「权衡」。比如:

  • 视频通话场景:优先保证30fps稳定,延迟控制在100ms以内,功耗次之
  • 拍照场景:优先保证画质,延迟可以放宽到200ms
  • 游戏直播场景:帧率和延迟都要高,功耗只能硬扛

总结一下我的调试思路:

  1. 先定场景,再定指标优先级
  2. 用帧率反推每帧处理时间预算
  3. 用吞吐量验证硬件带宽是否够用
  4. 用功耗测试确认散热方案是否可行
  5. 最后用延迟测试验证用户体验

这四个指标,说白了就是Camera驱动的「四维空间」。你调好一个,另外三个可能就崩了。但掌握了它们之间的权衡关系,你就能在项目中游刃有余。

下一章,我会讲具体的性能测试工具和方法。到时候咱们拿实际数据说话。