Камера теперь умеет снимать в SVAC 3.0, а декодер к нему написали мы
SVAC — китайский национальный стандарт на видео для систем безопасности, и его третья редакция пока даже не утверждена, а лежит проектом на публичное обсуждение. Камеры на Hi3516CV6xx теперь кодируют в него и отдают по RTSP, а 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.
Пять новых производителей в эмуляторе
Allwinner, Fullhan, Grainmedia, новые Xiongmai и SigmaStar приехали в qemu-bench разом. Причём не «загружается ядро», а по-настоящему: дамп камеры YI на Allwinner V831 поднимается со своей же флешки, с сетью, картой и закодированной картинкой; дамп розничной камеры на SigmaStar MSC313E отдаёт H.264 по RTSP; Sofia на XM530V200, XM533 и XM535 отдаёт H.265 туда же.
Единый репозиторий загрузчиков принял Ingenic
Это другая архитектура, MIPS, и первыми собрались T40 и T41, включая образы для NAND. Туда же, в OpenIPC/u-boot, приехали образы для серии XM V200.
Строка поверх видео стала программируемой
Раньше в неё можно было вписать время и имя. Теперь — любое значение, которое камера о себе знает: температуру кристалла, выдержку, имя, адрес, время работы, показание счётчика. Своё значение кладётся в файл, и камера рисует то, что в нём лежит, — то есть вывести на картинку можно что угодно, что умеет писать скрипт на камере. В веб-интерфейсе всё это разложено кнопками, а список доступных значений камера отдаёт сама.
Ещё
- У поворотной головы появились пресеты. Запомнить положение, вернуться к нему, удалить — с пульта в браузере, по ONVIF и по DVRIP.
- Счётчики доведены до рабочего состояния. Показание теперь можно вывести
прямо на видео отдельной строкой. Камера дожидается, пока барабанчик доедет
до конца оборота, и не пишет в этот момент ерунду; счёт переживает
перезагрузку; окно само подстраивается, если камеру чуть повернули; а то, чем
камера сейчас занята, видно на
/metrics. - На SigmaStar заработала стабилизация картинки, и её эффект измерен по самому видео, а не заявлен.
- Каталог плат вырос сразу на несколько сотен записей: собственный архив Anjoy Vision и ещё 59 модулей, модули Haixin Weishi, каталог CamHi. Плюс подробные заметки сообщества — Tino Darkness разобрал 46 плат Anjoy, с фотографиями и обозначением первого вывода.
- Два своих аккаунта в клубе можно слить в один, если входили то через Telegram, то через GitHub.
- GK7201V200 доведён до того же состояния, что и GK7205V200, а в openingenic поправили доступ к ISP на T30.
- OpenIPC с августа прошлого года — ассоциированный член Linux Foundation, и теперь это написано в подвале каждой страницы.