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

Оффлайн ubobrov

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #60 : Декабрь 06, 2019, 03:40:56 pm »
данные для энкодера должны быть в области dma ddr. чаще всего это входящий bitbuffer, куда эти данные копируются пользователем или поступают из dma.
в качестве примера можно посмотреть этот код,
но драйвер (v4l2 для вашего CSI или MIPI) обязан поддерживать V4L2_MEMORY_USERPTR

Оффлайн ubobrov

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #61 : Апрель 23, 2020, 05:23:58 pm »
Допилин надосуге libvdpau_sunxi для работы с драйвером cedrus на mainline ядре.
Как известно на новых mainline ядрах нет проприетанного /dev/disp как на старом ядрe 3.4 от allwinner и воспроизвести видео на дисплей с помощью vdpau_sunxi не получится.
Добавил простой рендеринг кадра в X11 дисплей с использованием конвертирования YUV420P в RGBA на SIMD NEON.
Работает жутко медленно т.к. нет должного ускорения на DRM, но это только начало работы.

Если есть идеи по ускорению при помощи Mali/DRM - милости просим в тему )

PS: поддержка VAAPI и libva-v4l2-request пока не интересует тк знаю что работает. Интерес именно запустить старые методы с новыми ядрами пока не будет должной поддержки кодирования/декодирования в драйвере cedrus.

Видео как работает )
Видео HD на мониторе (работает отлично!)
« Последнее редактирование: Апрель 27, 2020, 04:29:44 pm от ubobrov »

Оффлайн storyboardcreativity

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #62 : Июнь 09, 2020, 11:49:40 pm »
Всем привет. Сразу хочу сказать огромное спасибо uboborov - он сократил в десятки раз мне количество времени на поиск решения по декодингу H.264 на Orange Pi Lite. Однако, я хотел бы поинтересоваться о паре вещей.

На текущий момент конфигурация:

- Orange Pi Lite, Armbian
- Ядро 5.4.43-sunxi (образ ОС взят отсюда: https://www.armbian.com/orange-pi-lite/)

Далее собран https://github.com/uboborov/sunxi-cedar-mainline:
1. Ядро НЕ пересобиралось (как было в образе, так и осталось).
2. Исходники ядра получил через armbian-config на самом Orange Pi Lite.
3. На основе полученных исходников ядра и содержимого репозитория sunxi-cedar-mainline собран cedar_ve.ko, modprobe произведён.
4. Внесены правки в уже имеющийся /boot/dtb/sun8i-h3-orangepi-lite.dtb (на основе orangepidts.patch в репозитории).

Вот тут начинается веселье :)
После выполнения пункта 4 перестал работать UI (xfce4 больше не стартует), просто мигает курсор на чёрном фоне, Ctrl+Alt+F1 позволяет выйти в терминал.
Меня это не сильно смутило, так как я большую часть времени работаю через vncserver, он продолжил работать.
Я сам предполагаю, что проблема в смене видеоустройства (в orangepidts.patch комментируется устройство "video-codec" и на его место ставится "video-engine").

5. sudo chmod 666 /dev/cedar_ve (/dev/disp отсутствует)
6. Собран https://github.com/uboborov/libvdpau-sunxi-H3 и все его зависимости.
6.1 export VDPAU_DRIVER=sunxi
7. Установлен ffmpeg (apt-get install ffmpeg).
7.1. Установлен mpv (чисто для проверки - не так важно).

8. Декодинг видео тестировался так: ffmpeg -hwaccel vdpau -i <путь_к_файлу_видео> -f null -

Результаты:

- Декодинг 4K-видео сразу же падает.
- Декодинг 1280x720 заработал, всё отлично (ffmpeg: 27 fps, 1.1x скорости).

Собственно, вопросы (очень тупые, но задаю потому что могу):

- Куда делся UI?
- Возможно ли мне будет без UI прямо из кода выводить изображение на HDMI-вывод?
- Если да, то как?
- Почему 4K упал?
- Как мне из кода (например, C++) указать "-hwaccel vdpau" и вывод на HDMI?

Ниже привожу текст Xorg.0.log в результате падения при запуске UI (startxfce4):
[ 15789.579] 
X.Org X Server 1.20.4
X Protocol Version 11, Revision 0
[ 15789.594] Build Operating System: Linux 4.9.0-8-arm64 armv8l Debian
[ 15789.599] Current Operating System: Linux orangepilite 5.4.43-sunxi #20.05.1 SMP Sat May 30 20:32:43 CEST 2020 armv7l
[ 15789.599] Kernel command line: root=UUID=46824ec7-2a2a-4382-8149-d86740775cfb rootwait rootfstype=ext4 console=ttyS0,115200 console=tty1 hdmi.audio=EDID:0 disp.screen0_output_mode=1920x1080p60 consoleblank=0 loglevel=1 ubootpart=f511c17a-01 ubootsource=mmc usb-storage.quirks=0x2537:0x1066:u,0x2537:0x1068:u   sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_fb_mem_reserve=16 cgroup_enable=memory swapaccount=1
[ 15789.617] Build Date: 05 March 2019  08:11:12PM
[ 15789.623] xorg-server 2:1.20.4-1 (https://www.debian.org/support)
[ 15789.629] Current version of pixman: 0.36.0
[ 15789.640] Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
[ 15789.641] Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[ 15789.665] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Jun  9 23:05:24 2020
[ 15789.684] (==) Using config directory: "/etc/X11/xorg.conf.d"
[ 15789.691] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[ 15789.703] (==) No Layout section.  Using the first Screen section.
[ 15789.703] (==) No screen section available. Using defaults.
[ 15789.703] (**) |-->Screen "Default Screen Section" (0)
[ 15789.703] (**) |   |-->Monitor "<default monitor>"
[ 15789.704] (==) No monitor specified for screen "Default Screen Section".
Using a default monitor configuration.
[ 15789.704] (**) Option "BlankTime" "0"
[ 15789.704] (**) Option "StandbyTime" "0"
[ 15789.704] (**) Option "SuspendTime" "0"
[ 15789.704] (**) Option "OffTime" "0"
[ 15789.704] (==) Automatically adding devices
[ 15789.704] (==) Automatically enabling devices
[ 15789.704] (==) Automatically adding GPU devices
[ 15789.704] (==) Max clients allowed: 256, resource mask: 0x1fffff
[ 15789.707] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[ 15789.707] Entry deleted from font path.
[ 15789.709] (==) FontPath set to:
/usr/share/fonts/X11/misc,
/usr/share/fonts/X11/100dpi/:unscaled,
/usr/share/fonts/X11/75dpi/:unscaled,
/usr/share/fonts/X11/Type1,
/usr/share/fonts/X11/100dpi,
/usr/share/fonts/X11/75dpi,
built-ins
[ 15789.709] (==) ModulePath set to "/usr/lib/xorg/modules"
[ 15789.709] (II) The server relies on udev to provide the list of input devices.
If no devices become available, reconfigure udev or disable AutoAddDevices.
[ 15789.710] (II) Loader magic: 0x645f98
[ 15789.710] (II) Module ABI versions:
[ 15789.710] X.Org ANSI C Emulation: 0.4
[ 15789.710] X.Org Video Driver: 24.0
[ 15789.710] X.Org XInput driver : 24.1
[ 15789.710] X.Org Server Extension : 10.0
[ 15789.712] (--) using VT number 3

[ 15789.712] (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
[ 15789.715] (II) xfree86: Adding drm device (/dev/dri/card0)
[ 15789.728] (II) no primary bus or device found
[ 15789.728] falling back to /sys/devices/platform/display-engine/drm/card0
[ 15789.728] (II) LoadModule: "glx"
[ 15789.732] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[ 15789.768] (II) Module glx: vendor="X.Org Foundation"
[ 15789.768] compiled for 1.20.4, module version = 1.0.0
[ 15789.768] ABI class: X.Org Server Extension, version 10.0
[ 15789.769] (==) Matched modesetting as autoconfigured driver 0
[ 15789.769] (==) Matched fbdev as autoconfigured driver 1
[ 15789.769] (==) Assigned the driver to the xf86ConfigLayout
[ 15789.769] (II) LoadModule: "modesetting"
[ 15789.770] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[ 15789.775] (II) Module modesetting: vendor="X.Org Foundation"
[ 15789.775] compiled for 1.20.4, module version = 1.20.4
[ 15789.775] Module class: X.Org Video Driver
[ 15789.775] ABI class: X.Org Video Driver, version 24.0
[ 15789.775] (II) LoadModule: "fbdev"
[ 15789.775] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[ 15789.777] (II) Module fbdev: vendor="X.Org Foundation"
[ 15789.778] compiled for 1.20.0, module version = 0.5.0
[ 15789.778] Module class: X.Org Video Driver
[ 15789.778] ABI class: X.Org Video Driver, version 24.0
[ 15789.778] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[ 15789.778] (II) FBDEV: driver for framebuffer: fbdev
[ 15789.827] (II) modeset(0): using drv /dev/dri/card0
[ 15789.828] (WW) Falling back to old probe method for fbdev
[ 15789.828] (II) Loading sub module "fbdevhw"
[ 15789.828] (II) LoadModule: "fbdevhw"
[ 15789.828] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[ 15789.832] (II) Module fbdevhw: vendor="X.Org Foundation"
[ 15789.832] compiled for 1.20.4, module version = 0.0.2
[ 15789.832] ABI class: X.Org Video Driver, version 24.0
[ 15789.833] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[ 15789.833] (II) modeset(0): Creating default Display subsection in Screen section
"Default Screen Section" for depth/fbbpp 24/32
[ 15789.833] (==) modeset(0): Depth 24, (==) framebuffer bpp 32
[ 15789.834] (==) modeset(0): RGB weight 888
[ 15789.834] (==) modeset(0): Default visual is TrueColor
[ 15789.834] (II) Loading sub module "glamoregl"
[ 15789.834] (II) LoadModule: "glamoregl"
[ 15789.834] (II) Loading /usr/lib/xorg/modules/libglamoregl.so
[ 15789.887] (II) Module glamoregl: vendor="X.Org Foundation"
[ 15789.888] compiled for 1.20.4, module version = 1.0.1
[ 15789.888] ABI class: X.Org ANSI C Emulation, version 0.4
[ 15791.418] (II) modeset(0): Refusing to try glamor on llvmpipe
[ 15791.438] (EE) modeset(0): glamor initialization failed
[ 15791.438] (II) modeset(0): ShadowFB: preferred NO, enabled NO
[ 15791.550] (II) modeset(0): Output HDMI-1 has no monitor section
[ 15791.661] (II) modeset(0): EDID for output HDMI-1
[ 15791.661] (II) modeset(0): Manufacturer: LLP  Model: 7  Serial#: 2
[ 15791.661] (II) modeset(0): Year: 2017  Week: 27
[ 15791.662] (II) modeset(0): EDID Version: 1.3
[ 15791.662] (II) modeset(0): Digital Display Input
[ 15791.662] (II) modeset(0): Max Image Size [cm]: horiz.: 17  vert.: 11
[ 15791.662] (II) modeset(0): Gamma: 2.20
[ 15791.662] (II) modeset(0): DPMS capabilities: StandBy
[ 15791.662] (II) modeset(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4
[ 15791.662] (II) modeset(0): First detailed timing is preferred mode
[ 15791.662] (II) modeset(0): redX: 0.652 redY: 0.334   greenX: 0.307 greenY: 0.637
[ 15791.662] (II) modeset(0): blueX: 0.150 blueY: 0.060   whiteX: 0.313 whiteY: 0.329
[ 15791.662] (II) modeset(0): Supported established timings:
[ 15791.662] (II) modeset(0): 640x480@60Hz
[ 15791.662] (II) modeset(0): 800x600@60Hz
[ 15791.662] (II) modeset(0): 1024x768@60Hz
[ 15791.662] (II) modeset(0): Manufacturer's mask: 0
[ 15791.662] (II) modeset(0): Supported standard timings:
[ 15791.662] (II) modeset(0): #0: hsize: 2048  vsize 1152  refresh: 60  vid: 49377
[ 15791.662] (II) modeset(0): #1: hsize: 1400  vsize 1050  refresh: 60  vid: 16528
[ 15791.663] (II) modeset(0): #2: hsize: 1152  vsize 864  refresh: 60  vid: 16497
[ 15791.663] (II) modeset(0): #3: hsize: 1680  vsize 1050  refresh: 60  vid: 179
[ 15791.663] (II) modeset(0): #4: hsize: 1600  vsize 1200  refresh: 60  vid: 16553
[ 15791.663] (II) modeset(0): #5: hsize: 1600  vsize 900  refresh: 60  vid: 49321
[ 15791.663] (II) modeset(0): #6: hsize: 1280  vsize 800  refresh: 60  vid: 129
[ 15791.663] (II) modeset(0): #7: hsize: 1280  vsize 960  refresh: 60  vid: 16513
[ 15791.663] (II) modeset(0): Supported detailed timing:
[ 15791.663] (II) modeset(0): clock: 148.5 MHz   Image Size:  170 x 110 mm
[ 15791.664] (II) modeset(0): h_active: 1920  h_sync: 2008  h_sync_end 2052 h_blank_end 2200 h_border: 0
[ 15791.664] (II) modeset(0): v_active: 1080  v_sync: 1084  v_sync_end 1089 v_blanking: 1125 v_border: 0
[ 15791.664] (II) modeset(0): Supported detailed timing:
[ 15791.664] (II) modeset(0): clock: 193.2 MHz   Image Size:  170 x 110 mm
[ 15791.664] (II) modeset(0): h_active: 1920  h_sync: 2056  h_sync_end 2256 h_blank_end 2592 h_border: 0
[ 15791.664] (II) modeset(0): v_active: 1200  v_sync: 1203  v_sync_end 1209 v_blanking: 1245 v_border: 0
[ 15791.664] (II) modeset(0): Monitor name: Monitor
[ 15791.664] (II) modeset(0): Ranges: V min: 24 V max: 76 Hz, H min: 30 H max: 81 kHz, PixClock max 305 MHz
[ 15791.664] (II) modeset(0): Supported detailed timing:
[ 15791.664] (II) modeset(0): clock: 27.0 MHz   Image Size:  708 x 398 mm
[ 15791.664] (II) modeset(0): h_active: 720  h_sync: 736  h_sync_end 798 h_blank_end 858 h_border: 0
[ 15791.664] (II) modeset(0): v_active: 480  v_sync: 489  v_sync_end 495 v_blanking: 525 v_border: 0
[ 15791.665] (II) modeset(0): Supported detailed timing:
[ 15791.665] (II) modeset(0): clock: 27.0 MHz   Image Size:  708 x 398 mm
[ 15791.665] (II) modeset(0): h_active: 720  h_sync: 732  h_sync_end 796 h_blank_end 864 h_border: 0
[ 15791.665] (II) modeset(0): v_active: 576  v_sync: 581  v_sync_end 586 v_blanking: 625 v_border: 0
[ 15791.665] (II) modeset(0): Supported detailed timing:
[ 15791.665] (II) modeset(0): clock: 74.2 MHz   Image Size:  708 x 398 mm
[ 15791.665] (II) modeset(0): h_active: 1280  h_sync: 1720  h_sync_end 1760 h_blank_end 1980 h_border: 0
[ 15791.665] (II) modeset(0): v_active: 720  v_sync: 725  v_sync_end 730 v_blanking: 750 v_border: 0
[ 15791.665] (II) modeset(0): Supported detailed timing:
[ 15791.665] (II) modeset(0): clock: 74.2 MHz   Image Size:  708 x 398 mm
[ 15791.665] (II) modeset(0): h_active: 1920  h_sync: 2448  h_sync_end 2492 h_blank_end 2640 h_border: 0
[ 15791.665] (II) modeset(0): v_active: 540  v_sync: 542  v_sync_end 547 v_blanking: 562 v_border: 0
[ 15791.665] (II) modeset(0): Number of EDID sections to follow: 1
[ 15791.665] (II) modeset(0): EDID (in hex):
[ 15791.665] (II) modeset(0): 00ffffffffffff003190070002000000
[ 15791.666] (II) modeset(0): 1b1b010380110b788a2895a7554ea326
[ 15791.666] (II) modeset(0): 0f5054210800e1c090407140b300a940
[ 15791.666] (II) modeset(0): a9c081008140023a801871382d40582c
[ 15791.666] (II) modeset(0): 4500aa6e0000001e7d4b80a072b02d40
[ 15791.666] (II) modeset(0): 88c83600aa6e0000001e000000fc004d
[ 15791.666] (II) modeset(0): 6f6e69746f720a2020202020000000fd
[ 15791.666] (II) modeset(0): 00184c1e511e000000000000000001b6
[ 15791.666] (II) modeset(0): 020330c24d010304050790121314169f
[ 15791.666] (II) modeset(0): 2022260907070700008301000072030c
[ 15791.666] (II) modeset(0): 001000b84420c0840102030401410000
[ 15791.666] (II) modeset(0): 8c0ad08a20e02d10103e9600c48e2100
[ 15791.666] (II) modeset(0): 00188c0ad090204031200c405500c48e
[ 15791.666] (II) modeset(0): 21000018011d00bc52d01e20b8285540
[ 15791.666] (II) modeset(0): c48e2100001e011d80d0721c1620102c
[ 15791.667] (II) modeset(0): 2580c48e2100009e0000000000000010
[ 15791.667] (--) modeset(0): HDMI max TMDS frequency 340000KHz
[ 15791.667] (II) modeset(0): Printing probed modes for output HDMI-1
[ 15791.667] (II) modeset(0): Modeline "1920x1080"x60.0  148.50  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync (67.5 kHz eP)
[ 15791.667] (II) modeset(0): Modeline "4096x2160"x24.0  297.00  4096 5116 5204 5500  2160 2168 2178 2250 +hsync +vsync (54.0 kHz e)
[ 15791.667] (II) modeset(0): Modeline "4096x2160"x24.0  296.70  4096 5116 5204 5500  2160 2168 2178 2250 +hsync +vsync (53.9 kHz e)
[ 15791.667] (II) modeset(0): Modeline "3840x2160"x30.0  297.00  3840 4016 4104 4400  2160 2168 2178 2250 +hsync +vsync (67.5 kHz e)
[ 15791.668] (II) modeset(0): Modeline "3840x2160"x25.0  297.00  3840 4896 4984 5280  2160 2168 2178 2250 +hsync +vsync (56.2 kHz e)
[ 15791.668] (II) modeset(0): Modeline "3840x2160"x24.0  297.00  3840 5116 5204 5500  2160 2168 2178 2250 +hsync +vsync (54.0 kHz e)
[ 15791.668] (II) modeset(0): Modeline "3840x2160"x30.0  296.70  3840 4016 4104 4400  2160 2168 2178 2250 +hsync +vsync (67.4 kHz e)
[ 15791.668] (II) modeset(0): Modeline "3840x2160"x24.0  296.70  3840 5116 5204 5500  2160 2168 2178 2250 +hsync +vsync (53.9 kHz e)
[ 15791.668] (II) modeset(0): Modeline "2048x1152"x60.0  162.00  2048 2074 2154 2250  1152 1153 1156 1200 +hsync +vsync (72.0 kHz e)
[ 15791.668] (II) modeset(0): Modeline "1920x1200"x59.9  193.25  1920 2056 2256 2592  1200 1203 1209 1245 +hsync +vsync (74.6 kHz e)
[ 15791.668] (II) modeset(0): Modeline "1920x1080"x50.0  148.50  1920 2448 2492 2640  1080 1084 1089 1125 +hsync +vsync (56.2 kHz e)
[ 15791.668] (II) modeset(0): Modeline "1920x1080"x59.9  148.35  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync (67.4 kHz e)
[ 15791.668] (II) modeset(0): Modeline "1920x1080i"x60.0   74.25  1920 2008 2052 2200  1080 1084 1094 1125 interlace +hsync +vsync (33.8 kHz e)
[ 15791.668] (II) modeset(0): Modeline "1920x1080i"x50.0   74.25  1920 2448 2492 2640  1080 1084 1094 1125 interlace +hsync +vsync (28.1 kHz e)
[ 15791.668] (II) modeset(0): Modeline "1920x1080"x30.0   74.25  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync (33.8 kHz e)
[ 15791.669] (II) modeset(0): Modeline "1920x1080"x24.0   74.25  1920 2558 2602 2750  1080 1084 1089 1125 +hsync +vsync (27.0 kHz e)
[ 15791.669] (II) modeset(0): Modeline "1920x1080i"x59.9   74.18  1920 2008 2052 2200  1080 1084 1094 1125 interlace +hsync +vsync (33.7 kHz e)
[ 15791.669] (II) modeset(0): Modeline "1920x1080"x30.0   74.18  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync (33.7 kHz e)
[ 15791.669] (II) modeset(0): Modeline "1920x1080"x24.0   74.18  1920 2558 2602 2750  1080 1084 1089 1125 +hsync +vsync (27.0 kHz e)
[ 15791.669] (II) modeset(0): Modeline "1600x1200"x60.0  162.00  1600 1664 1856 2160  1200 1201 1204 1250 +hsync +vsync (75.0 kHz e)
[ 15791.669] (II) modeset(0): Modeline "1680x1050"x59.9  119.00  1680 1728 1760 1840  1050 1053 1059 1080 +hsync -vsync (64.7 kHz e)
[ 15791.669] (II) modeset(0): Modeline "1400x1050"x59.9  101.00  1400 1448 1480 1560  1050 1053 1057 1080 +hsync -vsync (64.7 kHz e)
[ 15791.669] (II) modeset(0): Modeline "1600x900"x60.0  108.00  1600 1624 1704 1800  900 901 904 1000 +hsync +vsync (60.0 kHz e)
[ 15791.669] (II) modeset(0): Modeline "1280x960"x60.0  108.00  1280 1376 1488 1800  960 961 964 1000 +hsync +vsync (60.0 kHz e)
[ 15791.669] (II) modeset(0): Modeline "1280x800"x59.9   71.00  1280 1328 1360 1440  800 803 809 823 +hsync -vsync (49.3 kHz e)
[ 15791.669] (II) modeset(0): Modeline "1152x864"x60.0   81.58  1152 1216 1336 1520  864 865 868 895 -hsync +vsync (53.7 kHz)
[ 15791.669] (II) modeset(0): Modeline "1280x720"x60.0   74.25  1280 1390 1430 1650  720 725 730 750 +hsync +vsync (45.0 kHz e)
[ 15791.670] (II) modeset(0): Modeline "1280x720"x50.0   74.25  1280 1720 1760 1980  720 725 730 750 +hsync +vsync (37.5 kHz e)
[ 15791.670] (II) modeset(0): Modeline "1280x720"x59.9   74.18  1280 1390 1430 1650  720 725 730 750 +hsync +vsync (45.0 kHz e)
[ 15791.670] (II) modeset(0): Modeline "1024x768"x60.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e)
[ 15791.670] (II) modeset(0): Modeline "800x600"x60.3   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz e)
[ 15791.670] (II) modeset(0): Modeline "720x576"x50.0   27.00  720 732 796 864  576 581 586 625 -hsync -vsync (31.2 kHz e)
[ 15791.670] (II) modeset(0): Modeline "720x480"x60.0   27.03  720 736 798 858  480 489 495 525 -hsync -vsync (31.5 kHz e)
[ 15791.670] (II) modeset(0): Modeline "720x480"x59.9   27.00  720 736 798 858  480 489 495 525 -hsync -vsync (31.5 kHz e)
[ 15791.670] (II) modeset(0): Modeline "640x480"x60.0   25.20  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz e)
[ 15791.670] (II) modeset(0): Modeline "640x480"x59.9   25.18  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz e)
[ 15791.670] (II) modeset(0): Output HDMI-1 connected
[ 15791.670] (II) modeset(0): Using exact sizes for initial modes
[ 15791.670] (II) modeset(0): Output HDMI-1 using initial mode 1920x1080 +0+0
[ 15791.670] (==) modeset(0): Using gamma correction (1.0, 1.0, 1.0)
[ 15791.671] (==) modeset(0): DPI set to (96, 96)
[ 15791.671] (II) Loading sub module "fb"
[ 15791.671] (II) LoadModule: "fb"
[ 15791.672] (II) Loading /usr/lib/xorg/modules/libfb.so
[ 15791.678] (II) Module fb: vendor="X.Org Foundation"
[ 15791.678] compiled for 1.20.4, module version = 1.0.0
[ 15791.678] ABI class: X.Org ANSI C Emulation, version 0.4
[ 15791.678] (II) UnloadModule: "fbdev"
[ 15791.678] (II) Unloading fbdev
[ 15791.678] (II) UnloadSubModule: "fbdevhw"
[ 15791.679] (II) Unloading fbdevhw
[ 15791.679] (EE)
Fatal server error:
[ 15791.679] (EE) AddScreen/ScreenInit failed for driver 0
[ 15791.679] (EE)
[ 15791.680] (EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
 for help.
[ 15791.680] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[ 15791.680] (EE)
[ 15791.778] (EE) Server terminated with error (1). Closing log file.


UPD:
Пока удалось вывести видео через HDMI с помощью вывода напрямую в /dev/fb0: ffmpeg -hwaccel vdpau -i <путь_к_файлу_видео> -pix_fmt bgra -f fbdev /dev/fb0
Однако, скорость стала ниже (0.6x вместо 1.1x) - скорее всего, это из-за программного преобразования каждого кадра видео yuv420p -> bgra (только такое пространство поддерживается для вывода)

UPD 2:
Удалось написать код, который использует библиотеки ffmpeg для вывода видео в fbdev (раскодируемого через VDPAU от uboborov).
По-прежнему актуальна проблема с производительностью.
« Последнее редактирование: Июнь 15, 2020, 11:11:31 pm от storyboardcreativity »

Оффлайн ubobrov

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #63 : Июнь 18, 2020, 11:47:36 am »
Я не использовал fbdev напрямую для вывода изображения.
Моё ядро 4.20.17 с включенными опциями:
 
 CONFIG_SUN8I_DE2_CCU=y
   DRM_SUN8I_DW_HDMI=y
ядро стартует с параметрами:
console=ttyS0,115200 console=tty1 hdmi.audio=EDID:0 disp.screen0_output_mode=1900x1600p60 root=/dev/mmcblk0p1 rootwait panic=10 consoleblank=0
В моём случае вывод на дисплей осуществляется через DRM.
В моём случае UI никуда не девается
С 4К я не работал, но думаю что памяти нехватает на устройстве, вот оно и падает.

Есть мысль написать standalone декодер на основе libvdpau-sunxi, но нет времени.

В файле sunxi_renderx11.c есть дефайн USE_MEASUREMENT. Можно измерять сколько длится преобразование в RGBA на NEON-е. Аппаратного преобразователя CSC в память, к сожалению, нет.
« Последнее редактирование: Июнь 18, 2020, 12:17:39 pm от ubobrov »

Оффлайн ZugDuk

Re: Аппаратный encoder h264 для Allwinner H3
« Ответ #64 : Июль 30, 2020, 03:56:27 pm »
На ubuntu xenial (ядро 3.4) норм работало fullhd 30 кадров и 720p 60 кадров. Если на новом debian возможно также, то выложите пожалуйста образ такого линукса.