Skip to content
← Все новости

· автор — Команда OpenIPC

Один загрузчик на все чипы и съёмка для монтажа

Все U-Boot переехали в один репозиторий поверх mainline, камера научилась снимать с покадровыми метаданными и таймкодом, а найденную нами ошибку HDR в Chrome уже исправил Google.

Все загрузчики в одном репозитории

Раньше U-Boot для каждого процессора жил отдельным деревом, и одну и ту же правку приходилось вносить в каждое по отдельности. Мы собрали их всех в один репозиторий: на каждое семейство своя ветка, а в основе — форк mainline U-Boot, так что исправления и новое из upstream приезжают к нам, а не остаются где-то там. В ветке HiSilicon и Goke сейчас 38 процессоров, и каждый собирается в CI.

Камера снимает материал, который потом доведут на компьютере

Готовую картинку с обычной камеры исправить почти нечем: пересвеченное небо не вернёшь, и свести её по цвету с кадрами с другой камеры не выйдет. Поэтому тот, кто монтирует видео, хочет получить от камеры не красивый кадр, а сырой — и уже на компьютере довести его до нужного вида.

Включаете isp.cinema, и камера начинает отдавать именно такой материал. Она делает две вещи, которые кроме неё сделать некому. Каждое значение в кадре пересчитывается обратно в свет сцены по опубликованной формуле, одной и той же для всех дублей, — то есть монтажёр знает, что именно он видит. И камера записывает, как сделан каждый кадр: выдержку, усиления, баланс белого и цветовую матрицу покадрово, файл-спутник на каждый клип, таймкод SMPTE и RAW-кадры для сверки.

К этому выложены преобразования в ACES — это общий язык, на котором цвет передают между программами монтажа: входной трансформ, цветовое пространство для OCIO и генератор LUT. Ничего не подгоняли под конкретную камеру, поэтому они годятся для любого сенсора. Hi3516EV200, EV300, CV500 и Goke V200, V300.

HDR-видео, и попутно исправленная ошибка в Chrome

Одна настройка, isp.hdr, и телевизоры с браузерами показывают картинку как HDR: яркая стена под солнцем, лампа, окно светятся ярче обычного белого, а тени и полутона остаются на месте. Если чип и сенсор умеют WDR, его стоит включить вместе — именно он и собирает этот запас яркости.

Пока мы это делали, нашлась ошибка в Google Chrome, и Google её уже исправил. Начиная со 145-й версии Chrome на macOS показывал HDR-видео как HDR не при всех размерах кадра. Браузер отдаёт картинку системному слою вывода и сверяет прямоугольник кадра точным сравнением, а после пересчёта в доли единицы число не всегда сходится бит в бит. Не сошлось — и видео теряет HDR, играет плоско. Попались высоты 1936, 1944 и 1952 строки, то есть обычный пятимегапиксельный кадр 2592x1944 с сенсора вроде IMX335. Мы нашли причину и отправили отчёт в Chromium, инженеры Google починили. Пока исправленный Chrome не разойдётся, majestic с включённым HDR сам держит потоки в тех размерах, которые браузер показывает правильно.

Распознавание без нейроускорителя

NPU стоит далеко не на всякой камере, поэтому мы научили детектор людей считаться прямо на процессоре. Сеть крошечная: 66,7 тысячи параметров, вход 320x192, целочисленная арифметика. Камера не гоняет её по всему кадру — вырезает кусок вокруг движения и отдаёт только его. Вместе с моделью мы выложили три готовых режима и посчитали для каждого порог: поменьше ложных срабатываний, золотая середина, побольше найденного. Модели лежат в cpu-models.

Как повернуть камеру и за кем ей идти

Поворотную камеру вы наводите прямо по картинке, без кнопок. Заметили что-то с краю кадра — потяните изображение, и камера поедет за пальцем. Ткнёте дважды в нужную точку — она встанет по центру. Панель управления стала джойстиком: чем дальше отвели его от середины, тем быстрее едет камера, так что отдельный ползунок скорости убрали. А если картинка перевёрнута или повёрнута набок, стрелки разворачиваются вместе с ней, и «вверх» означает вверх на экране, а не на камере.

Камере можно сказать, за кем следить: за человеком, за кошкой с собакой или за машиной. Раньше она шла за всем, что движется, поэтому уезжала за качнувшейся веткой. Белая подсветка работает от того же: загорается, когда камера кого-то увидела, а не на любое шевеление в кадре.

День и ночь можно переключать по солнцу или по часам, а не только по свету. Заодно детектор движения перестал реагировать на собственную подсветку камеры.

Подсчёт людей

Рисуете на картинке линии и зоны, а камера считает: сколько прошло в каждую сторону по каждой линии, сколько человек в зоне прямо сейчас, сколько было по часам за сегодня и по дням за неделю или месяц, и сколько люди задерживаются. Час, который камера не считала, так и нарисован — не посчитан, а не ноль.

Каталог из 402 сенсоров

На /cameras/sensors они стоят рядом друг с другом: сетка по разрешению и назначению, фильтры, сортируемая таблица и сравнение бок о бок. У каждого сенсора своя страница: характеристики, дата выпуска, близнец и преемник, соседи по сетке и платы из каталога, на которых он стоит. В карточке платы сенсор теперь ссылается на свою страницу.

Два новых процессора

Hi3536DV100 — это NVR, Cortex-A7: ядро и модули собраны из исходников SDK, а закрытые MPP-модули перелинкованы из вендорских .ko.

Второй — Goke GK7206V100, их нынешнее поколение под именем XMedia Lotus: два ядра Cortex-A7, сопроцессор RISC-V и вендорский блок SVP, который и считает нейросети; его пользовательскую часть мы пересобрали из исходников. Шесть кристаллов в семействе, память прямо в корпусе, ядро 5.10.130. Образ собирается в CI, но на живой плате его пока никто не запускал — и загрузчик для двух ревизий уже лежит в новом репозитории U-Boot. Оба в openhisilicon.

Ещё

  • Большая уборка в Xiongmai. XM510 снова отдаёт RTSP, /mjpeg действительно шлёт кадры, а не только заголовок, снимки работают при выключенном втором потоке, перезапуск не теряет видео и не считается падением. На XM530 главный поток ужимается под сенсор меньше 1080p. А ковыряться в прошивке теперь можно и без камеры на столе: в эмуляторе есть машина xm510, она поднимает и наш xm510_lite, и целый дамп флеша через родной загрузчик. Машины для XM530 и XM550 уже написаны и ждут ревью.
  • Lite и Ultimate меняются местами без паяльника: на 16-мегабайтной разметке через sysupgrade, на 8-мегабайтной через ipctool.
  • В каталог плат добавили Longse и Herospeed, процессоры Novatek NT98533, NT98560 и NT98561, Hi3536C/D/E и Goke GK7206V1. Поиск по умолчанию ищет везде, у галереи появились листание, зум и закрытие по «назад».
  • Отчёт о падении теперь несёт лог той загрузки, которая не удалась, так что по циклу перезагрузок видно, на чём он споткнулся.
  • Генератор QR-кодов для Wi-Fi: код стандартный, собирается на лету и проверяется прямо на странице.