HW x264 decoding In Firefox 116

I am thinking from what I read is 116 was modified for the rpi4 64bit and have not seen any other device mentioned.

I’ve tried with rk3566 and think vpu use works because 720p youtube used 75% CPU before and now is 50%. A better trial would be with 1080p but this option has dissapeared from first Firefox lunch.

I have seen lower resolutions here also. It must be throttled according to ones internet speed now. My only choices now are 360p 240p and 144p with my crappy DSL.

I noticed that you have to deceive YouTube with extensions like User-Agent Switcher and Manager with x86_64 to have all the resolutions.

1 Like

firefox 118.0 is now in the ARCH repo. If you want to test it:

sudo pacman -U http://fl.us.mirror.archlinuxarm.org/aarch64/extra/firefox-118.0-1-aarch64.pkg.tar.xz

118 freeze sometime, anyone?

No problems here so far with xfce. It may not make any diff but using my own compiled 118 version.

After installing ffmpeg-rk, I obtained the PKGBUILD of mpv from the archlinux repository instead of the archlinuxarm repository (What happened that I couldn’t download the PKGBUILD from archlinuxarm?). After compiling and installing, I tried to play the video using mpv --hwdec=v4l2m2m-copy --hwdec-codecs=all ~/VID_20230227_163234.mp4, but only got the following error. It seems that an ffmpeg suitable for RK3399 is needed, and does Firefox also need to be recompiled? Is there a usable PKGBUILD?
However, I found this ffmpeg, which seems to allow hardware encoding/decoding to work for RK3399.

mpv --hwdec=v4l2m2m-copy --hwdec-codecs=all ~/VID_20230227_163234.mp4
 (+) Video --vid=1 (*) (h264 3840x2160 30.030fps)
 (+) Audio --aid=1 --alang=eng (*) (aac 2ch 48000Hz)
[ffmpeg/video] h264_v4l2m2m: Could not find a valid device
[ffmpeg/video] h264_v4l2m2m: can't configure decoder
Could not open codec.
AO: [pipewire] 48000Hz stereo 2ch floatp
VO: [gpu] 3840x2160 yuv420p
AV: 00:00:01 / 00:00:07 (15%) A-V:  0.418 Dropped: 18

Audio/Video desynchronisation detected! Possible reasons include too slow
hardware, temporary CPU spikes, broken drivers, and broken files. Audio
position will not match to the video (see A-V status field).

AV: 00:00:02 / 00:00:07 (35%) A-V:  1.095 Dropped: 39

Exiting... (Quit)

did you try ffmpeg-mpp?

No. Firefox uses the installed ffmpeg. However when it checks when loading up it will use the highest version installed if you have more than one ffmpeg version installed.

Does it mean ffmpeg-rk? It’s not much use, mpv reported a similar error.

So, is there an adapted FFmpeg PKGBUILD for RK3399?

It means firefox does not compile with a specific ffmpeg at compile time like vlc, mpv etc… It looks for ffmpeg when it starts up and defaults to using what ever ffmpeg version that is installed on your system and if you have multiple ffmpeg packages installed then it will use the highest version.

No. He means ffmpeg-mpp.

https://aur.archlinux.org/packages/ffmpeg-mpp

 mpv --hwdec=v4l2m2m-copy --hwdec-codecs=all /home/daiaji/摌青/VID_20230227_163234.mp4
 (+) Video --vid=1 (*) (h264 3840x2160 30.030fps)
 (+) Audio --aid=1 --alang=eng (*) (aac 2ch 48000Hz)
[vo/gpu/drm] VT_GETMODE failed: Inappropriate ioctl for device
[vo/gpu/drm] Failed to set up VT switcher. Terminal switching will be unavailable.
[vo/gpu/drm] No connected connectors found
[vo/gpu-next/drm] Can't handle VT release - signal already used
[vo/gpu-next/drm] Failed to set up VT switcher. Terminal switching will be unavailable.
[vo/gpu-next/drm] No connected connectors found
Error opening/initializing the selected video_out (--vo) device.
Video: no video

Exiting... (Errors when loading file)

Try this:

 mpv --hwdec=auto /home/daiaji/摌青/VID_20230227_163234.mp4
mpv --hwdec=auto /home/daiaji/摌青/VID_20230227_163234.mp4
 (+) Video --vid=1 (*) (h264 3840x2160 30.030fps)
 (+) Audio --aid=1 --alang=eng (*) (aac 2ch 48000Hz)
[vo/gpu/drm] VT_GETMODE failed: Inappropriate ioctl for device
[vo/gpu/drm] Failed to set up VT switcher. Terminal switching will be unavailable.
[vo/gpu/drm] No connected connectors found
[vo/gpu-next/drm] Can't handle VT release - signal already used
[vo/gpu-next/drm] Failed to set up VT switcher. Terminal switching will be unavailable.
[vo/gpu-next/drm] No connected connectors found
Error opening/initializing the selected video_out (--vo) device.
Video: no video

Exiting... (Errors when loading file)

I have tried flatpack clapper based on gstreamer and have got a 20% of CPU usage for rk3566 and 1080p Big Buck Bunny while mpv use almost 100% .

I have tried with gnome-web also based on gstreamer but CPU usage is like in firefox, 75%.

I am out of ideas as I do not have or am familiar with that device.

try, mpv --vo=gpu --hwdec=rkmpp --gpu-api=opengl-es (–gpu-context=drm|x11|waylandvk)

ffmpeg -decoders | grep "rkmpp"
ffmpeg version n6.0 Copyright (c) 2000-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
 V..... av1_rkmpp_decoder    av1 (rkmpp decoder ) (codec av1)
 V..... h263_rkmpp_decoder   h263 (rkmpp decoder ) (codec h263)
 V..... h264_rkmpp_decoder   h264 (rkmpp decoder ) (codec h264)
 V..... hevc_rkmpp_decoder   hevc (rkmpp decoder ) (codec hevc)
 V..... mpeg1_rkmpp_decoder  mpeg1 (rkmpp decoder ) (codec mpeg1video)
 V..... mpeg2_rkmpp_decoder  mpeg2 (rkmpp decoder ) (codec mpeg2video)
 V..... mpeg4_rkmpp_decoder  mpeg4 (rkmpp decoder ) (codec mpeg4)
 V..... vp8_rkmpp_decoder    vp8 (rkmpp decoder ) (codec vp8)
 V..... vp9_rkmpp_decoder    vp9 (rkmpp decoder ) (codec vp9)
ffplay -vcodec h264_rkmpp_decoder /home/daiaji/摌青/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/daiaji/摌青/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 @ 0xffff8c064750] Picture format is yuv420p.
[h264_rkmpp_decoder @ 0xffff8c064750] Failed to initialize MPP context (code = -1).
[h264_rkmpp_decoder @ 0xffff8c064750] Failed to initialize RKMPP Codec.
   2.14 M-A: -0.000 fd=   0 aq=   39KB vq=    0KB sq=    0B f=0/0

It seems that there is a malfunction

maybe panfrost driver issue, which kernel version?

uname -a
Linux ARM 6.5.3-1-MANJARO-ARM #1 SMP PREEMPT Fri Sep 15 12:28:28 UTC 2023 aarch64 GNU/Linux
sudo journalctl -k -b -p err..alert --no-pager
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: debugfs: File ':interrupt-controller@fee00000' in directory 'domains' already present!
9月 28 10:40:37 ARM kernel: OF: graph: no port node found in /i2c@ff3d0000/typec-portc@22
1月 18 16:50:25 ARM kernel: brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4356-sdio for chip BCM4356/2
1月 18 16:50:25 ARM kernel: brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2)
1月 18 16:50:25 ARM kernel: brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4356/2 wl0: Apr  9 2021 00:40:07 version 7.35.349.104 (775a9ab CY) FWID 01-64b609e0
1月 18 16:50:26 ARM kernel: Bluetooth: hci0: BCM: firmware Patch file not found, tried:
1月 18 16:50:26 ARM kernel: Bluetooth: hci0: BCM: 'brcm/BCM4356A2.friendlyarm,nanopc-t4.hcd'
1月 18 16:50:26 ARM kernel: Bluetooth: hci0: BCM: 'brcm/BCM4356A2.hcd'
1月 18 16:50:26 ARM kernel: Bluetooth: hci0: BCM: 'brcm/BCM.friendlyarm,nanopc-t4.hcd'
1月 18 16:50:26 ARM kernel: Bluetooth: hci0: BCM: 'brcm/BCM.hcd'
10月 05 18:19:49 ARM kernel: hdmi-audio-codec hdmi-audio-codec.4.auto: Only one simultaneous stream supported!
10月 05 18:19:49 ARM kernel: hdmi-audio-codec hdmi-audio-codec.4.auto: ASoC: error at snd_soc_dai_startup on i2s-hifi: -22