Can someone explain the purpose of the different kernels available in the Armbian repos and Armbian Github?
linux-image-legacy-media/bookworm 24.5.1 arm64
Armbian Linux legacy kernel image 5.10.110-legacy-media
linux-image-current-media/bookworm 24.5.1 arm64
Armbian Linux current kernel image 6.1.92-current-media
linux-image-current-rockchip64/bookworm 25.2.3 arm64
Armbian Linux current kernel image 6.12.19-current-rockchip64
The linux-image-legacy-media and linux-image-current-media kernels are on BSP kernel versions 5.10 and 6.1. But aren't suffixed with the vendor name, which is typically done for BSP kernels.
The linux-image-current-rockchip64 kernel is on a mainline version of 6.12.19. Why is it suffixed with rockchip64?
There are also kernels such as rk-6.1-rkr5 that are not in the repos, but can be built from https://github.com/armbian/linux-rockchip
These are on BSP kernel versions such as 5.10 and 6.1.
What is the purpose of the armbian-bsp packages such as armbian-bsp-cli-rock64-current and armbian-bsp-desktop-rock64-current? What are their differences?
Do any of these kernels support RGA/MPP Rockchip VPU hw acceleration?
The Jellyfin docs state,
6.12.19-current-rockchip64 is missing rga and mpp
root@rock64:~# uname -r
6.12.19-current-rockchip64
root@rock64:~# ls -l /dev | grep -E "mpp|rga|dri|dma_heap"
drwxr-xr-x 2 root root 80 Jan 1 1970 dma_heap
drwxr-xr-x 3 root root 120 Mar 21 10:59 dri
root@rock64:~# lsmod | grep rockchip
rockchip_vdec 77824 0
v4l2_vp9 20480 2 rockchip_vdec,hantro_vpu
v4l2_h264 16384 2 rockchip_vdec,hantro_vpu
rockchip_rga 20480 0
videobuf2_dma_contig 20480 2 rockchip_vdec,hantro_vpu
videobuf2_dma_sg 16384 1 rockchip_rga
v4l2_mem2mem 24576 3 rockchip_vdec,hantro_vpu,rockchip_rga
videobuf2_v4l2 20480 4 rockchip_vdec,hantro_vpu,rockchip_rga,v4l2_mem2mem
videodev 237568 5 rockchip_vdec,videobuf2_v4l2,hantro_vpu,rockchip_rga,v4l2_mem2mem
snd_soc_rockchip_spdif 12288 0
snd_soc_rockchip_i2s 24576 4
videobuf2_common 53248 8 rockchip_vdec,videobuf2_dma_contig,videobuf2_v4l2,hantro_vpu,rockchip_rga,videobuf2_dma_sg,v4l2_mem2mem,videobuf2_memops
mc 53248 6 rockchip_vdec,videodev,videobuf2_v4l2,hantro_vpu,videobuf2_common,v4l2_mem2mem
snd_soc_core 204800 7 snd_soc_spdif_tx,snd_soc_hdmi_codec,snd_soc_rockchip_spdif,snd_soc_rk3328,snd_soc_simple_card_utils,snd_soc_rockchip_i2s,snd_soc_simple_card
nvmem_rockchip_efuse 12288 0
rockchipdrm 180224 0
dw_hdmi_qp 20480 1 rockchipdrm
dw_mipi_dsi 16384 1 rockchipdrm
dw_hdmi 45056 2 dw_hdmi_i2s_audio,rockchipdrm
analogix_dp 40960 1 rockchipdrm
drm_display_helper 131072 4 rockchipdrm,dw_hdmi,analogix_dp,dw_hdmi_qp
I did get ffmpeg hw acceleration working using v4l2request from https://github.com/jernejsk/FFmpeg/tree/v4l2-request-n7.1 using the 6.12.19-current-rockchip64 kernel. But wanted to see if jellyfin-ffmpeg7 or https://github.com/nyanmisaka/ffmpeg-rockchip performed better.
v4l2request does 49 fps, software decoding does 60 fps, but uses 2.6x more cpu.
root@rock64:~/github/FFmpeg# ffmpeg -hwaccel v4l2request -i 1080p.264 -f null - -benchmark
ffmpeg version 904a851 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
configuration: --enable-v4l2-request --enable-libudev --enable-libdrm --enable-gnutls --prefix="$HOME/ffmpeg_build"
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.100 / 61. 19.100
libavformat 61. 7.100 / 61. 7.100
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 4.100 / 10. 4.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
Input #0, h264, from '/root/1080p.264':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: h264 (Main), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 59.94 tbr, 1200k tbn
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> wrapped_avframe (native))
Press [q] to stop, [?] for help
[h264 @ 0xaaaaf4be97b0] Using V4L2 media driver rkvdec (6.12.19) for S264
Output #0, null, to 'pipe:':
Metadata:
encoder : Lavf61.7.100
Stream #0:0: Video: wrapped_avframe, nv12(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 29.97 fps, 29.97 tbn
Metadata:
encoder : Lavc61.19.100 wrapped_avframe
[out#0/null @ 0xaaaaf4be7320] video:485KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown
frame= 1129 fps= 49 q=-0.0 Lsize=N/A time=00:00:37.67 bitrate=N/A speed=1.64x
bench: utime=21.094s stime=2.279s rtime=22.936s
bench: maxrss=72164KiB