Ник:
Пароль:

Контакты

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
Аппаратное кодирование\декодирование данных.
mibin
Добавлено 01.03.2016 09:23
0
Сообщение: 1
mibin
5

Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Добрый день!

Пытаюсь полученное изображение в формате V4L2_PIX_FMT_YUYV сжать с помощью VPU, но читая про него, у меня все больше складывается ощущение, что он может работать только с форматами типа V4L2_PIX_FMT_YUV422P, т.е. где все составляющие цвета лежат отдельно: сначало Y потом Cr потом Cb (порядок не существенен).

Вопрос есть ли возможность произвести сжатие картинки в V4L2_PIX_FMT_YUYV используя VPU?

Ссылка на VPU API
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.03.2016 09:46 Сообщение: 2
sasamy
4.71

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

Вопрос есть ли возможность произвести сжатие картинки в V4L2_PIX_FMT_YUYV используя VPU?


нет, VPU поддерживает только планарные форматы, надо делать преобразование - IPU поддерживает такое.
Спуститься к концу Подняться к началу
Персональная информация
mibin
Добавлено 01.03.2016 11:29 Редактировалось 01.03.2016 11:30 Сообщение: 3
mibin
5

Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Вот тут пример перекодирования из одной схемы в другую:
Пример


Дома попробую отпишусь.
Спуститься к концу Подняться к началу
Персональная информация
mibin
Добавлено 13.03.2016 13:31 Редактировалось 13.03.2016 13:34 Сообщение: 4
mibin
5

Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Попытлся использовать этот пример ipu-examples у себя и наткнулся на проблему.
Здесь подключается библиотека #include "linux\ipu.h", где есть описание таких стуктур как
Код
struct ipu_task
я же могу подключить библиотеку только методом #include "ipu.h". Частично они похожи, но в моей версии явно вырезано куча кода.
По пути
Код
/home/user/src/buildroot-2014.08-sk-3.10.17/output/build/linux-custom/include/uapi/linux
я нашел тот header который мне нужен, но подключать его с таким путем в приложение думаю не правильным. Может быть нужно что-то подключить в menuconfig или linux-menuconfig чтобы этот header стал виден у меня?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 13.03.2016 14:56 Сообщение: 5
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Это нестандартные хидеры из ядра - менюконфиг не поможет, самое простое - скопируйте их в sysroot вручную или правило допишите в каком-нибуть пакете как например тут

cp $(LINUX_DIR)/include/uapi/linux/ipu.h $(STAGING_DIR)/usr/include/linux/
cp $(LINUX_DIR)/include/uapi/linux/mxcfb.h $(STAGING_DIR)/usr/include/linux/
Спуститься к концу Подняться к началу
Персональная информация
mibin
Добавлено 22.03.2016 09:44 Редактировалось 22.03.2016 09:47 Сообщение: 6
mibin
5

Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Разбираю пример IPU отсюда и тут меня в ступор вводит вот эта часть кода:
Код
fd_ipu = open("/dev/mxc_ipu", O_RDWR, 0);

* * * * * *
ioctl(fd_fb, FBIOGET_FSCREENINFO, &fb_fix);

// Set IPU output address as framebuffer address
outpaddr = fb_fix.smem_start;
task.output.paddr = outpaddr;

// Create memory map for output image
outbuf = mmap(0, osize, PROT_READ | PROT_WRITE, MAP_SHARED, fd_ipu, task.output.paddr);
if (!outbuf) {
printf("mmap fail\n");
ret = -1;
goto done;
}


На сколько мне известно последний параметр mmap это простое смещение внутри открываемого файла...почему оно вдруг как-то связалось с буфером видеовывода?
И могу ли я так же, во избежание использования дорогого memcpy как-то замапить два буфера на одно простанство или может есть какой-то другой рецепт решения этой проблемы?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 22.03.2016 12:08 Редактировалось 22.03.2016 12:11 Сообщение: 7
sasamy
4.71

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

На сколько мне известно последний параметр mmap это простое смещение внутри открываемого файла.


mmap - системный вызов, что в параметре передается зависит от реализации функции mmap в драйвере

Цитата

может есть какой-то другой рецепт решения этой проблемы?


так вы сами себе создаете проблемы а потом идете на форум узнавать как их решить :) чем gstreamer не угодил - зачем вам эти нестандартные вендор-специфичные библиотеки ?
Спуститься к концу Подняться к началу
Персональная информация
mibin
Добавлено 22.03.2016 12:35 Редактировалось 22.03.2016 12:35 Сообщение: 8
mibin
5

Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Эм...а чё у gstreamer есть API, которое может все это сделать для меня?
Можно ссылку тогда на мануал?
Спуститься к концу Подняться к началу
Персональная информация
mibin
Добавлено 22.03.2016 12:42 Редактировалось 22.03.2016 12:43 Сообщение: 9
mibin
5

Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
GStreamer это оказывается не готовое решение а целый FrameWork :)
Начну ознакомление с ним тут https://habrahabr.ru/post/178813/
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 22.03.2016 12:43 Сообщение: 10
sasamy
4.71

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

у gstreamer есть API


конечно есть - gst-launch это CLI который в общем случае предназначен для прототипирования и тестирования конвееров

https://gstreamer.freedesktop.org/documentation/

Цитата

Можно ссылку тогда на мануал?


если речь о специфике плагинов - в /root есть некоторые примеры конвееров (в buildroot 3.10.17 и 3.14.14)
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux