From 0993fc3a6400c257d05c538f7fa5a84dc56ab357 Mon Sep 17 00:00:00 2001 From: Dmitry Ilyin <6576495+widgetii@users.noreply.github.com> Date: Fri, 30 Oct 2026 20:52:51 +0300 Subject: [PATCH] News for the week of 30 October, in all three languages Two things lead it. Cameras on the Hi3516CV6xx encode SVAC 3.0 -- China's national surveillance codec, whose third edition is still a public-comment draft -- and libsvac3d decodes it: bit-exact against the reference, plugged into FFmpeg, and faster than the vendor's decoder on every clip. We also measured what the codec buys, and said plainly that it is 0-6% over H.265, so it is a compliance choice rather than a bandwidth one. And the XM510 has an open ISP, whose white balance is measurably better than the factory one: the vendor's settles into a cyan cast in an ordinary daylit room, because dim wood and a beige chair pass for grey; counting only bright greys lands the whole frame within 5% of a colour chart's. The factory ISP was traced in our own emulator, which is the digital twin earning its keep. Also in the post: five more makers in qemu-bench, Ingenic in the unified U-Boot, a programmable OSD, PTZ presets, meters on the video, and the board catalogue's several hundred new entries. news.build.test.ts escaped only `&` when checking a page's title against the post's. This title has an apostrophe in it, which Astro renders as `'`, so a correct page failed a test that had simply never met one. It escapes the five XML characters now. --- ...6-10-30-an-open-decoder-and-an-open-isp.md | 102 ++++++++++++++++++ ...0-30-an-open-decoder-and-an-open-isp.ru.md | 101 +++++++++++++++++ ...0-30-an-open-decoder-and-an-open-isp.zh.md | 46 ++++++++ frontend/apps/site/src/data/news.json | 24 +++++ frontend/apps/site/src/lib/news.build.test.ts | 11 +- frontend/apps/site/src/lib/sitemap.golden.xml | 21 ++++ 6 files changed, 304 insertions(+), 1 deletion(-) create mode 100644 data/news/2026-10-30-an-open-decoder-and-an-open-isp.md create mode 100644 data/news/2026-10-30-an-open-decoder-and-an-open-isp.ru.md create mode 100644 data/news/2026-10-30-an-open-decoder-and-an-open-isp.zh.md diff --git a/data/news/2026-10-30-an-open-decoder-and-an-open-isp.md b/data/news/2026-10-30-an-open-decoder-and-an-open-isp.md new file mode 100644 index 00000000..84701c62 --- /dev/null +++ b/data/news/2026-10-30-an-open-decoder-and-an-open-isp.md @@ -0,0 +1,102 @@ +--- +title: An open decoder for China's video standard, and an open ISP for Xiongmai +date: 2026-10-30 +summary: "Cameras encode SVAC 3.0 now and we wrote the decoder for it, faster than the vendor's; the XM510 got an open image pipeline whose white balance beats the factory one; and five more chip makers arrived in the emulator." +author: OpenIPC team +--- + +## A camera can now record in SVAC 3.0, and we wrote the decoder + +SVAC is China's national video standard for security systems, and its third +edition is not even ratified yet — it is a public-comment draft. Cameras on the +Hi3516CV6xx encode it now and serve it over RTSP, and +[libsvac3d](https://github.com/OpenIPC/libsvac3d) takes that stream apart. It +plugs into FFmpeg, so anything can play it. + +The decoder is written from the draft's text. Where that text disagrees with +what real streams need, `docs/errata.md` records what the decoder does instead +and why. Every picture of the test corpus decodes bit for bit as the reference +decoder does. + +It is also faster than the vendor's decoder. On one thread it is ahead on every +clip, and on four the gap opens up: ours takes 0.95 s on the heaviest clip +against the vendor's 1.40, and 1.59 s against 1.76 on a 2560x1440 one. Inside +are hand-written SIMD kernels for x86 and ARM, an entropy decoder of our own, +and several pictures decoded at once — and whatever the thread count, the bits +that come out are identical. + +We also measured what SVAC3 buys in compression, on one chip and the same +clips. The answer is sobering: against H.265 it saves between 0 and 6%, which +puts it in the same class. Choose it to comply with Chinese requirements, not +to save bandwidth. For comparison, H.264 asks for 10-21% more than H.265 on +those clips. + +## An open ISP for the XM510, and its white balance is better than the factory one + +The ISP is the part which turns the raw numbers off the sensor into a picture, +and on Xiongmai it was closed. There is a daemon of our own now: auto-exposure, +auto white balance, noise reduction and sharpening by gain, suppression of the +banding mains lamps leave, calibrated colour matrices, and a framework for +sensors with six already in it. Verified on two live boards: the lab XM510 with +a JX-H62, and a 53X13 board with an AR0130. + +The white balance turned out more accurate than the factory one. In an ordinary +room in daylight the vendor's drifts cyan: it takes dim wood, a beige and +orange chair for grey, sets its gains by them, and the real grey patches of a +colour chart end up at R/G 0.35. We raised the brightness above which a pixel +counts as grey at all and now count only the bright ones; the whole-frame result +then lands within 5% of the chart's grey. And when there are fewer than three +hundred bright grey pixels the ISP holds the gains it has rather than hunting — +otherwise, in the first frames before exposure has brought the picture up, it +would fall into the same cyan trap itself. + +How it was done is the interesting part: the factory ISP's behaviour was traced +in our own emulator. The digital twin has stopped being a demonstration and +become the tool you reverse-engineer with. It is all in +[openxiongmai](https://github.com/OpenIPC/openxiongmai). + +## Five new makers in the emulator + +Allwinner, Fullhan, Grainmedia, more Xiongmai and SigmaStar all arrived in +[qemu-bench](https://github.com/OpenIPC/qemu-bench) at once. Not merely "the +kernel boots", either: a YI camera dump on an Allwinner V831 comes up off its +own flash with networking, an SD card and a coded picture; a retail camera dump +on a SigmaStar MSC313E serves H.264 over RTSP; and Sofia on the XM530V200, +XM533 and XM535 serves H.265 to the same place. + +## The unified bootloader repository took in Ingenic + +That is a different architecture, MIPS, and the T40 and T41 are the first to +build, NAND images included. Images for the XM V200 series landed in +[OpenIPC/u-boot](https://github.com/OpenIPC/u-boot) too. + +## The line drawn over the video became programmable + +It used to take the time and a name. It now takes any value the camera knows +about itself — the die temperature, the shutter, its name, its address, its +uptime, a meter reading. Your own value goes in a file and the camera draws +whatever is in it, so anything a script on the camera can write can go on the +picture. The web interface lays all of it out as buttons, and the camera itself +supplies the list of what is available. + +## Also + +- **A pan/tilt head has presets.** Store a position, go back to it, delete it — + from the pad in the browser, over ONVIF and over DVRIP. +- **Meter reading reached a working state.** The reading can be drawn straight + onto the video as a line of its own. The camera waits out a drum mid-carry + instead of writing nonsense at that moment, the count survives a restart, the + window adjusts itself if the camera is turned a little, and what the meter is + busy with shows up on `/metrics`. +- **Image stabilisation works on SigmaStar** now, and its effect is measured + off the video rather than asserted. +- **The [board catalogue](/cameras/boards) grew by several hundred entries**: + Anjoy Vision's own archive and 59 more modules, Haixin Weishi's modules, the + CamHi catalogue. Plus detailed notes from the community — Tino Darkness + worked through 46 Anjoy boards, with photographs and pin-1 markings. +- **You can merge two of your own [Club](/club) accounts** into one if you + signed in through Telegram one day and GitHub the next. +- **The GK7201V200 is brought up to where the GK7205V200 is**, and openingenic + fixed the ISP accessors on the T30. +- **OpenIPC has been an Associate Member of the Linux Foundation** since August + last year, which the footer of every page now says. diff --git a/data/news/2026-10-30-an-open-decoder-and-an-open-isp.ru.md b/data/news/2026-10-30-an-open-decoder-and-an-open-isp.ru.md new file mode 100644 index 00000000..090a27f0 --- /dev/null +++ b/data/news/2026-10-30-an-open-decoder-and-an-open-isp.ru.md @@ -0,0 +1,101 @@ +--- +title: Открытый декодер китайского видеостандарта и открытый ISP для Xiongmai +date: 2026-10-30 +summary: "Камеры научились снимать в SVAC 3.0, а мы написали к нему декодер — быстрее вендорского; у XM510 появился открытый тракт обработки картинки, чей баланс белого точнее заводского; а в эмулятор приехали ещё пять производителей чипов." +author: Команда OpenIPC +--- + +## Камера теперь умеет снимать в SVAC 3.0, а декодер к нему написали мы + +SVAC — китайский национальный стандарт на видео для систем безопасности, и его +третья редакция пока даже не утверждена, а лежит проектом на публичное +обсуждение. Камеры на Hi3516CV6xx теперь кодируют в него и отдают по RTSP, а +[libsvac3d](https://github.com/OpenIPC/libsvac3d) этот поток разбирает — и +подключается к FFmpeg, так что играет чем угодно. + +Декодер написан по тексту проекта. Там, где текст расходится с тем, что нужно +настоящим потокам, в `docs/errata.md` записано, как декодер поступает и почему. +Весь тестовый набор декодируется бит в бит так же, как эталонным декодером. + +И он быстрее вендорского. На одном потоке обгоняет на всех роликах, а на +четырёх разрыв становится заметным: самый тяжёлый ролик наш разбирает за +0,95 секунды против 1,40 у вендорского, кадр 2560x1440 — за 1,59 против 1,76. +Внутри ручная векторизация под x86 и ARM, свой энтропийный декодер и разбор +нескольких кадров одновременно; при этом на любом числе потоков на выходе +ровно те же биты. + +Заодно мы померили, что SVAC3 даёт по сжатию, на одном и том же чипе и на тех +же роликах. Ответ отрезвляющий: против H.265 он выигрывает от 0 до 6%, то есть +попадает в тот же класс. Брать его стоит ради соответствия китайским +требованиям, а не ради экономии канала. Для сравнения, H.264 на тех же роликах +просит на 10-21% больше H.265. + +## Открытый ISP для XM510, и баланс белого у него лучше заводского + +ISP — это та часть, которая превращает сырые данные с сенсора в картинку, и у +Xiongmai она была закрытой. Теперь есть свой демон: автоэкспозиция, +автоматический баланс белого, шумоподавление и резкость по усилению, +подавление полос от ламп, посчитанные цветовые матрицы и каркас для сенсоров — +шесть уже заведены. Проверено на двух живых платах: на лабораторной XM510 с +сенсором JX-H62 и на плате 53X13 с AR0130. + +Баланс белого оказался точнее заводского. Вендорский в обычной комнате при +дневном свете уходит в циан: он принимает за серое тусклое дерево, бежевое и +оранжевое кресло, выставляет по ним усиления — и настоящие серые поля цветовой +шкалы уезжают до R/G 0,35. Мы подняли порог яркости, с которого пиксель вообще +считается серым, и считаем только светлые: тогда результат по всему кадру +попадает в 5% от серого на шкале. А если светлых серых пикселей меньше +трёхсот, ISP держит прежние усиления и не бросается подбирать — иначе на +первых кадрах, пока экспозиция ещё не вытянула картинку, он сам свалился бы в +тот же циан. + +Интересно, как это делалось: поведение заводского ISP снимали в нашем же +эмуляторе. Цифровой двойник перестал быть демонстрацией и стал инструментом, +которым реверсят. Всё лежит в +[openxiongmai](https://github.com/OpenIPC/openxiongmai). + +## Пять новых производителей в эмуляторе + +Allwinner, Fullhan, Grainmedia, новые Xiongmai и SigmaStar приехали в +[qemu-bench](https://github.com/OpenIPC/qemu-bench) разом. Причём не +«загружается ядро», а по-настоящему: дамп камеры YI на Allwinner V831 +поднимается со своей же флешки, с сетью, картой и закодированной картинкой; +дамп розничной камеры на SigmaStar MSC313E отдаёт H.264 по RTSP; Sofia на +XM530V200, XM533 и XM535 отдаёт H.265 туда же. + +## Единый репозиторий загрузчиков принял Ingenic + +Это другая архитектура, MIPS, и первыми собрались T40 и T41, включая образы +для NAND. Туда же, в [OpenIPC/u-boot](https://github.com/OpenIPC/u-boot), +приехали образы для серии XM V200. + +## Строка поверх видео стала программируемой + +Раньше в неё можно было вписать время и имя. Теперь — любое значение, которое +камера о себе знает: температуру кристалла, выдержку, имя, адрес, время +работы, показание счётчика. Своё значение кладётся в файл, и камера рисует то, +что в нём лежит, — то есть вывести на картинку можно что угодно, что умеет +писать скрипт на камере. В веб-интерфейсе всё это разложено кнопками, а список +доступных значений камера отдаёт сама. + +## Ещё + +- **У поворотной головы появились пресеты.** Запомнить положение, вернуться к + нему, удалить — с пульта в браузере, по ONVIF и по DVRIP. +- **Счётчики доведены до рабочего состояния.** Показание теперь можно вывести + прямо на видео отдельной строкой. Камера дожидается, пока барабанчик доедет + до конца оборота, и не пишет в этот момент ерунду; счёт переживает + перезагрузку; окно само подстраивается, если камеру чуть повернули; а то, чем + камера сейчас занята, видно на `/metrics`. +- **На SigmaStar заработала стабилизация картинки**, и её эффект измерен по + самому видео, а не заявлен. +- **[Каталог плат](/cameras/boards) вырос сразу на несколько сотен записей**: + собственный архив Anjoy Vision и ещё 59 модулей, модули Haixin Weishi, + каталог CamHi. Плюс подробные заметки сообщества — Tino Darkness разобрал + 46 плат Anjoy, с фотографиями и обозначением первого вывода. +- **Два своих аккаунта в [клубе](/club) можно слить в один**, если входили то + через Telegram, то через GitHub. +- **GK7201V200 доведён до того же состояния, что и GK7205V200**, а в + openingenic поправили доступ к ISP на T30. +- **OpenIPC с августа прошлого года — ассоциированный член Linux Foundation**, + и теперь это написано в подвале каждой страницы. diff --git a/data/news/2026-10-30-an-open-decoder-and-an-open-isp.zh.md b/data/news/2026-10-30-an-open-decoder-and-an-open-isp.zh.md new file mode 100644 index 00000000..3b10d353 --- /dev/null +++ b/data/news/2026-10-30-an-open-decoder-and-an-open-isp.zh.md @@ -0,0 +1,46 @@ +--- +title: "中国视频标准的开放解码器,以及雄迈的开放 ISP" +date: 2026-10-30 +summary: "摄像机现在可以编码 SVAC 3.0,我们为它写了解码器,比厂商的更快;XM510 有了开放图像管线,白平衡胜过出厂的;模拟器里又来了五家芯片厂商。" +author: "OpenIPC 团队" +--- + +## 摄像机现在可以以 SVAC 3.0 录像,解码器是我们写的 + +SVAC 是中国的安防系统国家视频标准,其第三版甚至尚未批准——还处于公开征求意见的草案阶段。Hi3516CV6xx 上的摄像机现在就能编码它并通过 RTSP 提供,[libsvac3d](https://github.com/OpenIPC/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](https://github.com/OpenIPC/openxiongmai)。 + +## 模拟器里来了五家新厂商 + +Allwinner、Fullhan、Grainmedia、更多雄迈和 SigmaStar 一起进入了 [qemu-bench](https://github.com/OpenIPC/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](https://github.com/OpenIPC/u-boot)。 + +## 叠在视频上的那行字变得可编程了 + +以前它只需要时间和一个名字。现在它可以用摄像机知道的关于自身的任何值——管芯温度、快门、名字、地址、运行时长、仪表读数。你自己的值放进一个文件,摄像机就把里面的内容画上去,所以摄像机上的脚本能写出的任何东西都能上画面。网页界面把这一切排成按钮,摄像机自己提供可用项的列表。 + +## 其他 + +- **云台有了预置位。** 存储一个位置、回到它、删除它——通过浏览器里的控制面板、通过 ONVIF 和通过 DVRIP。 +- **仪表读数达到了可用状态。** 读数可以作为单独一行直接画到视频上。摄像机在抄表过程中会等待滚筒转完而不是在那一刻写下无意义的数据,计数在重启后保留,摄像机稍微转动时窗口会自行调整,仪表正在忙什么会显示在 `/metrics` 上。 +- **图像防抖现在在 SigmaStar 上可用**,其效果是从视频上测出来的,而不是口头断言的。 +- **[板卡目录](/cameras/boards)增加了几百个条目**:Anjoy Vision 自己的档案和另外 59 个模块、Haixin Weishi 的模块、CamHi 目录。还有来自社区的详细笔记——Tino Darkness 梳理了 46 块 Anjoy 板卡,带照片和 1 脚标记。 +- **你可以把自己两个 [Club](/club) 账号合并成一个**,如果你某天通过 Telegram 登录、另一天通过 GitHub 登录的话。 +- **GK7201V200 被拉到了 GK7205V200 的水平**,openingenic 修复了 T30 上的 ISP 访问器。 +- **OpenIPC 自去年八月起就是 Linux Foundation 的 Associate Member**,现在每个页面的页脚都这么写着。 diff --git a/frontend/apps/site/src/data/news.json b/frontend/apps/site/src/data/news.json index 26a4852a..c33e1ba3 100644 --- a/frontend/apps/site/src/data/news.json +++ b/frontend/apps/site/src/data/news.json @@ -1,4 +1,28 @@ [ + { + "slug": "an-open-decoder-and-an-open-isp", + "date": "2026-10-30", + "title": "An open decoder for China's video standard, and an open ISP for Xiongmai", + "summary": "Cameras encode SVAC 3.0 now and we wrote the decoder for it, faster than the vendor's; the XM510 got an open image pipeline whose white balance beats the factory one; and five more chip makers arrived in the emulator.", + "author": "OpenIPC team", + "body": "## A camera can now record in SVAC 3.0, and we wrote the decoder\n\nSVAC is China's national video standard for security systems, and its third\nedition is not even ratified yet — it is a public-comment draft. Cameras on the\nHi3516CV6xx encode it now and serve it over RTSP, and\n[libsvac3d](https://github.com/OpenIPC/libsvac3d) takes that stream apart. It\nplugs into FFmpeg, so anything can play it.\n\nThe decoder is written from the draft's text. Where that text disagrees with\nwhat real streams need, `docs/errata.md` records what the decoder does instead\nand why. Every picture of the test corpus decodes bit for bit as the reference\ndecoder does.\n\nIt is also faster than the vendor's decoder. On one thread it is ahead on every\nclip, and on four the gap opens up: ours takes 0.95 s on the heaviest clip\nagainst the vendor's 1.40, and 1.59 s against 1.76 on a 2560x1440 one. Inside\nare hand-written SIMD kernels for x86 and ARM, an entropy decoder of our own,\nand several pictures decoded at once — and whatever the thread count, the bits\nthat come out are identical.\n\nWe also measured what SVAC3 buys in compression, on one chip and the same\nclips. The answer is sobering: against H.265 it saves between 0 and 6%, which\nputs it in the same class. Choose it to comply with Chinese requirements, not\nto save bandwidth. For comparison, H.264 asks for 10-21% more than H.265 on\nthose clips.\n\n## An open ISP for the XM510, and its white balance is better than the factory one\n\nThe ISP is the part which turns the raw numbers off the sensor into a picture,\nand on Xiongmai it was closed. There is a daemon of our own now: auto-exposure,\nauto white balance, noise reduction and sharpening by gain, suppression of the\nbanding mains lamps leave, calibrated colour matrices, and a framework for\nsensors with six already in it. Verified on two live boards: the lab XM510 with\na JX-H62, and a 53X13 board with an AR0130.\n\nThe white balance turned out more accurate than the factory one. In an ordinary\nroom in daylight the vendor's drifts cyan: it takes dim wood, a beige and\norange chair for grey, sets its gains by them, and the real grey patches of a\ncolour chart end up at R/G 0.35. We raised the brightness above which a pixel\ncounts as grey at all and now count only the bright ones; the whole-frame result\nthen lands within 5% of the chart's grey. And when there are fewer than three\nhundred bright grey pixels the ISP holds the gains it has rather than hunting —\notherwise, in the first frames before exposure has brought the picture up, it\nwould fall into the same cyan trap itself.\n\nHow it was done is the interesting part: the factory ISP's behaviour was traced\nin our own emulator. The digital twin has stopped being a demonstration and\nbecome the tool you reverse-engineer with. It is all in\n[openxiongmai](https://github.com/OpenIPC/openxiongmai).\n\n## Five new makers in the emulator\n\nAllwinner, Fullhan, Grainmedia, more Xiongmai and SigmaStar all arrived in\n[qemu-bench](https://github.com/OpenIPC/qemu-bench) at once. Not merely \"the\nkernel boots\", either: a YI camera dump on an Allwinner V831 comes up off its\nown flash with networking, an SD card and a coded picture; a retail camera dump\non a SigmaStar MSC313E serves H.264 over RTSP; and Sofia on the XM530V200,\nXM533 and XM535 serves H.265 to the same place.\n\n## The unified bootloader repository took in Ingenic\n\nThat is a different architecture, MIPS, and the T40 and T41 are the first to\nbuild, NAND images included. Images for the XM V200 series landed in\n[OpenIPC/u-boot](https://github.com/OpenIPC/u-boot) too.\n\n## The line drawn over the video became programmable\n\nIt used to take the time and a name. It now takes any value the camera knows\nabout itself — the die temperature, the shutter, its name, its address, its\nuptime, a meter reading. Your own value goes in a file and the camera draws\nwhatever is in it, so anything a script on the camera can write can go on the\npicture. The web interface lays all of it out as buttons, and the camera itself\nsupplies the list of what is available.\n\n## Also\n\n- **A pan/tilt head has presets.** Store a position, go back to it, delete it —\n from the pad in the browser, over ONVIF and over DVRIP.\n- **Meter reading reached a working state.** The reading can be drawn straight\n onto the video as a line of its own. The camera waits out a drum mid-carry\n instead of writing nonsense at that moment, the count survives a restart, the\n window adjusts itself if the camera is turned a little, and what the meter is\n busy with shows up on `/metrics`.\n- **Image stabilisation works on SigmaStar** now, and its effect is measured\n off the video rather than asserted.\n- **The [board catalogue](/cameras/boards) grew by several hundred entries**:\n Anjoy Vision's own archive and 59 more modules, Haixin Weishi's modules, the\n CamHi catalogue. Plus detailed notes from the community — Tino Darkness\n worked through 46 Anjoy boards, with photographs and pin-1 markings.\n- **You can merge two of your own [Club](/club) accounts** into one if you\n signed in through Telegram one day and GitHub the next.\n- **The GK7201V200 is brought up to where the GK7205V200 is**, and openingenic\n fixed the ISP accessors on the T30.\n- **OpenIPC has been an Associate Member of the Linux Foundation** since August\n last year, which the footer of every page now says.\n", + "i18n": { + "ru": { + "date": "2026-10-30", + "title": "Открытый декодер китайского видеостандарта и открытый ISP для Xiongmai", + "summary": "Камеры научились снимать в SVAC 3.0, а мы написали к нему декодер — быстрее вендорского; у XM510 появился открытый тракт обработки картинки, чей баланс белого точнее заводского; а в эмулятор приехали ещё пять производителей чипов.", + "author": "Команда OpenIPC", + "body": "## Камера теперь умеет снимать в SVAC 3.0, а декодер к нему написали мы\n\nSVAC — китайский национальный стандарт на видео для систем безопасности, и его\nтретья редакция пока даже не утверждена, а лежит проектом на публичное\nобсуждение. Камеры на Hi3516CV6xx теперь кодируют в него и отдают по RTSP, а\n[libsvac3d](https://github.com/OpenIPC/libsvac3d) этот поток разбирает — и\nподключается к FFmpeg, так что играет чем угодно.\n\nДекодер написан по тексту проекта. Там, где текст расходится с тем, что нужно\nнастоящим потокам, в `docs/errata.md` записано, как декодер поступает и почему.\nВесь тестовый набор декодируется бит в бит так же, как эталонным декодером.\n\nИ он быстрее вендорского. На одном потоке обгоняет на всех роликах, а на\nчетырёх разрыв становится заметным: самый тяжёлый ролик наш разбирает за\n0,95 секунды против 1,40 у вендорского, кадр 2560x1440 — за 1,59 против 1,76.\nВнутри ручная векторизация под x86 и ARM, свой энтропийный декодер и разбор\nнескольких кадров одновременно; при этом на любом числе потоков на выходе\nровно те же биты.\n\nЗаодно мы померили, что SVAC3 даёт по сжатию, на одном и том же чипе и на тех\nже роликах. Ответ отрезвляющий: против H.265 он выигрывает от 0 до 6%, то есть\nпопадает в тот же класс. Брать его стоит ради соответствия китайским\nтребованиям, а не ради экономии канала. Для сравнения, H.264 на тех же роликах\nпросит на 10-21% больше H.265.\n\n## Открытый ISP для XM510, и баланс белого у него лучше заводского\n\nISP — это та часть, которая превращает сырые данные с сенсора в картинку, и у\nXiongmai она была закрытой. Теперь есть свой демон: автоэкспозиция,\nавтоматический баланс белого, шумоподавление и резкость по усилению,\nподавление полос от ламп, посчитанные цветовые матрицы и каркас для сенсоров —\nшесть уже заведены. Проверено на двух живых платах: на лабораторной XM510 с\nсенсором JX-H62 и на плате 53X13 с AR0130.\n\nБаланс белого оказался точнее заводского. Вендорский в обычной комнате при\nдневном свете уходит в циан: он принимает за серое тусклое дерево, бежевое и\nоранжевое кресло, выставляет по ним усиления — и настоящие серые поля цветовой\nшкалы уезжают до R/G 0,35. Мы подняли порог яркости, с которого пиксель вообще\nсчитается серым, и считаем только светлые: тогда результат по всему кадру\nпопадает в 5% от серого на шкале. А если светлых серых пикселей меньше\nтрёхсот, ISP держит прежние усиления и не бросается подбирать — иначе на\nпервых кадрах, пока экспозиция ещё не вытянула картинку, он сам свалился бы в\nтот же циан.\n\nИнтересно, как это делалось: поведение заводского ISP снимали в нашем же\nэмуляторе. Цифровой двойник перестал быть демонстрацией и стал инструментом,\nкоторым реверсят. Всё лежит в\n[openxiongmai](https://github.com/OpenIPC/openxiongmai).\n\n## Пять новых производителей в эмуляторе\n\nAllwinner, Fullhan, Grainmedia, новые Xiongmai и SigmaStar приехали в\n[qemu-bench](https://github.com/OpenIPC/qemu-bench) разом. Причём не\n«загружается ядро», а по-настоящему: дамп камеры YI на Allwinner V831\nподнимается со своей же флешки, с сетью, картой и закодированной картинкой;\nдамп розничной камеры на SigmaStar MSC313E отдаёт H.264 по RTSP; Sofia на\nXM530V200, XM533 и XM535 отдаёт H.265 туда же.\n\n## Единый репозиторий загрузчиков принял Ingenic\n\nЭто другая архитектура, MIPS, и первыми собрались T40 и T41, включая образы\nдля NAND. Туда же, в [OpenIPC/u-boot](https://github.com/OpenIPC/u-boot),\nприехали образы для серии XM V200.\n\n## Строка поверх видео стала программируемой\n\nРаньше в неё можно было вписать время и имя. Теперь — любое значение, которое\nкамера о себе знает: температуру кристалла, выдержку, имя, адрес, время\nработы, показание счётчика. Своё значение кладётся в файл, и камера рисует то,\nчто в нём лежит, — то есть вывести на картинку можно что угодно, что умеет\nписать скрипт на камере. В веб-интерфейсе всё это разложено кнопками, а список\nдоступных значений камера отдаёт сама.\n\n## Ещё\n\n- **У поворотной головы появились пресеты.** Запомнить положение, вернуться к\n нему, удалить — с пульта в браузере, по ONVIF и по DVRIP.\n- **Счётчики доведены до рабочего состояния.** Показание теперь можно вывести\n прямо на видео отдельной строкой. Камера дожидается, пока барабанчик доедет\n до конца оборота, и не пишет в этот момент ерунду; счёт переживает\n перезагрузку; окно само подстраивается, если камеру чуть повернули; а то, чем\n камера сейчас занята, видно на `/metrics`.\n- **На SigmaStar заработала стабилизация картинки**, и её эффект измерен по\n самому видео, а не заявлен.\n- **[Каталог плат](/cameras/boards) вырос сразу на несколько сотен записей**:\n собственный архив Anjoy Vision и ещё 59 модулей, модули Haixin Weishi,\n каталог CamHi. Плюс подробные заметки сообщества — Tino Darkness разобрал\n 46 плат Anjoy, с фотографиями и обозначением первого вывода.\n- **Два своих аккаунта в [клубе](/club) можно слить в один**, если входили то\n через Telegram, то через GitHub.\n- **GK7201V200 доведён до того же состояния, что и GK7205V200**, а в\n openingenic поправили доступ к ISP на T30.\n- **OpenIPC с августа прошлого года — ассоциированный член Linux Foundation**,\n и теперь это написано в подвале каждой страницы.\n" + }, + "zh": { + "date": "2026-10-30", + "title": "中国视频标准的开放解码器,以及雄迈的开放 ISP", + "summary": "摄像机现在可以编码 SVAC 3.0,我们为它写了解码器,比厂商的更快;XM510 有了开放图像管线,白平衡胜过出厂的;模拟器里又来了五家芯片厂商。", + "author": "OpenIPC 团队", + "body": "## 摄像机现在可以以 SVAC 3.0 录像,解码器是我们写的\n\nSVAC 是中国的安防系统国家视频标准,其第三版甚至尚未批准——还处于公开征求意见的草案阶段。Hi3516CV6xx 上的摄像机现在就能编码它并通过 RTSP 提供,[libsvac3d](https://github.com/OpenIPC/libsvac3d) 能把这个码流拆开。它接入 FFmpeg,所以任何东西都能播放。\n\n解码器是根据草案文本写的。凡文本与真实码流所需不符之处,`docs/errata.md` 记录了解码器的实际做法及原因。测试语料库中的每一张图像都与参考解码器逐位一致地解码。\n\n它也比厂商的解码器快。单线程时它在每个片段上都领先,四线程时差距拉开:最重的片段上我们用 0.95 s,厂商用 1.40;2560x1440 的片段上是 1.59 s 对 1.76。内部有手写的 x86 和 ARM SIMD 内核、我们自己的熵解码器,以及多张图像同时解码——而且无论线程数多少,输出的比特都完全一致。\n\n我们还在同一块芯片和同样的片段上测了 SVAC3 在压缩上能带来什么。答案令人清醒:相对 H.265 它节省 0 到 6%,属于同一档次。选它是为了满足中国的合规要求,不是为了省带宽。作为对比,H.264 在这些片段上比 H.265 多要 10-21%。\n\n## XM510 的开放 ISP,白平衡比出厂的更好\n\nISP 是把传感器输出的原始数值变成图像的部分,在雄迈上它一直是闭源的。现在有了我们自己的守护进程:自动曝光、自动白平衡、降噪、按增益锐化、抑制市电灯具造成的条带、校准过的色彩矩阵,还有一个传感器框架,里面已有六款。在两块实机板卡上验证过:带 JX-H62 的实验室 XM510,以及带 AR0130 的 53X13 板卡。\n\n白平衡结果比出厂的更准。白天在普通房间里,厂商的会偏青:它把昏暗的木头、米色和橙色的椅子当成灰色,据此设定增益,色卡上真正的灰色块最后落在 R/G 0.35。我们提高了像素被计为灰色的亮度门槛,现在只统计亮的像素;整帧结果随后落在色卡灰色的 5% 以内。而当亮灰色像素少于三百个时,ISP 会保持现有增益而不是来回搜索——否则在曝光把画面拉起来之前的最初几帧里,它自己也会掉进同样的青色陷阱。\n\n做法本身才是有意思的部分:出厂 ISP 的行为是在我们自己的模拟器里被追踪的。数字孪生已经不再只是演示,而成了你用来做逆向工程的工具。全部内容在 [openxiongmai](https://github.com/OpenIPC/openxiongmai)。\n\n## 模拟器里来了五家新厂商\n\nAllwinner、Fullhan、Grainmedia、更多雄迈和 SigmaStar 一起进入了 [qemu-bench](https://github.com/OpenIPC/qemu-bench)。而且不只是“内核能启动”:Allwinner V831 上的 YI 摄像机转储从自己的闪存启动,带网络、SD 卡和编码图像;SigmaStar MSC313E 上的零售摄像机转储通过 RTSP 提供 H.264;XM530V200、XM533 和 XM535 上的 Sofia 则向同一处提供 H.265。\n\n## 统一的引导加载程序仓库收下了 Ingenic\n\n那是一种不同的架构,MIPS,T40 和 T41 最先能构建,包括 NAND 镜像。XM V200 系列的镜像也进入了 [OpenIPC/u-boot](https://github.com/OpenIPC/u-boot)。\n\n## 叠在视频上的那行字变得可编程了\n\n以前它只需要时间和一个名字。现在它可以用摄像机知道的关于自身的任何值——管芯温度、快门、名字、地址、运行时长、仪表读数。你自己的值放进一个文件,摄像机就把里面的内容画上去,所以摄像机上的脚本能写出的任何东西都能上画面。网页界面把这一切排成按钮,摄像机自己提供可用项的列表。\n\n## 其他\n\n- **云台有了预置位。** 存储一个位置、回到它、删除它——通过浏览器里的控制面板、通过 ONVIF 和通过 DVRIP。\n- **仪表读数达到了可用状态。** 读数可以作为单独一行直接画到视频上。摄像机在抄表过程中会等待滚筒转完而不是在那一刻写下无意义的数据,计数在重启后保留,摄像机稍微转动时窗口会自行调整,仪表正在忙什么会显示在 `/metrics` 上。\n- **图像防抖现在在 SigmaStar 上可用**,其效果是从视频上测出来的,而不是口头断言的。\n- **[板卡目录](/cameras/boards)增加了几百个条目**:Anjoy Vision 自己的档案和另外 59 个模块、Haixin Weishi 的模块、CamHi 目录。还有来自社区的详细笔记——Tino Darkness 梳理了 46 块 Anjoy 板卡,带照片和 1 脚标记。\n- **你可以把自己两个 [Club](/club) 账号合并成一个**,如果你某天通过 Telegram 登录、另一天通过 GitHub 登录的话。\n- **GK7201V200 被拉到了 GK7205V200 的水平**,openingenic 修复了 T30 上的 ISP 访问器。\n- **OpenIPC 自去年八月起就是 Linux Foundation 的 Associate Member**,现在每个页面的页脚都这么写着。\n" + } + } + }, { "slug": "firmware-with-no-camera-and-recorders", "date": "2026-10-23", diff --git a/frontend/apps/site/src/lib/news.build.test.ts b/frontend/apps/site/src/lib/news.build.test.ts index c9db7921..0a49c9d0 100644 --- a/frontend/apps/site/src/lib/news.build.test.ts +++ b/frontend/apps/site/src/lib/news.build.test.ts @@ -11,6 +11,15 @@ import { inLocale, newsPath, POSTS } from './news'; import { atomXml, feedPath } from './news-feed'; import { SITE } from './sitemap'; +/** + * A title as the built page carries it. Astro escapes the five XML characters, + * and this escaped only `&` until a title with an apostrophe in it arrived -- + * which rendered as `'` and failed a test that was otherwise right. + */ +const escapeAttr = (s: string): string => + s.replace(/&/g, '&').replace(//g, '>') + .replace(/"/g, '"').replace(/'/g, '''); + /** pages.news.title per language, as the feed and the autodiscovery link use it. */ const NEWS_TITLE: Record = { en: 'News', ru: 'Новости', zh: '新闻' }; @@ -36,7 +45,7 @@ describe('news in the bundle', () => { for (const post of POSTS) { const html = page(pathFor(locale, newsPath(post))); const text = inLocale(post, locale); - expect(html).toContain(`${text.title.replace(/&/g, '&')} - OpenIPC`); + expect(html).toContain(`${escapeAttr(text.title)} - OpenIPC`); // An untranslated post is English under a translated prefix, and says so. expect(html).toContain(text.lang === locale ? '
' : `
`); } diff --git a/frontend/apps/site/src/lib/sitemap.golden.xml b/frontend/apps/site/src/lib/sitemap.golden.xml index 1bbc8ef2..1a270420 100644 --- a/frontend/apps/site/src/lib/sitemap.golden.xml +++ b/frontend/apps/site/src/lib/sitemap.golden.xml @@ -4054,6 +4054,27 @@ + + https://openipc.org/news/an-open-decoder-and-an-open-isp + + + + + + + https://openipc.org/ru/news/an-open-decoder-and-an-open-isp + + + + + + + https://openipc.org/zh/news/an-open-decoder-and-an-open-isp + + + + + https://openipc.org/news/firmware-with-no-camera-and-recorders