Ник:
Пароль:

Контакты

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

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
gstreamer и плагины imxvpu
korigo
Добавлено 17.02.2022 15:11 Редактировалось 18.02.2022 08:55
0
Сообщение: 1
korigo
0

Пункты: 1360
Регистрация: 23.11.2016
Здравствуйте! Может сможете подсказать:
процессор imx6S(D) buildroot-2016
Есть видеоввод, поддерживается разрешение до 4096х3000
В плагине imxvpuenc_mjpeg исправлено разрешение до 4096х4096 . При этом получается вводить кадры с разрешением до 4096х2902 или 3960х3000 (размер кадра примерно одинаковый). При увеличении разрешения по X или Y (размера кадра) получаем ошибку

ERROR: v4l2 capture: mxc_allocate_frame_buf failed.
ERROR: from element /GstPipeline:pipeline0/GstImxV4l2VideoSrc:imxv4l2videosrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipelinERROR: v4l2 capture: unsupported ioctrl!
e0/GstImxV4l2VideoSrc:imxv4l2videosrc0:
streaming task paused, reason not-negotiated (-4)

Понятно, что вроде проблемы с размещением буфера, но куда копать? Если поможет дополнительная отладочная информация , то что и где включить.

ввод выглядит так.
gst-launch-1.0 -e imxv4l2videosrc device=/dev/video8 !\
imxvpuenc_mjpeg gop-size=0 quality-factor=91 !\
multifilesink location=/media/usb0/1/tst_%4u.jpg async=false.

софтовый кодек jpegenc вместо imxvpuenc в аналогичной конфигурации работает нормально, пишет 4096х3000.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 17.02.2022 18:11 Сообщение: 2
sasamy
4.71

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

imxv4l2videosrc device=/dev/video8


это что за устройство, похоже usb камера ?
Спуститься к концу Подняться к началу
Персональная информация
korigo
Добавлено 18.02.2022 08:58 Сообщение: 3
korigo
0

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

imxv4l2videosrc device=/dev/video8


это что за устройство, похоже usb камера ?


Это устройство с параллельным вводом через CSI на базе вашего модифицированного драйвера для ADV7180 для 2-х CSI
обсуждалось тут
http://starterkit.ru/html/index.php?name=forum&op=view&id=27568
Спуститься к концу Подняться к началу
Персональная информация
korigo
Добавлено 21.02.2022 10:18 Сообщение: 4
korigo
0

Пункты: 1360
Регистрация: 23.11.2016
нашел, что надо явно указать для imxv4l2videosrc queue-size=5 или меньше. по умолчанию 6 и не хватает памяти. Вопрос - где ограничение на размер памяти под буферы. Общая 1 гБ не загружена
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 21.02.2022 12:01 Сообщение: 5
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата
нашел, что надо явно указать для imxv4l2videosrc queue-size=5 или меньше. по умолчанию 6 и не хватает памяти. Вопрос - где ограничение на размер памяти под буферы. Общая 1 гБ не загружена


память для буферов DMA резервируется через CMA-аллокатор. Можно проверить сколько зарезервировано на работающей системе

dmesg | grep cma

в конфиге ядра можно изменить

make linux-menuconfig

Device Drivers --->
Generic Driver Options --->

*** Default contiguous memory area size: ***
(320) Size in Mega Bytes
Спуститься к концу Подняться к началу
Персональная информация
korigo
Добавлено 22.02.2022 12:58 Сообщение: 6
korigo
0

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

в конфиге ядра можно изменить

make linux-menuconfig

Device Drivers --->
Generic Driver Options --->

*** Default contiguous memory area size: ***
(320) Size in Mega Bytes


менял в конфиге, в образе не меняется.
делал kernel-rebuild
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 22.02.2022 14:18 Редактировалось 22.02.2022 14:19 Сообщение: 7
sasamy
4.71

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

менял в конфиге, в образе не меняется.
делал kernel-rebuild


можно через командную строку ядра установить, например добавить в параметры

cma=512M

возможно у вас так и установлено и поэтому не меняется через конфиг, посмотреть параметры

cat /proc/cmdline
Спуститься к концу Подняться к началу
Персональная информация
korigo
Добавлено 03.03.2022 13:13 Редактировалось 03.03.2022 16:44 Сообщение: 8
korigo
0

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

можно через командную строку ядра установить, например добавить в параметры

cma=512M

возможно у вас так и установлено и поэтому не меняется через конфиг, посмотреть параметры

cat /proc/cmdline


меняется в DTS.
Теперь другая засада - наткнулись на ограничения по размеру компрессированного кадра - где-то около 1040000 байт. для аппаратного кодека. программный работает нормально.

GST_PADS gstpad.c:3798:push_sticky:<imxv4l2videosrc0:src> [00m event segment marked received
basesrc gstbasesrc.c:2843:gst_base_src_loop:<imxv4l2videosrc0> [00m marking pending DISCONT
GST_SCHEDULING gstpad.c:4186:gst_pad_chain_data_unchecked:<imxvpuencodermjpeg0:sink> [00m calling chainfunction &gst_video_encoder_chain with buffer buffer: 0x1241648, pts 0:00:06.030922334, dts 99:99:99.999999999, dur 0:00:01.000000000, size 18432000, offset none, offset_end none, flags 0x4040
imxvpuapi imxvpuapi_vpulib.c:3861:imx_vpu_enc_encode: [00m timeout after waiting 500 ms for frame completion
imxvpuapi imxvpuapi_vpulib.c:3861:imx_vpu_enc_encode: [00m timeout after waiting 500 ms for frame completion
imxvpuapi imxvpuapi_vpulib.c:3861:imx_vpu_enc_encode: [00m timeout after waiting 500 ms for frame completion
imxvpuapi imxvpuapi_vpulib.c:3861:imx_vpu_enc_encode: [00m timeout after waiting 500 ms for frame completion
imxvpuapi imxvpuapi_vpulib.c:3879:imx_vpu_enc_encode: [00m could not get output information: wrong call sequence
imxvpuencoderbase encoder_base.c:684:gst_imx_vpu_encoder_base_handle_frame:<imxvpuencodermjpeg0> [00m failed to encode frame: wrong call sequence
GST_SCHEDULING gstpad.c:4192:gst_pad_chain_data_unchecked:<imxvpuencodermjpeg0:sink> [00m called chainfunction &gst_video_encoder_chain with buffer 0x1241648, returned error
basesrc gstbasesrc.c:2856:gst_base_src_loop:<imxv4l2videosrc0> [00m pausing after gst_pad_push() = error
basesrc gstbasesrc.c:2899:gst_base_src_loop:<imxv4l2videosrc0> [00m pausing task, reason error
GST_PADS gstpad.c:6027:gst_pad_pause_task:<imxv4l2videosrc0:src> [00m pause task


Вопрос собственно - можете помочь понять характер ограничения - библиотеки , firmware или аппаратура
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 04.03.2022 11:32 Редактировалось 04.03.2022 12:01 Сообщение: 9
sasamy
4.71

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

Вопрос собственно - можете помочь понять характер ограничения - библиотеки , firmware или аппаратура


можно попробовать обновить фирмварь и библиотеки - скиньте куда нибуть buildroot с которым работаете

Ещё вопрос - у вас там одновременно с двух камер 4096х3000 ? Аппаратные ограничения на битрейт VPU описаны в документации на процессор.
Спуститься к концу Подняться к началу
Персональная информация
korigo
Добавлено 10.03.2022 21:03 Сообщение: 10
korigo
0

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


можно попробовать обновить фирмварь и библиотеки - скиньте куда нибуть buildroot с которым работаете

Ещё вопрос - у вас там одновременно с двух камер 4096х3000 ? Аппаратные ограничения на битрейт VPU описаны в документации на процессор.


Сегодня попробовал buildroot-2021.08-sk на базе ядра 5.10.9 для i.mx6 quad/dual/sol , картина та же. библиотеки там наверное актуальные. Поток с одной камеры, битрейт роли не играет, там 3-4 fps, даже если один кадр сжать результат такой же Проблема именно в размере выходного jpeg кадра. Если еще актуально скинуть наш билдрут - попробую
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux