Jump to content

Recommended Posts

Posted

Hello,

 

I had to encode lately some video files and I discovered that video encoding hardware acceleration seems to be broken.

 

gart@orangepi5:~$ uname -a 
Linux orangepi5 6.1.115-vendor-rk35xx #1 SMP Tue Jun  3 13:10:51 UTC 2025 aarch64 aarch64 aarch64 GNU/Linux
 

 

gart@orangepi5:~$ sudo dmesg | grep mpp_rkvenc
[   12.705174] mpp_rkvenc2 rkvenc-ccu: probing start
[   12.705179] mpp_rkvenc2 rkvenc-ccu: probing finish
[   13.267729] mpp_rkvenc2 fdbd0000.rkvenc-core: Adding to iommu group 10
[   13.267963] mpp_rkvenc2 fdbd0000.rkvenc-core: probing start
[   13.268179] mpp_rkvenc2 fdbd0000.rkvenc-core: Looking up venc-supply from device tree
[   13.268187] mpp_rkvenc2 fdbd0000.rkvenc-core: Looking up venc-supply property in node /rkvenc-core@fdbd0000 failed
[   13.268207] mpp_rkvenc2 fdbd0000.rkvenc-core: rockchip_init_read_margin: no regulator (venc) found: -19
[   13.268214] mpp_rkvenc2 fdbd0000.rkvenc-core: bin=0
[   13.268293] mpp_rkvenc2 fdbd0000.rkvenc-core: Failed to get leakage
[   13.268342] mpp_rkvenc2 fdbd0000.rkvenc-core: Looking up venc-supply from device tree
[   13.268350] mpp_rkvenc2 fdbd0000.rkvenc-core: Looking up venc-supply property in node /rkvenc-core@fdbd0000 failed
[   13.268367] mpp_rkvenc2 fdbd0000.rkvenc-core: error -ENODEV: _opp_set_regulators: no regulator (venc) found
[   13.268395] mpp_rkvenc2 fdbd0000.rkvenc-core: failed to set opp config
[   13.268401] mpp_rkvenc2 fdbd0000.rkvenc-core: failed to init opp info
[   13.268406] mpp_rkvenc2 fdbd0000.rkvenc-core: failed to init_opp_table
[   13.268453] mpp_rkvenc2 fdbd0000.rkvenc-core: attach ccu as core 0
[   13.268489] mpp_rkvenc2 fdbd0000.rkvenc-core: probing finish
[   13.268700] mpp_rkvenc2 fdbe0000.rkvenc-core: Adding to iommu group 11
[   13.268940] mpp_rkvenc2 fdbe0000.rkvenc-core: probing start
[   13.269126] mpp_rkvenc2 fdbe0000.rkvenc-core: Looking up venc-supply from device tree
[   13.269135] mpp_rkvenc2 fdbe0000.rkvenc-core: Looking up venc-supply property in node /rkvenc-core@fdbe0000 failed
[   13.269152] mpp_rkvenc2 fdbe0000.rkvenc-core: rockchip_init_read_margin: no regulator (venc) found: -19
[   13.269159] mpp_rkvenc2 fdbe0000.rkvenc-core: bin=0
[   13.269199] mpp_rkvenc2 fdbe0000.rkvenc-core: Failed to get leakage
[   13.269231] mpp_rkvenc2 fdbe0000.rkvenc-core: Looking up venc-supply from device tree
[   13.269238] mpp_rkvenc2 fdbe0000.rkvenc-core: Looking up venc-supply property in node /rkvenc-core@fdbe0000 failed
[   13.269253] mpp_rkvenc2 fdbe0000.rkvenc-core: error -ENODEV: _opp_set_regulators: no regulator (venc) found
[   13.269272] mpp_rkvenc2 fdbe0000.rkvenc-core: failed to set opp config
[   13.269278] mpp_rkvenc2 fdbe0000.rkvenc-core: failed to init opp info
[   13.269283] mpp_rkvenc2 fdbe0000.rkvenc-core: failed to init_opp_table
[   13.269345] mpp_rkvenc2 fdbe0000.rkvenc-core: attach ccu as core 1
[   13.269379] mpp_rkvenc2 fdbe0000.rkvenc-core: probing finish
 

 

When I try to encode my files are fucked up and I have this in log :

 

gart@orangepi5:~$ sudo cat /var/log/syslog 

025-07-04T19:38:45.309928+02:00 orangepi5 mpp[3513]: mpp_serivce: mpp_service_ioc_attach_fd failed ret -1 errno 22 Invalid argument
2025-07-04T19:38:45.311485+02:00 orangepi5 kernel: rk_vcodec: mpp_process_request:1434: can not import fd 127
2025-07-04T19:38:45.311503+02:00 orangepi5 kernel: rk_vcodec: mpp_collect_msgs:1622: session 1 process cmd 401 ret -22
2025-07-04T19:38:45.311504+02:00 orangepi5 kernel: rk_vcodec: mpp_dev_ioctl:1732: collect msgs failed -22
2025-07-04T19:38:45.311505+02:00 orangepi5 kernel: rk_vcodec: mpp_task_attach_fd:1841: can't import dma-buf 271
2025-07-04T19:38:45.311506+02:00 orangepi5 kernel: rk_vcodec: mpp_translate_reg_address:1897: reg[  0]: 0x0000010f fd 271 failed
2025-07-04T19:38:45.311507+02:00 orangepi5 kernel: rk_vcodec: mpp_task_dump_mem_region:2084: --- dump task 0 mem region ---
2025-07-04T19:38:45.311508+02:00 orangepi5 kernel: mpp_rkvenc2 fdbd0000.rkvenc-core: no memory region mapped
2025-07-04T19:38:45.311509+02:00 orangepi5 kernel: rk_vcodec: mpp_process_task_default:589: alloc_task failed.
2025-07-04T19:38:45.311510+02:00 orangepi5 kernel: rk_vcodec: mpp_process_request:1434: can not import fd 128
2025-07-04T19:38:45.311511+02:00 orangepi5 kernel: rk_vcodec: mpp_collect_msgs:1622: session 1 process cmd 401 ret -22
2025-07-04T19:38:45.311512+02:00 orangepi5 kernel: rk_vcodec: mpp_dev_ioctl:1732: collect msgs failed -22
2025-07-04T19:38:45.311513+02:00 orangepi5 kernel: rk_vcodec: mpp_task_attach_fd:1841: can't import dma-buf 273
2025-07-04T19:38:45.311515+02:00 orangepi5 kernel: rk_vcodec: mpp_translate_reg_address:1897: reg[  0]: 0x00000111 fd 273 failed
2025-07-04T19:38:45.311516+02:00 orangepi5 kernel: rk_vcodec: mpp_task_dump_mem_region:2084: --- dump task 0 mem region ---
2025-07-04T19:38:45.311517+02:00 orangepi5 kernel: mpp_rkvenc2 fdbd0000.rkvenc-core: no memory region mapped
2025-07-04T19:38:45.311518+02:00 orangepi5 kernel: rk_vcodec: mpp_process_task_default:589: alloc_task failed.
2025-07-04T19:38:45.311520+02:00 orangepi5 kernel: rkvenc2_wait_result:2340: session 0000000017eca1cc pending list is empty!
2025-07-04T19:38:45.311520+02:00 orangepi5 kernel: rk_vcodec: mpp_msgs_wait:1693: session 1 wait result ret -5
2025-07-04T19:38:45.311521+02:00 orangepi5 kernel: rkvenc2_wait_result:2340: session 0000000017eca1cc pending list is empty!
2025-07-04T19:38:45.311523+02:00 orangepi5 kernel: rk_vcodec: mpp_msgs_wait:1693: session 1 wait result ret -5
2025-07-04T19:38:45.351471+02:00 orangepi5 kernel: rk_vcodec: mpp_process_request:1434: can not import fd 133
2025-07-04T19:38:45.351492+02:00 orangepi5 kernel: rk_vcodec: mpp_collect_msgs:1622: session 1 process cmd 401 ret -22
2025-07-04T19:38:45.351494+02:00 orangepi5 kernel: rk_vcodec: mpp_dev_ioctl:1732: collect msgs failed -22
2025-07-04T19:38:45.351495+02:00 orangepi5 kernel: rk_vcodec: mpp_task_attach_fd:1841: can't import dma-buf 274
2025-07-04T19:38:45.351495+02:00 orangepi5 kernel: rk_vcodec: mpp_translate_reg_address:1897: reg[  0]: 0x00000112 fd 274 failed
2025-07-04T19:38:45.351497+02:00 orangepi5 kernel: rk_vcodec: mpp_task_dump_mem_region:2084: --- dump task 0 mem region ---
2025-07-04T19:38:45.351498+02:00 orangepi5 kernel: mpp_rkvenc2 fdbd0000.rkvenc-core: no memory region mapped
2025-07-04T19:38:45.351499+02:00 orangepi5 kernel: rk_vcodec: mpp_process_task_default:589: alloc_task failed.
2025-07-04T19:38:45.351500+02:00 orangepi5 kernel: rkvenc2_wait_result:2340: session 0000000017eca1cc pending list is empty!
2025-07-04T19:38:45.351501+02:00 orangepi5 kernel: rk_vcodec: mpp_msgs_wait:1693: session 1 wait result ret -5
2025-07-04T19:38:45.351502+02:00 orangepi5 kernel: rk_vcodec: mpp_process_request:1434: can not import fd 130
2025-07-04T19:38:45.351503+02:00 orangepi5 kernel: rk_vcodec: mpp_collect_msgs:1622: session 1 process cmd 401 ret -22
2025-07-04T19:38:45.351504+02:00 orangepi5 kernel: rk_vcodec: mpp_dev_ioctl:1732: collect msgs failed -22
2025-07-04T19:38:45.354822+02:00 orangepi5 kernel: rk_vcodec: mpp_task_attach_fd:1841: can't import dma-buf 270
2025-07-04T19:38:45.354845+02:00 orangepi5 kernel: rk_vcodec: mpp_translate_reg_address:1897: reg[  0]: 0x0000010e fd 270 failed
 

 

does anybody else has this behaviour ?

 

I'm sure to have use rkmpp encoding with ffmpeg before (a long time ago) probably before kernel 6.1, and that was working.

In my opinion, it's an issue with vendor kernel.

 

Let me know.

Regard

 

Posted

do you have correct permissions?

maybe run as root

 

on my rock3a content is fine but got

[Jul 4 20:19] warn_alloc: 19 callbacks suppressed
[  +0.000026] dec0:0:hevc_rkm: page allocation failure: order:5, mode:0x40dc0(GFP_KERNEL|__GFP_COMP|__GFP_ZERO), nodemask=(null),cpuset=user.slice,mems_allowed=0
[  +0.000115] CPU: 2 PID: 2339021 Comm: dec0:0:hevc_rkm Not tainted 6.1.115-vendor-rk35xx #1
[  +0.000011] Hardware name: Radxa ROCK3 Model A (DT)
[  +0.000011] Call trace:
[  +0.000008]  dump_backtrace+0xf0/0x12c
[  +0.000023]  show_stack+0x20/0x30
[  +0.000011]  dump_stack_lvl+0x7c/0xa0
[  +0.000016]  dump_stack+0x18/0x34
[  +0.000010]  warn_alloc+0xe0/0x17c
[  +0.000012]  __alloc_pages+0x524/0x854
[  +0.000010]  __kmalloc_large_node+0xb8/0x114
[  +0.000012]  __kmalloc+0x4c/0x100
[  +0.000009]  __regset_get+0x60/0xd8
[  +0.000013]  regset_get_alloc+0x1c/0x28
[  +0.000010]  elf_core_dump+0x500/0xbc8
[  +0.000011]  do_coredump+0xabc/0x100c
[  +0.000012]  get_signal+0x1b8/0x634
[  +0.000013]  do_notify_resume+0x194/0xda8
[  +0.000010]  el0_da+0x5c/0x70
[  +0.000012]  el0t_64_sync_handler+0xc0/0x13c
[  +0.000010]  el0t_64_sync+0x19c/0x1a0
[  +0.000013] Mem-Info:
[  +0.000010] active_anon:112109 inactive_anon:125820 isolated_anon:0
               active_file:31285 inactive_file:45270 isolated_file:0
               unevictable:0 dirty:2210 writeback:0
               slab_reclaimable:16665 slab_unreclaimable:16446
               mapped:15455 shmem:105 pagetables:1861
               sec_pagetables:510 bounce:0
               kernel_misc_reclaimable:0
               free:82604 free_pcp:125 free_cma:35560
[  +0.000022] Node 0 active_anon:448436kB inactive_anon:503280kB active_file:125140kB inactive_file:181080kB unevictable:0kB isolated(anon):0kB isolated(file):0kB mapped:61820kB dirty:8840kB writeback:0kB shmem:420kB writeback_tmp:0kB kernel_stack:4192kB pagetables:7444kB sec_pagetables:2040kB all_unreclaimable? no
[  +0.000017] DMA free:330416kB boost:14364kB min:19988kB low:21964kB high:23940kB reserved_highatomic:2048KB active_anon:448188kB inactive_anon:503568kB active_file:125312kB inactive_file:181216kB unevictable:0kB writepending:8840kB present:2095104kB managed:2014252kB mlocked:0kB bounce:0kB free_pcp:544kB local_pcp:0kB free_cma:142240kB
[  +0.000018] lowmem_reserve[]: 0 0 0 0
[  +0.000015] DMA: 20626*4kB (UMEHC) 16291*8kB (UMEHC) 4462*16kB (UMHC) 1263*32kB (UMHC) 92*64kB (MHC) 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 330528kB
[  +0.000049] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=1048576kB
[  +0.000010] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=32768kB
[  +0.000008] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
[  +0.000009] Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=64kB
[  +0.000008] 129311 total pagecache pages
[  +0.000007] 52636 pages in swap cache
[  +0.000006] Free swap  = 11240188kB
[  +0.000007] Total swap = 11792380kB
[  +0.000006] 523776 pages RAM
[  +0.000006] 0 pages HighMem/MovableOnly
[  +0.000006] 20213 pages reserved
[  +0.000007] 135168 pages cma reserved

 

command used

/usr/share/jellyfin-ffmpeg/ffmpeg -y -c:v hevc_rkmpp -i 2025-06-29_22-05_rec.ts -map v -c:v h264
_rkmpp -b:v 8000k -map 0:1 -c:a copy -t 300 dvbt2.h264.ts

 

Posted

Hi

 

The rights seems to be ok :

 

gart@orangepi5:~$ ls -la /dev/dma_heap
total 0
drwxr-xr-x  2 root root     100 Jan  1  1970 .
drwxr-xr-x 20 root root    3940 Jul  4 19:49 ..
crw-rw----  1 root video 251, 2 Jul  4 19:48 cma
crw-rw----  1 root video 251, 0 Jul  4 19:48 system
crw-rw-rw-  1 root video 251, 1 Jul  4 19:48 system-uncached

 

my user is in the video group


gart@orangepi5:~$ sudo cat /etc/group | grep video
video:x:44:gart
 

There should not be any issue

 

If I launch ffmpeg encoding with sudo, it does'nt work neither I still have this kind of messages in syslog :

 

2025-07-06T15:32:19.769702+02:00 orangepi5 kernel: rk_vcodec: mpp_collect_msgs:1622: session 1 process cmd 401 ret -22
2025-07-06T15:32:19.769706+02:00 orangepi5 kernel: rk_vcodec: mpp_dev_ioctl:1732: collect msgs failed -22
2025-07-06T15:32:19.769708+02:00 orangepi5 kernel: rk_vcodec: mpp_task_attach_fd:1841: can't import dma-buf 275
2025-07-06T15:32:19.769711+02:00 orangepi5 kernel: rk_vcodec: mpp_translate_reg_address:1897: reg[  0]: 0x00000113 fd 275 failed
2025-07-06T15:32:19.769713+02:00 orangepi5 kernel: rk_vcodec: mpp_task_dump_mem_region:2084: --- dump task 0 mem region ---
2025-07-06T15:32:19.769716+02:00 orangepi5 kernel: mpp_rkvenc2 fdbd0000.rkvenc-core: no memory region mapped
2025-07-06T15:32:19.769718+02:00 orangepi5 kernel: rk_vcodec: mpp_process_task_default:589: alloc_task failed.
2025-07-06T15:32:19.769721+02:00 orangepi5 kernel: rkvenc2_wait_result:2340: session 00000000b0422e29 pending list is empty!
2025-07-06T15:32:19.769724+02:00 orangepi5 kernel: rk_vcodec: mpp_msgs_wait:1693: session 1 wait result ret -5
2025-07-06T15:32:19.768265+02:00 orangepi5 mpp[3723]: message repeated 2 times: [ mpp_serivce: mpp_service_ioc_attach_fd failed ret -1 errno 22 Invalid argument]
2025-07-06T15:32:19.785062+02:00 orangepi5 mpp[3723]: mpp_serivce: mpp_service_ioc_attach_fd failed ret -1 errno 22 Invalid argument
2025-07-06T15:32:19.786302+02:00 orangepi5 kernel: rk_vcodec: mpp_process_request:1434: can not import fd 143
2025-07-06T15:32:19.786319+02:00 orangepi5 kernel: rk_vcodec: mpp_collect_msgs:1622: session 1 process cmd 401 ret -22
2025-07-06T15:32:19.786321+02:00 orangepi5 kernel: rk_vcodec: mpp_dev_ioctl:1732: collect msgs failed -22
2025-07-06T15:32:19.786322+02:00 orangepi5 kernel: rk_vcodec: mpp_task_attach_fd:1841: can't import dma-buf 274
2025-07-06T15:32:19.786323+02:00 orangepi5 kernel: rk_vcodec: mpp_translate_reg_address:1897: reg[  0]: 0x00000112 fd 274 failed
2025-07-06T15:32:19.786324+02:00 orangepi5 kernel: rk_vcodec: mpp_task_dump_mem_region:2084: --- dump task 0 mem region ---
2025-07-06T15:32:19.786324+02:00 orangepi5 kernel: mpp_rkvenc2 fdbd0000.rkvenc-core: no memory region mapped
2025-07-06T15:32:19.786325+02:00 orangepi5 kernel: rk_vcodec: mpp_process_task_default:589: alloc_task failed.
2025-07-06T15:32:19.786327+02:00 orangepi5 kernel: rkvenc2_wait_result:2340: session 00000000b0422e29 pending list is empty!

 

 

I lauch a simple file encoding from an AV1 file to x265

 

sudo ffmpeg -i file1.AV1.mkv -c:v hevc_rkmpp -c:a copy ~/Downloads/file1.x265.mkv

 

The result is a file that has a correct size, but is unreadable, black screen.

 

 

 

 

 

Posted

root@rock3a:/lan/tmp# ffmpeg -i file1.AV1.mkv -c:v hevc_rkmpp -c:a copy file1.x265.mkv
ffmpeg version 5.1.6-0+deb12u1 Copyright (c) 2000-2024 the FFmpeg developers
...

Unknown encoder 'hevc_rkmpp'
 

root@rock3a:/lan/tmp# /usr/share/jellyfin-ffmpeg/ffmpeg -i file1.AV1.mkv -c:v hevc_rkmpp -c:a copy file1.x265.mkv
ffmpeg version 7.0.2-Jellyfin Copyright (c) 2000-2024 the FFmpeg developers
...

[out#0/matroska @ 0xaaaaeff1e660] video:223157KiB audio:6460KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.220596%
frame=27421 fps=138 q=-0.0 Lsize=  230124KiB time=00:15:21.52 bitrate=2045.7kbits/s speed=4.64x    

video plays fine

 

You might have power issues, that is my thirst thought, as I had several issues with my rock3a when I used USB-C (so with default PD with 5V). Now 12V in and user on-board DC-DC to do proper feeding. OPi5 does not have this AFAIK from schematics. But is is a wild guess. Many other things can be wrong, like who knows something with iommu (I guess not). I might try same command sometime later on my NanoPi-R6C when I will upgrade Armbian from Bookworm to Testing/Trixie, it also has RK3588S, same as OPi5, but check this, it is just top-of-my-head. I use mainline kernels mostly now, so need to tune grub or so first.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines