Драйвер декодера H.265/HEVC Hantro G2 с открытым исходным кодом добавлен в NXP i.MX 8M в Linux

Получение мультимедийных драйверов с открытым исходным кодом в Arm Linux – одна из самых сложных задач, поэтому о драйверах GPU с открытым исходным кодом для ускорения 2D и 3D графики особо не говорится, но работа над аппаратным декодированием и кодированием видео также является проблемой.

Ранее мы видели, что Bootlin работает над драйвером с открытым исходным кодом Cedrus для Allwinner VPU (Video Processing Unit), а Collabora – над драйверами с открытым исходным кодом для VeriSilicon Hantro G1 и G2 VPU, которые можно найти в некоторых процессорах Rockchip, NXP и Microchip.

Ранее компании удавалось создать драйвер с открытым исходным кодом Hantro G1 для кодеков JPEG, MPEG-2, VP8 и H. 264, но H. 265/HEVC полагается на Hantro G2, и только что был представлен патч для аппаратного декодирования видео H. 265-на NXP i.MX 8M Quad для mainline Linux.

В своем сообщении Бенджамин Гиньяр дает больше пояснений:

IMX8MQ получил два VPU, но до сих пор был включен только G1. Эта серия предназначена для добавления второго VPU (также известного как G2) и обеспечения базовой поддержки декодирования HEVC.

Чтобы иметь возможность декодировать HEVC, необходимо добавить/обновить некоторые структуры в файле uapi. В дополнение к ним требуется один специальный элемент управления HANTRO, чтобы сообщить драйверу о количестве битов, которые необходимо пропустить в начале заголовка слайса. Аппаратным средствам требуется выделить несколько вспомогательных буферов для хранения данных фрейма ссылок, списка масштабирования или данных о размере плитки.

Драйвер был протестирован с помощью flutter test suite stream.
Например с помощью этой команды: ./fluster.py run -ts JCT-VC-HEVC_V1 -d GStreamer-H.265-V4L2SL-Gst1.0

Для справки: v4l2-совместимость является частью пакета v4l-utils, а в Debian / Ubuntu может быть установлена с помощью apt:

Параметр «m» используется для выбора узла /dev/media?, например /dev/media1.

Бенджамин далее объясняет, что Hantro G1/G2 являются ускорителями без сохранения состояния, что означает, что им не требуется прошивка для работы. Как отмечается в сообщении в блоге на Collabora, это делает их более подходящими для реализации с открытым исходным кодом. В частности, драйвер разделен на две части: драйвер ядра (драйвер Video4Linux2 Hantro) и компонент пользовательского пространства, такой как GStreamer и FFMPEG.

Драйвер Hantro с открытым исходным кодом все еще находится в промежуточном каталоге, зарезервированном для кода WiP, поэтому потребуется дальнейшая работа, чтобы сделать его стабильным API и использовать его программами пользовательского уровня по умолчанию. В дальнейшем Collabora также будет работать над декодированием VP9 и кодированием с аппаратным ускорением V4L2.

Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments