LINUX.ORG.RU

Вопрос специалистам по видеоподсистеме линукс


1

1

Итак, имеем хардварный декодер видео на ARM SoC (Cubieboard с CedarX). А каким образом запилить к нему драйвер?

Господа блобопрограммисты решили что нужно сделать устройство в /dev, и с помощью него мапить память в юзерспейсную блобобиблиотеку, управляющую этим самым декодером.

А как сделать по уму? А то я вот зареверсил кусочек этой самой библиотеки, и теперь думаю как лучше это дело реализовать.


я думаю стоит об этом спросить в linux kernel maillists

i_gnatenko_brain ★★★★
()

А как сделать по уму?

Для таких аппаратных декодеров хорошо подходит V4l2 mem2mem device + CMA - это наилучший вариант не нагружать процессор, но к сожалению ни один линуксячий плеер не поддерживает такие устройства. Парадокс - video for linux не поддерживается полноценно в окружении Linux.

anonymous
()
Ответ на: комментарий от i-rinat

А почему например не dri, mesa и vdpau state tracker который туда недавно запилили, тот, на котором аппаратное ускорение видео в radeon (или как там нынче ati'шный драйвер называется) работает?

com
() автор топика
Ответ на: комментарий от com

Если представляешь, как это прикрутить к Mesa, это ещё лучше. Правда о кодировании видео придётся забыть. Зато декодирование будет уже со свистелками.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Ага, уже видел. Трабл в том, что я реверсил VP8. Он, кстати, завёлся, и в моём исполнении умеет играть видео со включенной сегментацией (в отличие от оригинала).

Пока реализация представляет собой полностью декомпелированный оригинал с пофикшенными ошибками китайских программистов. Кстати, если интересно, то вот:

https://bitbucket.org/paullo612/libvecore

А так — есть ещё http://linux-sunxi.org/VE_Register_guide, который я последнее время активно заполнял. Если у самого руки не дойдут, хоть для других инфа будет.

com
() автор топика
Ответ на: комментарий от com

реверсил VP8

Тогда с VDPAU тебе не по пути, там с прошлого года VP8 не намечается. А вот в VA-API в staging-ветке что-то на эту тему есть.

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

Парадокс - video for linux не поддерживается полноценно в окружении Linux.

как именно не поддерживается? VLC например вполне себе открывает и играет видео с V4L2 устройств

Harald ★★★★★
()

наверное надо читать доки по V4L2 - это на тему как оно должно выглядеть для юзерспейса, а со стороны ядра - ну разве что в папке Documentation/video4linux/ исходников ядра почитать файлики, других мест не знаю

Harald ★★★★★
()
Ответ на: комментарий от Harald

как именно не поддерживается? VLC например вполне себе открывает и играет видео с V4L2 устройств

тема не про захват а про обработку/кодирование/декодирование через V4L2 API.

exception13 ★★★★★
()
Ответ на: комментарий от exception13

т.е плеер открывает файлик, читает из него закодированное видео и пишет его в /dev/videoN - файл, соответствующий декодеру, и потом читает из этого же /dev/videoN раскодированное видео и рисует его на экране, об этом речь?

Harald ★★★★★
()

Господа блобопрограммисты решили что нужно сделать устройство в /dev, и с помощью него мапить память в юзерспейсную блобобиблиотеку, управляющую этим самым декодером.

А что в этом плохого?

annulen ★★★★★
()
Ответ на: комментарий от exception13

тема не про захват а про обработку/кодирование/декодирование через V4L2 API.

Какое отношение имеет V4L к embedded-системам?

annulen ★★★★★
()
Ответ на: комментарий от annulen

Какое отношение имеет V4L к embedded-системам?

прямое, scaller, rotator, composer, encoder, decoder часто в юзерспес светят именно V4L API

exception13 ★★★★★
()
Ответ на: комментарий от annulen

Ну, с одной стороны конечно ничего плохого, но с другой — мне кажется mmap медленный. Ну, или у меня кривые руки, ибо блоб с mmap работает, а у меня почему-то местами видео рассыпается.

com
() автор топика
Ответ на: комментарий от com

мне кажется mmap медленный

О_о

Ну, или у меня кривые руки, ибо блоб с mmap работает, а у меня почему-то местами видео рассыпается.

Скорее все-таки это. А в чем проблема с использованием блоба?

annulen ★★★★★
()
Ответ на: комментарий от annulen

Ну, суть в том, что есть там операция, позволяющая декодировать набор бит VP8. С помощью этой операции читаются параметры текущего кадра. Так вот, проблема в том, что железяка должна зажигать определённый бит в определённом регистре пока она занята декодированием. Но этот самый бит занятости при текущих условиях (ммапнутой в юзерспейс памяти) я наблюдаю крайне редко. При этом имею неверно прочитаные параметры кадра (набор вероятностей) в поизвольные промежутки времени.

Надо будет попробовать посмотреть на этот самый бит из ядра.

com
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.