Драйвер декодера 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-compliance -m 1 
v4l2-compliance 1.21.0-4705, 64 bits, 64-bit time_t
v4l2-compliance SHA: 733f7a54f79d 2021-02-03 08:25:49
 
Compliance test for hantro-vpu device /dev/media1:
 
Media Driver Info:
 Driver name      : hantro-vpu
 Model            : hantro-vpu
 Serial           : 
 Bus info         : platform: hantro-vpu
 Media version    : 5.11.0
 Hardware revision: 0x00000000 (0)
 Driver version   : 5.11.0
 
Required ioctls:
 test MEDIA_IOC_DEVICE_INFO: OK
 test invalid ioctls: OK
 
Allow for multiple opens:
 test second /dev/media1 open: OK
 test MEDIA_IOC_DEVICE_INFO: OK
 test for unlimited opens: OK
 
Media Controller ioctls:
 test MEDIA_IOC_G_TOPOLOGY: OK
 Entities: 3 Interfaces: 1 Pads: 4 Links: 4
 test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK
 test MEDIA_IOC_SETUP_LINK: OK

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

sudo apt install v4l-utils

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

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

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

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

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

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

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

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