The hardware decoding support for H.264 in rk3399 is very strange

I checked the dts and kernel compilation configuration, and it seems that vpu and rkvdec have been enabled, as indicated by the kernel logs.

sudo dmesg | grep -E "vpu"
[   19.082561] hantro-vpu ff650000.video-codec: Adding to iommu group 0
[   19.083131] hantro-vpu ff650000.video-codec: registered rockchip,rk3399-vpu-enc as /dev/video1
[   19.083259] hantro-vpu ff650000.video-codec: registered rockchip,rk3399-vpu-dec as /dev/video2

But when using ffmpeg mpp, it behaves very strangely.

ffplay -vcodec h264_rkmpp_decoder ~/VID_20230227_163234.mp4
ffplay version n6.0 Copyright (c) 2003-2023 the FFmpeg developers
  built with gcc 12.1.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-opencl --enable-opengl --enable-shared --enable-version3 --enable-librist --disable-vulkan --enable-rkmpp --host-cflags='"-fPIC"'
  libavutil      58.  2.100 / 58.  2.100
  libavcodec     60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter     9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample   4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/test/VID_20230227_163234.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2023-02-27T08:32:43.000000Z
    com.android.version: 12
    com.android.manufacturer: Xiaomi
    com.android.model: M2012K11AC
  Duration: 00:00:07.47, start: 0.000000, bitrate: 49993 kb/s
  Stream #0:0[0x1](eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuvj420p(pc, bt470bg/bt470bg/smpte170m, progressive), 3840x2160, 50412 kb/s, 30.03 fps, 30.03 tbr, 90k tbn (default)
    Metadata:
      creation_time   : 2023-02-27T08:32:43.000000Z
      handler_name    : VideoHandle
      vendor_id       : [0][0][0][0]
    Side data:
      displaymatrix: rotation of -90.00 degrees
  Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 320 kb/s (default)
    Metadata:
      creation_time   : 2023-02-27T08:32:43.000000Z
      handler_name    : SoundHandle
      vendor_id       : [0][0][0][0]
[h264_rkmpp_decoder @ 0xffff94064730] Picture format is yuv420p.
[h264_rkmpp_decoder @ 0xffff94064730] Failed to initialize MPP context (code = -1).
[h264_rkmpp_decoder @ 0xffff94064730] Failed to initialize RKMPP Codec.
   3.43 M-A: -0.000 fd=   0 aq=   39KB vq=    0KB sq=    0B f=0/0 
10月 21 12:50:06 ARM mpp[72596]: vcodec_service: open vcodec_service (null) failed
10月 21 12:50:06 ARM mpp[72596]: hal_h264d_api: mpp_dev_init failed ret: -1
10月 21 12:50:06 ARM mpp[72596]: mpp_hal: mpp_hal_init hal h264d_rkdec init failed ret -1
10月 21 12:50:06 ARM mpp[72596]: mpp_hal: mpp_hal_init could not found coding type 7
10月 21 12:50:06 ARM mpp[72596]: mpp_dec: mpp_dec_init could not init hal
10月 21 12:50:06 ARM mpp[72596]: mpp_time: mpp_clock_put invalid clock (nil)
10月 21 12:50:06 ARM mpp[72596]: mpp_time: mpp_clock_put invalid clock (nil)
10月 21 12:50:06 ARM mpp[72596]: mpp_time: mpp_clock_put invalid clock (nil)
10月 21 12:50:06 ARM mpp[72596]: mpp_time: mpp_clock_put invalid clock (nil)
10月 21 12:50:06 ARM mpp[72596]: mpp_time: mpp_clock_put invalid clock (nil)
10月 21 12:50:06 ARM mpp[72596]: mpp_time: mpp_clock_put invalid clock (nil)
10月 21 12:50:06 ARM mpp[72596]: mpp_time: mpp_clock_put invalid clock (nil)
10月 21 12:50:06 ARM mpp[72596]: mpp_time: mpp_clock_put invalid clock (nil)
10月 21 12:50:06 ARM mpp[72596]: mpp_time: mpp_clock_put invalid clock (nil)
10月 21 12:50:06 ARM mpp[72596]: mpp_time: mpp_clock_put invalid clock (nil)
10月 21 12:50:06 ARM mpp[72596]: mpp_time: mpp_clock_put invalid clock (nil)
10月 21 12:50:06 ARM mpp[72596]: mpp: error found on mpp initialization
10月 21 12:50:10 ARM ffplay[72596]: mpp_mem_pool: put_pool found 4 used buffer size 224

Does MPP use a hard coded decoder path /dev/vpuservice?