摄像机现在可以以 SVAC 3.0 录像,解码器是我们写的
SVAC 是中国的安防系统国家视频标准,其第三版甚至尚未批准——还处于公开征求意见的草案阶段。Hi3516CV6xx 上的摄像机现在就能编码它并通过 RTSP 提供,libsvac3d 能把这个码流拆开。它接入 FFmpeg,所以任何东西都能播放。
解码器是根据草案文本写的。凡文本与真实码流所需不符之处,docs/errata.md 记录了解码器的实际做法及原因。测试语料库中的每一张图像都与参考解码器逐位一致地解码。
它也比厂商的解码器快。单线程时它在每个片段上都领先,四线程时差距拉开:最重的片段上我们用 0.95 s,厂商用 1.40;2560x1440 的片段上是 1.59 s 对 1.76。内部有手写的 x86 和 ARM SIMD 内核、我们自己的熵解码器,以及多张图像同时解码——而且无论线程数多少,输出的比特都完全一致。
我们还在同一块芯片和同样的片段上测了 SVAC3 在压缩上能带来什么。答案令人清醒:相对 H.265 它节省 0 到 6%,属于同一档次。选它是为了满足中国的合规要求,不是为了省带宽。作为对比,H.264 在这些片段上比 H.265 多要 10-21%。
XM510 的开放 ISP,白平衡比出厂的更好
ISP 是把传感器输出的原始数值变成图像的部分,在雄迈上它一直是闭源的。现在有了我们自己的守护进程:自动曝光、自动白平衡、降噪、按增益锐化、抑制市电灯具造成的条带、校准过的色彩矩阵,还有一个传感器框架,里面已有六款。在两块实机板卡上验证过:带 JX-H62 的实验室 XM510,以及带 AR0130 的 53X13 板卡。
白平衡结果比出厂的更准。白天在普通房间里,厂商的会偏青:它把昏暗的木头、米色和橙色的椅子当成灰色,据此设定增益,色卡上真正的灰色块最后落在 R/G 0.35。我们提高了像素被计为灰色的亮度门槛,现在只统计亮的像素;整帧结果随后落在色卡灰色的 5% 以内。而当亮灰色像素少于三百个时,ISP 会保持现有增益而不是来回搜索——否则在曝光把画面拉起来之前的最初几帧里,它自己也会掉进同样的青色陷阱。
做法本身才是有意思的部分:出厂 ISP 的行为是在我们自己的模拟器里被追踪的。数字孪生已经不再只是演示,而成了你用来做逆向工程的工具。全部内容在 openxiongmai。
模拟器里来了五家新厂商
Allwinner、Fullhan、Grainmedia、更多雄迈和 SigmaStar 一起进入了 qemu-bench。而且不只是“内核能启动”:Allwinner V831 上的 YI 摄像机转储从自己的闪存启动,带网络、SD 卡和编码图像;SigmaStar MSC313E 上的零售摄像机转储通过 RTSP 提供 H.264;XM530V200、XM533 和 XM535 上的 Sofia 则向同一处提供 H.265。
统一的引导加载程序仓库收下了 Ingenic
那是一种不同的架构,MIPS,T40 和 T41 最先能构建,包括 NAND 镜像。XM V200 系列的镜像也进入了 OpenIPC/u-boot。
叠在视频上的那行字变得可编程了
以前它只需要时间和一个名字。现在它可以用摄像机知道的关于自身的任何值——管芯温度、快门、名字、地址、运行时长、仪表读数。你自己的值放进一个文件,摄像机就把里面的内容画上去,所以摄像机上的脚本能写出的任何东西都能上画面。网页界面把这一切排成按钮,摄像机自己提供可用项的列表。
其他
- 云台有了预置位。 存储一个位置、回到它、删除它——通过浏览器里的控制面板、通过 ONVIF 和通过 DVRIP。
- 仪表读数达到了可用状态。 读数可以作为单独一行直接画到视频上。摄像机在抄表过程中会等待滚筒转完而不是在那一刻写下无意义的数据,计数在重启后保留,摄像机稍微转动时窗口会自行调整,仪表正在忙什么会显示在
/metrics上。 - 图像防抖现在在 SigmaStar 上可用,其效果是从视频上测出来的,而不是口头断言的。
- 板卡目录增加了几百个条目:Anjoy Vision 自己的档案和另外 59 个模块、Haixin Weishi 的模块、CamHi 目录。还有来自社区的详细笔记——Tino Darkness 梳理了 46 块 Anjoy 板卡,带照片和 1 脚标记。
- 你可以把自己两个 Club 账号合并成一个,如果你某天通过 Telegram 登录、另一天通过 GitHub 登录的话。
- GK7201V200 被拉到了 GK7205V200 的水平,openingenic 修复了 T30 上的 ISP 访问器。
- OpenIPC 自去年八月起就是 Linux Foundation 的 Associate Member,现在每个页面的页脚都这么写着。