Автор Тема: Аппаратный encoder h264 для Allwinner H3  (Прочитано 2824 раз)

ubobrov

  • Гость
Аппаратный encoder h264 для Allwinner H3
« : Июль 12, 2016, 07:21:13 pm »
Запилил аппаратный энкодер видео для чипов H3 из исходников для A10/A20. Проестил: работает :)
Должен работать при условии, что права на /dev/ion, /dev/video0 и /dev/cedar_dev установлены в 666 и у Вас есть ffmpeg

энкодер (бинарь) можно взять здесь
Запись видео с USB камеры:
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -pix_fmt nv12 -r 25 -f rawvideo pipe: | ./h264enc - 640 480 test.h264

Воспроизведение записанного:
mpv --vo=vdpau --hwdec=vdpau --hwdec-codecs=all test.h264

UPD:

Адаптированные исходники FFmpeg для Allwinner H3.
Чтобы собрать, надо взять оригинальные исходники вот отсюда и заменить в них файлы из репозитория, затем собрать на целевой платформе.
Готовый бинарь здесь.

Запись с камеры: 
 ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -pix_fmt nv12 -r 25 -c:v cedrus264 test.h264
Воспроизведение:
mpv --vo=vdpau --hwdec=vdpau --hwdec-codecs=all test.h264

Успехов.
« Последнее редактирование: Июль 13, 2016, 02:40:30 pm от ubobrov »

Онлайн Olej

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #1 : Август 16, 2018, 11:41:56 am »
Запилил аппаратный энкодер видео для чипов H3 из исходников для A10/A20. Проестил: работает :)
Скорее всего, гость ubobrov вряд ли появится в форуме...
Но может кто-то может подсказать ... или хотя бы высказать предположение:
- что это за такой аппаратный энкодер для h264?
- в каких процессорах такое чудо есть?
- в каких ARM кроме названных A10/A20/H3?

Оффлайн ua3nbw

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #2 : Август 16, 2018, 06:54:06 pm »
Cedrus – linux-sunxi community проект программного обеспечения, который является полностью 100% открытым исходным кодом драйвера для использования аппаратного ускорения видео.

Bootlin (formerly Free Electrons) -- активно работают и продвигают.

тут подробнее: https://linux-sunxi.org/Sunxi-cedrus

Онлайн Olej

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #3 : Август 17, 2018, 09:40:17 pm »
Cedrus – linux-sunxi community проект программного обеспечения, который является полностью 100% открытым исходным кодом драйвера для использования аппаратного ускорения видео.

Bootlin (formerly Free Electrons) -- активно работают и продвигают.

тут подробнее: https://linux-sunxi.org/Sunxi-cedrus
Это очень интересно.
Но непонятно ... в чём аппаратность? какой аппаратный чип, устроство и т.д. обеспечивает эту аппаратность?

Оффлайн ua3nbw

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #4 : Август 18, 2018, 09:28:39 am »
Но непонятно ... в чём аппаратность? какой аппаратный чип, устроство и т.д. обеспечивает эту аппаратность?
Там: https://linux-sunxi.org/Sunxi-cedrus есть таблица, что Sunxi-Cedrus VPU driver  на mainline ядре работает на Allwinner SoCs A13/A10s, A20,  A33,  H3

аппаратно  работают кодеки MPEG2 и H264  с плеерами VLC и KODI.

очевидно, что используется графический процессор GPU Mali


Онлайн Olej

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #5 : Август 18, 2018, 10:32:48 pm »
Там: https://linux-sunxi.org/Sunxi-cedrus есть таблица, что Sunxi-Cedrus VPU driver  на mainline ядре работает на Allwinner SoCs A13/A10s, A20,  A33,  H3
аппаратно  работают кодеки MPEG2 и H264  с плеерами VLC и KODI.
Цитировать
Platform   Cedrus Driver Status   DRM Planes Status
A10   Untested   Untested
A13/A10s   Supported   Missing (broken)
A20   Supported   Supported
A23   Untested   Untested
A33   Supported   Supported
A64   Untested   Untested
H3   Supported   Supported
H5   Untested   Untested
Означает ли это, что все эти изыски по GIT-ам 2-летней давности, с которых начинается эта тема, не актуальны, и всё теперь доступно в главной ветке развития проекта?
Будет ли аппаратное ускорение работать (для H3) с кодеком H264 (да и MPEG2) не с конкретными плеерами VLC и KODI (которые, откровенно говоря, мне на хрен не нужны), а и в других окружениях ... например с компьютерным зрением, OpenCV? ... например при записи потока фреймов захваченных с видеокамеры.



Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 473
  • Лайков: 157
  • Карма: +23/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #6 : Август 18, 2018, 10:41:00 pm »
очевидно, что используется графический процессор GPU Mali
На сколько Я понял, GPU и VPU - два разных устройства.

Онлайн Olej

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #7 : Август 18, 2018, 11:15:12 pm »
очевидно, что используется графический процессор GPU Mali
На сколько Я понял, GPU и VPU - два разных устройства.
Вот очень хотелось бы разобраться что это за устройства?
Прежде всего, что за аббревиатура VPU?

Онлайн Olej

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #8 : Август 19, 2018, 01:37:54 pm »
очевидно, что используется графический процессор GPU Mali
На сколько Я понял, GPU и VPU - два разных устройства.
Мне вот это показалось интересным - Video Engine
Цитировать
What should this hardware block be called?
Video Engine is the plain name used by Allwinner for the hardware block responsible for the task of decoding and encoding video formats.
(выделено мной)
Цитировать
VE - Video Engine
is the most common name used in all the places for this hardware block. It is believed that VE is a short form of VCE (Video Codec Engine) to be in accordance with ACE (Audio Codec Engine) and is also the best generic name to describe this type of hardware block.
Naming in the datasheets and user manuals.
SOC   features label   block diagram   related registers
A10   VPU   VE   VE
A10s   VPU   VPU   VE
A13   VPU   VPU   VE
A20   Video Engine (Phoenix 3.0)   Video Engine   VE
A23   Video Engine   Video Engine   VE
A31   Video Engine   Video Engine   VE
A31s   Video Engine   Video Engine   VE
A33   Video Engine   Video Engine   VE
A80   Video Engine   Video Engine   VE
A83T   Video Engine   claims decoder/encoder is part of the GPU block   VE
H3   Video Engine   Video Engine   VE
A64   Video Engine   Video Engine
Ну клоуны, блин! :(
Оказывается, VPU, VE, VCE, ACE ... - это всё одно и то же ;D ... в зависимости от того, у кого из пишущих "документацию" в каком месте руки чешутся >:(

Но таки да ;) ... есть у них там какие-то дополнительные аппаратные плюшки, VE, неизвестные другим производителям (?).

Онлайн Olej

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #9 : Август 19, 2018, 01:45:09 pm »
аппаратно  работают кодеки MPEG2 и H264  с плеерами VLC и KODI.
Всё это очень любопытно ... Но!
Цитировать
This page was last modified on 20 July 2018, at 16:53.
Цитировать
Known bugs and limitations
H264 and H265 are not supported (some of the underlying problems include: allocating 19 surfaces at once and queueing several slices by frames)
MPEG4 decoding has some glitches. When something moves in a video it usualy draws some kind of trace behind it, this behavior is believed to come from an inconsistency in movement prediction. (VLC also tries to SyncSurface more often than needed which results in error when dequeuing the capture buffers)
...
Цитировать
Player Support
...
- кроме VLC - ничего!

Так что, похоже, что всё это (пока?) - буря в стакане воды. >:(

Оффлайн ua3nbw

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #10 : Август 19, 2018, 05:42:18 pm »
Так что, похоже, что всё это (пока?) - буря в стакане воды. >:(
Да.

Но аппаратный энкодер видео для чипов H3 от ubobrov нормально работает на ARMBIAN 5.25 stable Debian GNU/Linux 8 (jessie) 3.4.113-sun8i тестировал тут:https://ua3nbw.ru/all/ffmpeg-cedrus-h-264-codec-on-h3/

а про VPU из интернетов:
Цитировать
VPU - Блок векторной обработки
Графический процессор может быть или не быть VPU, в зависимости от набора инструкций, поддерживаемого GPU.

Онлайн Olej

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #11 : Август 19, 2018, 07:41:17 pm »
Но аппаратный энкодер видео для чипов H3 от ubobrov нормально работает на ARMBIAN 5.25 stable Debian GNU/Linux 8 (jessie) 3.4.113-sun8i
Где вы берёте такие вот нотации сборок ОС: ARMBIAN 5.25 stable Debian GNU/Linux 8 (jessie) 3.4.113-sun8i ?
Смотрю... (чтоб как-то соотносить ... то что там с тем что здесь ;))
- по названию скачанного имиджа с Armbian: Armbian_5.38_Orangepione_Debian_stretch_next_4.14.14.img ... похоже, но выглядит не совсем так...
- по установленной системе ... ничего похожего:
olej@orangepione:~$ uname -a
Linux orangepione 4.14.18-sunxi #24 SMP Fri Feb 9 16:24:32 CET 2018 armv7l GNU/Linux

olej@orangepione:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.5 (stretch)
Release: 9.5
Codename: stretch
тестировал тут:https://ua3nbw.ru/all/ffmpeg-cedrus-h-264-codec-on-h3/
абора инструкций, поддерживаемого GPU.
Смотрел ... не очень аккуратно там всё написано (что-то с тэгами, потом без тегов, что-то повычёркивано...) ... но всё же:
- вы собираете FFmpeg с нуля из исходников?
- захват видео ... передача его на другой хост...
Но ведь при этом никакое сравнение с Cedrus или без Cedrus  не происходит? 
Я такое и на оригинальном FFmpeg из репозитория делал...
В чём кайф? ;)


Оффлайн ua3nbw

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #12 : Август 19, 2018, 08:55:19 pm »

Где вы берёте такие вот нотации сборок ОС: ARMBIAN 5.25 stable Debian GNU/Linux 8 (jessie) 3.4.113-sun8i ?
Да вроде понятно раньше было, означает: Debian jessie c ядром 3.4.113-sun8i

Смотрел ... не очень аккуратно там всё написано (что-то с тэгами, потом без тегов, что-то повычёркивано...) ... но всё же:
- вы собираете FFmpeg с нуля из исходников?
- захват видео ... передача его на другой хост…
все команды в теге code т.e. ошибок при копировании не будет.
собирается FFmpeg-Cedrus с патчем автора темы.

Но ведь при этом никакое сравнение с Cedrus или без Cedrus  не происходит? 
Я такое и на оригинальном FFmpeg из репозитория делал...
В чём кайф? ;)
там скриншот загрузки CPU при трансляции h264 (cedrus264) кодированного видео  с fps= 25 из  rawvideo (native) обычной веб-камеры

без  cedrus264 будет загрузка CPU 100% на все ядра и fps на порядок ниже.