4. Поддержка аппаратных блоков в GStreamer
GStreamer поддерживает следующие аппаратные блоки MCom-03:
VPU ARM Mali-V61 (Video Processing Unit, видеопроцессор);
ISP Felix v2505 (Image Signal Processor, процессор обработки изображений).
4.1. VPU ARM Mali-V61
4.1.1. Обзор поддержки
Кодирование и декодирование видео и изображений с использованием VPU поддерживается плагином gst-omx для пакета GStreamer. Перечень поддерживаемых элементов плагина приведён в таблице.
Элемент |
Назначение |
---|---|
omxh264dec |
Декодирование видео, сжатого кодеком H.264 |
omxh264enc |
Кодирование видео с использованием кодека H.264 |
omxh265dec |
Декодирование видео, сжатого кодеком H.265 (HEVC) |
omxh265enc |
Кодирование видео с использованием кодека H.265 (HEVC) |
omxmjpegenc |
Кодирование изображений в формате JPEG/MJPEG |
4.1.2. DMA-буферы
Для ускорения обработки видео в конвейерах GStreamer могут быть использованы DMA-буферы
(экспортируются модулем dmabuf_exporter
).
DMA-буферы поддерживают следующие элементы gst-omx:
omxh264enc;
omxh265enc;
omxmjpegenc.
Для этого вышестоящий (upstream) элемент конвейера должен отправить запрос типа
GST_QUERY_CUSTOM
, содержащий структуру dmabuf_query
. Содержимое структуры описано в таблице.
Имя поля |
Тип поля |
Описание |
---|---|---|
fd_list |
|
Список |
buffer_size |
|
Размер одного буфера в байтах |
При получении и успешной обработке запроса элементом gst-omx будут импортированы DMA-буферы и
функция gst_pad_peer_query()
вернёт TRUE
. В противном случае функция вернёт FALSE
и
элемент gst-omx самостоятельно выделит буферы для копирования данных.
4.1.3. Примеры запуска
Кодирование H.264 видео:
gst-launch-1.0 filesrc location=/tmp/input.yuv blocksize=3110400 ! \
video/x-raw,format=I420,width=1920,height=1080,framerate=25/1 ! omxh264enc ! \
filesink location=/tmp/output.h264
Декодирование H.264 видео:
gst-launch-1.0 filesrc location=/tmp/input.h264 ! h264parse ! omxh264dec ! \
filesink location=/tmp/output.yuv
Транскодирование из H.264 в MJPEG:
gst-launch-1.0 filesrc location=/tmp/input.h264 ! h264parse ! omxh264dec ! omxmjpegenc ! \
filesink location=/tmp/output.mjpeg
Транскодирование видео H.265 (HEVC):
gst-launch-1.0 filesrc location=/tmp/input.h265 ! h265parse ! omxh265dec ! omxh265enc ! \
filesink location=/tmp/output.h265
4.2. ISP Felix v2505
TBD