Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
видео и VPU
muaddib
Добавлено 23.03.2015 09:34
0
Сообщение: 1
muaddib
0

Пункты: 1232
Регистрация: 20.11.2014
Хотелось бы получать видео с камеры, но через Video For Linux получается медленно, сильно грузит процессор.
Как задействовать VPU в своем приложении.
Может у кого-нибудь есть примеры работы.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 23.03.2015 11:01 Редактировалось 23.03.2015 16:04 Сообщение: 2
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Цитата

Хотелось бы получать видео с камеры, но через Video For Linux получается медленно, сильно грузит процессор.


Если речь о USB-камерах, то никак не ускорить, для этого надо весь USB-стек ядра переписывать. В SoC на аппаратных ускорителях редко используют IOMMU, для работы им нужна физически непрерывная память., поэтому чтобы задействовать такой аппаратный ускоритель

1 выделяют промежуточный физически непрерывный буфер
2 копируют за счет CPU данные из фрагментированного буфера в физически непрерывный, при этом этот буфер выделяется аллокатором из некэшируемой и не буферизуемой области - скорость копирования CPU падает до десятков мегабайт, в случае больших объемов данных (видео) это просто капец всему "ускорению" :)
3 передают адрес промежуточного буфера аппаратному скорителю для DMA.

В случае когда данные поступают с IPU (CSI) они сразу складываются в физически непрерывный буфер, CPU используется только управления памятью и передачи указателей между аппаратными ускорителями. C PCIe (tw6869) данные тоже сразу в непрерывный буфер попадают - поэтому там такие космические скорости :)

https://youtu.be/nT8mX-_Eu9s

Цитата

Как задействовать VPU в своем приложении.
Может у кого-нибудь есть примеры работы.


https://community.freescale.com/docs/DOC-94588
Спуститься к концу Подняться к началу
Персональная информация
muaddib
Добавлено 23.03.2015 11:33 Сообщение: 3
muaddib
0

Пункты: 1232
Регистрация: 20.11.2014
Захват выполняется с VCEB. Львиную долю ресурсов процессора занимает перекодирование из формата YUYV в RGB24, а также последующая упаковка в JPEG. Использование VPU в этом случае сократило бы расходы процессора.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 23.03.2015 11:37 Редактировалось 23.03.2015 11:48 Сообщение: 4
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Цитата

Захват выполняется с VCEB.


тогда вам нужно только правильно составить конвеер для gstreamer, см. плагин tvsrc

Цитата

Львиную долю ресурсов процессора занимает перекодирование из формата YUYV в RGB24


см. плагин mfw_ipucsc

Цитата

а также последующая упаковка в JPEG.


см. плагин vpuenc

в буилдруте после сборки в /root лежат примеры использования - там посмотрите. Какие есть ускоренные для imx6 плагины можно быстро узнать

gst-inspect-0.10 | grep mfw
gst-inspect-0.10 | grep imx

например, cat avc1.sh

#!/bin/sh

gst-launch tvsrc device=/dev/video0 ! tee name=t ! queue ! mfw_v4lsink \
t. ! queue ! mfw_ipucsc ! queue ! vpuenc ! queue ! \
mux. alsasrc device="hw:0,0,0" ! audiorate ! queue ! mfw_mp3encoder ! \
mux. matroskamux name=mux ! queue ! filesink location=av0.mkv


примеры с сайта
https://community.freescale.com/docs/DOC-94588
тоже актуальны
Спуститься к концу Подняться к началу
Персональная информация
muaddib
Добавлено 24.03.2015 14:42 Сообщение: 5
muaddib
0

Пункты: 1232
Регистрация: 20.11.2014
Мне необходимо в моей программе на Qt, считать видео с 2 или более камер.
Потом необходимо выполнить действия с этими изображениями, например, уменьшить, слить их в одно изображение, затем запаковать в JPEG отправить по сети через TCP.
Упаковка и JPEG и преобразование в RGB, занимает много времени используя процессор.
С помощью GStreamer я не вижу как решить эту задачу, так он может читать изображение только с одного источника.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux