LINUX.ORG.RU

MALI 400 Allwinner A10 аппаратное декодирование

 , ,


0

1

Здравия всем зашедшим! О, великий ЛОР, только на тебя надежда)

Есть одноплатник Cubieboard 1 на Allwinner A10, графика MALI 400.

Неделю бьюсь пытаюсь заставить ее нормально показывать видео H264. Без драйвера выдает 5 FPS. Пробовал разные версии ядер, дистрибутивы, вдоль и поперек изучил https://linux-sunxi.org Толку нет! Я так понял драйвер для MALI 400 работает на каких-то старый ядрах 3.х.х. Таких в 2022 г. днем с огнем не сыщеш. Но вроде как в 5 версии ядра все работает. Но у меня ничего не работает))

Может у кого есть готовое решение или ткните носом? Отблагодарю копейкой!


Ответ на: комментарий от anonymous

и не влияет на качество, в это я отказываюсь верить.

Девайс который умеет исключительно OpenGL ну никак не может аппаратно декодировать H264. Совсем никак. Веришь ты или нет, без разницы. Религиозные воззрения мне вообще по-барабану.

без mali400 никакого ускорения не будет.

Ты совсем упоролся? Ускорения декодирования видео не будет без VPU (Cedar), а не без GPU (Mali400). Mali400 вообще не умеет ничего декодировать. Оно умеет только OpenGL/ES и всё.

Чтобы было ускорение видео нужно включить и загрузить драйвер VPU, который будет декодировать видео, и включить и загрузить драйвер Display Engine который будет декодированное показывать на дисплее.

Mali400 не декодирует видео и не показывает ничего на дисплее. Mali400 нафиг не нужен для аппаратного ускорения декодирования видео.

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

Cтасон спасибо тебе. Я только укрепился в мыслях, что был прав с самого начала. То что у тебя графический ускоритель ничего графического не ускоряет это ваще мощь. Спасибо что нашел время, и зашел. Ежели чего не обижайся, умышлено тебя задеть тут никто не хотел. Это всего лишь была беседа.

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

кстати удваиваю! на любом одноплатнике выкидываю Мали или панфрост и видео работает.

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

ванильное ядро v2.4..
blobX
lima не декодирует и вообще не нужен
пушут макаки с гранатой
чувакам которые ядро пишут никаких пруфцов не надо
исходники смотрел
$200 за документацию
умвр
Мне на них совершенно наплевать.

прошу прощения что использую вас в качестве примера,
но примерно так тхпд устройств allwinner и представляю всегда)))

nanosecond
()
Последнее исправление: nanosecond (всего исправлений: 1)

Заранее извиняюсь, у вас здесь все равно такое-себе…

Товарищ @hobbit, скажите пожалуйста, где справедливость? Почему г-н @Spoofing когда ему реально нужна помощь - создает всегда темы с возможностью отвечать анонимусам, а когда набрасывает не разбираясь (как обычно) в вопросе - всегда нас блочит?

Нельзя ли дискуссию Вся сетевая инфраструктура для бизнеса за 5 минут перенести в другой раздел? Чтобы св. Анонимус мог ему накостылять, и он не надеялся на таких же как он пятизвездный.

Нет, ну правда. Даже невзирая на всю нелепицу аля бесплатного инета у соседа, в его ОП, он умудрился написать полнейшую хренатень в базовых технических вопросах.

Всё общение с внешним миром, как наружу, так и во внутрь нашей сети, происходит через VDS. В случае обнаружения сетевой атаки по каналу VDS задача перед админом стоит простая: обрубить конец. И взять другую VDS, за те же 200 рублей, с новым IP-адресом.

Неуважаемый, защита от DDoS так не работает. Это лишь увеличит время простоя сервера затраченное на смену фронт-энда (т.е. VDS), и перенастройку бэк-энда + время TTL. А DDoS продолжится, например, ровно с того момента, как будет доступен один из доменов доступных наружу.

Ув. тов. @hobbit просьба или перенести его тему туда где можно ему «костылять» за его невежество или хотя бы добавить этот ответ в толксы.

Пы.Сы. Бедный его работодатель, это какой-то позор!

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

Пы.Сы. Бедный его работодатель, это какой-то позор!

Работодатель боится чтобы хуже после увольнения не стало, мало ли что @Spoofing потом отчебучит, раз сейчас так подставляет. Из двух зол выбирают меньшее (с) Выбор небольшой, остается рвать на жопе волосы терпеть! =)

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

Ещё раз для тупых: …

Вот только из всего этого не следует, что они не сидят на общих ресурсах или вообще общих вычислительных блоках (как в vc4 например) или хотя бы нет некой синхронизации кадров/буферов между ними и они не влияют на производительность друг друга (о чём изначально вы и начали спорить).

З.Ы. А ещё глубоко паралельно на что тебе насрать, пруфы предоставляет заявляющий.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 2)
Ответ на: комментарий от Stanson

Он не нужен. Видео прекрасно будет проигрываться без него.

Очевидно только при условии, что WM и плеер/браузер не задействуют openGL и прочих ускорялок на уровне железа. О чём все почему то тактично забыли. Что мало декодировать видеокадр и вовремя положить его в буфер, надо ещё пропихнуть его через буферы нескольких приложений, сшить с некоторыми другими буферами и т.д.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от kirill_rrr

Если несложно скажи, вот есть soc allwiner a64, у него имеются TIM0, и ТIM1. Считают оба от значения в регистре TMR0_CUR_VALUE_REG до нуля, кажется. Но не понятно что происходит когда досчитает до нуля? Что-то вызывается? Случается прерывание?

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

Я вообще не представляют что находится в soc allwiner a64 и что такое TIM0 и ТIM1, и это не удивительно, ведь даже 95+% квалифицированных разработчиков не углубляются в аппаратный уровень.

Зато я как пользователь довольно часто сталкивался с ситуациями, когда при наличии избыточно мощного и полностью функционарующего аппаратного ускорителя всё равно что то идёт не так и fps совсем не такой хороший как должен. Если картинка вообще есть. Как в случае 3Д графики, так и в случае видеодекода.

kirill_rrr ★★★★★
()

Ты не туда воюешь. Тебе libva нужна и плагин под нее и спецом собранный ffmpeg и mpv или gstreamer. Mali тут побоку, не при делах вообще.

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

Более того на ваших любимых народных телефонных процах точно такой же аппаратный композитор, без него там слайдшоу на Mali. И вообще, откуда столько торчков сегодня? Ума не приложу :(

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

Оно дешевое и вполне на современных ядрах еще много чего может, и жрет мало, холодное. Для задач мелкой домашней автоматизации и видосик там сыграть, камеру подключить и тп вполне работает, и стоит копейки. Короче по задаче и машинка.

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

Эти костыли нужны при отсутствии аппаратного композитора, что на армах, умеющих видео, большая редкость. Композитинг на GPU адово тормозит, жрет батарею и мешает всему остальному работать и при воспроизведении видео кладет систему на обе лопатки (так как идет проброс сырого фрейма несколько раз по шине туда-сюда пару десятков раз в секунду). Пайплайн с аппаратным композитором обеспечивает zero-copy и работает независимо от процессора.

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

Пайплайн с аппаратным композитором обеспечивает zero-copy и работает независимо от процессора.

А наследуемая с десктопов архитектура линуксового софта умеет работать с этим? Особенно если аппаратный композитор не входит в состав gpu? И кстати, конкретно на этом пациенте, он есть? И если да, то куда входит?

З.Ы. по моему опыту малиноводства могу сказать: в vc4 и vc6 никаких отдельных композиторов нет или драйверами и софтом они не поддержаны. Всё висит на цпу и это главный косяк малин.

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

Умеет, все в DRM/v4l2 в стандартных интерфейсах.

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

Не смотрел как в малине, но в телефонных SoC’ах так же и в самсунгах тоже так. И в теграх так. Везде аппаратный композитор плейнов.

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

32-битное но это не значит что это обязательно плохо без указания дополнительных требований.

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

Смотри даташит на TMR0_INTV_VALUE_REG и прерывание должно быть включено в TMR_IRQ_EN_REG но в чем проблема, в даташите вроде все хорошо написано:

TMR0_IRQ_EN. 
Timer 0 Interrupt Enable. 
0: No effect 
1: Timer 0 Interval Value reached interrupt enable.

Дальше смотри какое прерывание будет по номеру периферии.

slapin ★★★★★
()
Последнее исправление: slapin (всего исправлений: 1)
Ответ на: комментарий от slapin

Я не могу понять как это работает. Там же нет контроллера прерываний. А вот мне нужно написать свою функцию, чтобы она вызывалась по достижению нуля таймером. Это только через scheduler?

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

И вообще, откуда столько торчков сегодня? Ума не приложу :(

Вендузятникам на новый год надарили SBC? :)

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

Я не могу понять как это работает. Там же нет контроллера прерываний.

О как. И куда же из Allwinner A64 делся контроллер прерываний?

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

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

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

Ну как в AArch64 прерывания устроены - так и вызывать. Внимательно почитать про GIC для начала, например.

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

я и пытаюсь понять как они устроены. вот таймер досчитал до нуля. потом что? генерируется сигнал?

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

Да, генерируется прерывание, какое-нибудь ядро отвлекается от выполнения того, что оно сейчас выполняет, и переходит по адресу в табличке прерываний.

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

ну эт уже врослые разговоры. спасибо. А если я хочу чтобы когда таймер досчитает до нуля начала выполнятся функция написаная мною. как это реализовать? также как на stm32? или тут есть отличия?

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

также как на stm32?

Принцип тот же.

или тут есть отличия?

Ну если это другой процессор другой архитектуры - конечно есть. Другие битики в других регистрах, может что-то дополнительно настроить надо, типа выбора ядра и т.п. Но в общем и целом всё похоже - настроить всякие приоритеты, какое ядро прерывать и т.п., в табличку прерываний поместить переход на твою функцию, разрешить прерывания от нужного источника, разрешить прерывания глобально и, возможно, перед выполнением собственно кода обработки прерывания дописать проверку источника прерывания, если оно shared.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от slapin

так как идет проброс сырого фрейма несколько раз по шине туда-сюда пару десятков раз в секунду

Какая шина? Это же soc с общей памятью.

Во взрослом x86 есть трюки для zero copy между аппаратным декодером и opengl – называется dma-buf. В arm тоже должен быть, если дрова нормальные.

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

И что? Это отменяет гоняния данных по шине? То что память одна всего лишь значит что GPU по шине туда стучится через бас мастер и пишет/читает. И по этой шине работает вообще вся периферия, доступы CPU и т.п. Очень советую почитать про архитектуру микропроцессорных систем. Даже если GPU умеет басмастерить и имеет свй собственный контроллер памяти, который включается вместо основного, все равно передача данных по шине никуда не девается.

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

Это отменяет гоняния данных по шине?

Ты не туда воюешь. Плохо, когда нужно копировать данные из RAM в GRAM по PCIe, чтобы GPU с ними мог что-то сделать. Вот тут можно очень много времени потерять. Если у CPU и GPU память общая, то этих проблем нет. При чём тут axi?

все равно передача данных по шине никуда не девается.

Как будто CPU не через неё с памятью работает. Данные в любом случае бегают по шине. Это норма.

имеет свй собственный контроллер памяти, который включается вместо основного

И что мешает контроллеру RAM иметь два порта подключения axi или любой другой шины: через один кормит CPU, через другой - GPU? Ну?

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

Короче ты не понимаешь, читай книжки, тогда поймешь что я имел в виду. Иначе разговор из пустого в порожнее.

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

читай книжки, тогда поймешь

Ну не сливайся, пожалуйста.

Поясни мне за axi? Какие данные ты гоняешь по шине? CPU не гоняет данные по шине? Данные из RAM сразу в кэш телепортируются? Мне очень интересно.

ox55ff ★★★★★
()

В общем нифига не работает, везде неправда, все пропало, жизнь го, а парни си, а Солнце е***ый фонарь :)

Собрал все как написано на https://linux-sunxi.org/Sunxi-Cedrus , на 5.9.14 Alwinner A10 через секунду mpv, vlc пишет Segmentation Fault. Kodi само собой лагает. v4l2-request-test быстро выдает какой-то бред в зеленых артефактах. vainfo выдает список кодеков как полагается.

На Allwinner H3 вообще нифига не выдает vainfo, но видео хоть софтварно более-менее тянет. 20 ФПС, уже терпимо.

Кто сможет помочь, не за спасибо разумеется? Уверен, проблема где-то на поверхности.

И немного оффтопа: видео реально посмотреть на NetBSD? После года юзания H3 (Orange Pi Lite) 24/7 стали отваливаться сетевые карты от USB. Вечные Tx -2 Retry и прочий гемор. Причины две: кривое питание платы и кривые дрова USB в линуксе. Питание в идеале, оказались кривые дрова. В NetBSD таких глюков нет, все работает как надо. Но опыта в ней нет, давно работал во фряхе и забыл как страшный сон. Последние 15 лет только пингвин. KDE 3.5…эх..олдскулы…)))

NotWin
() автор топика

Как успехи ? Тоже в скором времени хочу поковырять 1кубик.

На arm никогда ничего не ставил . В интернетах все протухло, многие ссылки не работают.

Из того что интерисует , работе ли arch ? Как я понял оно 32 битое , поддержку не выплили ?

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

Шляпа этот 1кубик. Старая медленная железка. 1 плюс что SATA есть. Видео так и не работает нормально. 1 раз запустилось с артефактами и сразу Segfault. Я так понял мануалы все устарели много лет назад. Чтоб завести на современном ядре, надо копаться к исходниках. Пробовал собирать, много нестыковок с новыми ядрами. В итоге как-то это собралось и упало в Segfault. Так что скорее всего завести видео как-то можно, за отдельную плату :)) Найти бы такого человека.

Арч работает https://archlinuxarm.org/platforms/armv7/allwinner/cubieboard

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