Давние читатели CNX Software, возможно, помнят краудфандинговую кампанию Bootlin, запущенную в 2018 году, целью которой являлось предоставление драйверов Allwinner VPU с открытым исходным кодом для аппаратного кодирования и декодирования видео в mainline Linux. Им удалось собрать достаточно средств (более 30 000 евро) от мелких пользователей и нескольких компаний (Olimex, Pine64, Libre Computer, FriendlyELEC и Orange Pi) для работы над драйверами VPU с открытым исходным кодом для mainline Linux, но только для MPEG2, H264 и декодирование H265 для ряда процессоров Allwinner, таких как A20 и H5, но этого не достаточно, чтобы покрыть стоимость кодирования видео в формате H264.
Пять лет спустя компания Bootlin взяла на себя задачу завершить работу без поддержки или поддержки со стороны Allwinner и теперь выпустила драйвер V4L2 на базе ядра Linux с открытым исходным кодом для поддержки видео-кодера H.264, присутствующего в процессорах Allwinner V3, V3s, and S3.
Новый драйвер основан на более ранней работе компании по поддержке интерфейса камеры MIPI CSI-2 и ISP (процессора сигналов изображения) в процессорах Allwinner V3/V3s/S3, которые были добавлены в mainline Linux в 2021 году.
Поддержка ядра Linux Bootlin для кодирования видео H.264 на платформах Allwinner V3/V3s/S3 состоит из наборов патчей поверх основного драйвера Linux Cedrus (который уже поддерживает декодирование), который можно найти в ветке кодирования h264 в репозитории Bootlin Linux на GitHub и специальный инструмент тестирования пользовательского пространства под названием v4l2-cedrus-enc-test .
Драйвер Cedrus теперь использует /dev/video0 для декодирования видео и /dev/video1 для кодирования видео в процессорах камер Allwinner V3, V3s и S3. Bootlin объясняет, что он не совсем готов к включению в mainline Linux и полной поддержке кодировки H.264 по следующим причинам:
- Для предоставления доступа к кодировщикам без сохранения состояния в mainline Linux необходим новый API пользовательского пространства (uAPI). Подробности смотрите в обсуждении в списке рассылки linux-media.
- Необходимо отправить переработанный драйвер и объединить его с вышестоящим проектом;
- Управление скоростью в настоящее время не реализовано, и доступно только прямое управление QP.
- Новый драйвер поддерживает только платформы Allwinner V3/V3s/S3, но другие поколения используют другие, но довольно похожие блоки кодирования H.264, поддержка которых также может поддерживаться при дополнительной работе.
- Функции предварительной обработки, такие как масштабирование и преобразование формата пикселей, пока не поддерживаются.
- FFmpeg, GStreamer и/или другие библиотеки пользовательского пространства необходимо обновить для поддержки uAPI кодировщика без сохранения состояния.
В объявлении Bootlin содержится больше технических подробностей, и компания также приветствует финансирование от компаний, которым нужен более полный драйвер видеокодера Allwinner с открытым исходным кодом.
Выражаем свою благодарность источнику с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.