Mpv-0.36 how to setup

Not sure what you are talking about. I never released my first build here with ffmpeg6. I wound up using @tartanpion PKGBUILD but changed it up slightly.

@Darksky,

Download your latest rpi-ffmpeg-files.tar and unpack with:

   jfl@jfl-gtkpro  /run/media/jfl/Elements/GT_KING_PRO/Downloads/rpi-ffmpeg-files_Darksky_20230828  cd /home/jfl/Downloads/rpi-ffmpeg-files_20230828/
 jfl@jfl-gtkpro  /Downloads/rpi-ffmpeg-files_20230828  tar -xvf '/home/jfl/Downloads/rpi-ffmpeg-files_20230828/rpi-ffmpeg-files.tar' 
rpi-ffmpeg-files/ffmpeg-rpi/add-av_stream_get_first_dts-for-chromium.patch
rpi-ffmpeg-files/ffmpeg-rpi/PKGBUILD
rpi-ffmpeg-files/vmaf/PKGBUILD
rpi-ffmpeg-files/svt-av1/PKGBUILD
rpi-ffmpeg-files/rpi-ffmpeg-6.0.r110069.gd2aa73557f-1-aarch64.pkg.tar.zst
rpi-ffmpeg-files/svt-av1-1.7.0-1-aarch64.pkg.tar.zst
rpi-ffmpeg-files/vmaf-2.3.1-1-aarch64.pkg.tar.zst
rpi-ffmpeg-files/ffmpeg-rpi/
rpi-ffmpeg-files/vmaf/
rpi-ffmpeg-files/svt-av1/
rpi-ffmpeg-files/
 jfl@jfl-gtkpro  /Downloads/rpi-ffmpeg-files_20230828 

Install the packages:

 jfl@jfl-gtkpro  /Downloads/rpi-ffmpeg-files_20230828  cd /home/jfl/Downloads/rpi-ffmpeg-files_20230828/rpi-ffmpeg-files/
 jfl@jfl-gtkpro  /Downloads/rpi-ffmpeg-files_20230828/rpi-ffmpeg-files  sudo pacman -U *.zst
[sudo] password for jfl: 
loading packages...
resolving dependencies...
looking for conflicting packages...
:: rpi-ffmpeg and ffmpeg are in conflict. Remove ffmpeg? [y/N] y

Packages (5) ffmpeg-2:6.0-8 [removal]  onevpl-2023.3.1-1
             rpi-ffmpeg-6.0.r110069.gd2aa73557f-1  svt-av1-1.7.0-1
             vmaf-2.3.1-1

Total Download Size:    0.75 MiB
Total Installed Size:  48.81 MiB
Net Upgrade Size:      15.94 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
 onevpl-2023.3.1-...   763.5 KiB   434 KiB/s 00:02 [######################] 100%
(4/4) checking keys in keyring                     [######################] 100%
(1/4) checking package integrity                   [######################] 100%
(1/4) loading package files                        [######################] 100%
(4/4) checking for file conflicts                  [######################] 100%
(5/5) checking available disk space                [######################] 100%
:: Processing package changes...
(1/1) removing ffmpeg                              [######################] 100%
(1/4) installing onevpl                            [######################] 100%
Optional dependencies for onevpl
    intel-media-sdk: runtime for legacy Intel GPUs
    onevpl-intel-gpu: runtime for Tiger Lake and newer GPUs
(2/4) installing svt-av1                           [######################] 100%
(3/4) installing vmaf                              [######################] 100%
(4/4) installing rpi-ffmpeg                        [######################] 100%
Optional dependencies for rpi-ffmpeg
    avisynthplus: for AviSynthPlus support
    ladspa: for LADSPA filters
    nvidia-utils: for Nvidia NVDEC/NVENC support
 jfl@jfl-gtkpro  /Downloads/rpi-ffmpeg-files_20230828/rpi-ffmpeg-files 

On my Manjaro-Arm-Gnome image, I had earlier installed ffmpeg-rpi-4.4.4-2 and mpv-1:0.36.0-3 (which depend on ffmpeg-4.4.4-2)…

Question: Do I need to remove mpv-1:0.36.0-3 and ffmpeg-rpi-4.4.4-2 and install the Unstable Repo mpv-1:0.36.0-1-aarch64.pkg.tar.xz?

yes Use the mpv in the repo. It is compiled for ffmpeg6. You can keep ffmpeg-rpi if you are using it for vlc.

Thanks for the info and great work and support.

Is there any particular settings need to set on Firefox to have v4l2m2m working?

 jfl@jfl-gtkpro    firefox
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found. (t=2.40638) [GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found.
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found. (t=2.40638) |[1][GFX1-]: vaapitest: ERROR (t=2.463) [GFX1-]: vaapitest: ERROR
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found. (t=2.40638) |[1][GFX1-]: vaapitest: ERROR (t=2.463) |[2][GFX1-]: vaapitest: VA-API test failed: failed to initialise VAAPI connection.
 (t=2.46308) [GFX1-]: vaapitest: VA-API test failed: failed to initialise VAAPI connection.

ATTENTION: default value of option mesa_glthread overridden by environment.
ATTENTION: default value of option mesa_glthread overridden by environment.

(firefox:1983): dconf-WARNING **: 01:54:04.628: unable to open file '/etc/dconf/db/local': /etc/dconf/db/local: invalid gvdb header; expect degraded performance

According to “about:support” No “HARDWARE_VIDEO_ACCELERATION” (Force disabled by gfxInfo)

With the following command line to start Firefox also the result:

QT_QPA_PLATFORM=wayland GDK_BACKEND=wayland MOZ_ENABLE_V4L2=1 MOZ_WAYLAND_USE_HWDECODE=1 MOZ_ACCELERATED=1 MOZ_ENABLE_WAYLAND=1 MOZ_WEBRENDER=1 firefox --private

The only way I could see v4l2m2m was working is start firefox in debug mode. I do not have the MOZ_ENABLE_V4L2=1 in the line. It does it’s own thing. I do not know about the wayland parameters. @Rip2 would know how he starts firefox in debug mode.

MOZ_GFX_DEBUG=1 MOZ_LOG="PlatformDecoderModule:5" firefox

Make sure Edit → Settings → General → Performance box is checked before starting firefox.

It is hard to see as lines go by fast but you should something like this:

[h264_v4l2m2m @ 0xffff8c582800] — output VIDIOC_QBUF: index 0, ts=0.000075 count=1
[h264_v4l2m2m @ 0xffff8c582800] capture: Buffer requeue
[Child 371492: MediaPDecoder #2]: V/PlatformDecoderModule AudioTrimmer[ffffa6171e60] ::PrepareTrimmers: sample[{244736,48000},{245760,48000}] no trimming information
[h264_v4l2m2m @ 0xffff8c582800] — capture VIDIOC_QBUF: index 7, ts=0.000067 count=9
[h264_v4l2m2m @ 0xffff8c582800] capture: Buffer requeue
[h264_v4l2m2m @ 0xffff8c582800] — capture VIDIOC_QBUF: index 17, ts=0.000068 count=10
[RDD 277600: MediaPDecoder #2]: D/PlatformDecoderModule FFMPEG: Frame decode finished, time 7.49 ms averange decode time 4.13 ms decoded 71 frames

 jfl@jfl-gtkpro    QT_QPA_PLATFORM=wayland GDK_BACKEND=wayland MOZ_ENABLE_V4L2=1 MOZ_WAYLAND_USE_HWDECODE=1 MOZ_ACCELERATED=1 MOZ_ENABLE_WAYLAND=1 MOZ_WEBRENDER=1 firefox --private

(firefox:3544): dconf-WARNING **: 02:16:15.631: unable to open file '/etc/dconf/db/local': /etc/dconf/db/local: invalid gvdb header; expect degraded performance
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found. (t=1.36779) [GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found.
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found. (t=1.36779) |[1][GFX1-]: vaapitest: ERROR (t=1.43006) [GFX1-]: vaapitest: ERROR
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found. (t=1.36779) |[1][GFX1-]: vaapitest: ERROR (t=1.43006) |[2][GFX1-]: vaapitest: VA-API test failed: failed to initialise VAAPI connection.
 (t=1.43014) [GFX1-]: vaapitest: VA-API test failed: failed to initialise VAAPI connection

“about:support” output:

Will try " MOZ_GFX_DEBUG=1 MOZ_LOG="PlatformDecoderModule:5" firefox" tomorrow. It is late now over here or early morning. Thanks.

It is mid day here in the US.

I see similar to your debug output at first start. the h264_v4l2m2m lines do not show up until you play a h264 video. Looking over my notes they said to have this enabled in about:config:

media.hardware-video-decoding.force-enabled

about:support

1

2

3

https://wiki.archlinux.org/title/Hardware_video_acceleration#Configuring_applications

https://wiki.archlinux.org/title/Firefox#Hardware_video_acceleration

I feel like common options keep being ignored, or gleefully ‘found’.

A number of things, including that last option, can be found above.

I might specifically point out MOZ_DRM_DEVICE in case it is also overlooked…
(ex: MOZ_DRM_DEVICE=/dev/dri/card0)

I do know that firefox 116 now searches all available video devices for v4l2 compliance when it starts up and it uses the correct one but not sure about the MOZ_DRM_DEVICE usage. The new v4l2m2m addition is for the pi4’s in 116 and @JFL does not have one. The v4l may or may not work for him and maybe he could probe all of his video devices for v4l and specify it on firefox startup. I just do not know. He has had good luck with h264/h265 with v4l2m2m using mpv. Firefox now has a v4l2test program to check the different available video devices but what to use on the commandline with the video device could be different. I have seen one post where using drm did not work where hwdec=auto would with mpv on the rpi.

[ray@jellyfin ~]$ /usr/lib/firefox/v4l2test -d /dev/video10
V4L2_SPLANE
FALSE
V4L2_MPLANE
TRUE
V4L2_CAPTURE_FMTS
 YU12 YV12 NV12 NV21 NC12 RGBP
V4L2_OUTPUT_FMTS
 H264 MJPG
V4L2_SUPPORTED
TRUE

Doesnt mean anything.
It just selects the first ‘working’ one … which translates to some actual option.
(‘working’ here used loosely … it can very well pick one first in list that appears to work … but ultimately fails … making auto output results that may confuse people into believing that no hw accel works)

Maybe the choices are limited with the rpi.

The culprit was mpv-git. Don’t know why.

So all good now?

Yes. And of course better performance in a TTY. I added hwdec=auto to my mpv’s config.

1 Like

I have it in mine also. I have not tried it in a tty yet; only kodi-rpi but it is broke right now; in some of the repos.

[ray@jellyfin ~]$ kodi
/usr/lib/kodi/kodi.bin: error while loading shared libraries: libfmt.so.9: cannot open shared object file: No such file or directory

@Darksky @cscs

On my image there is no /dev/video10 but /dev/video0 is available.

jfl@jfl-gtkpro    /usr/lib/firefox/v4l2test -d /dev/video0
V4L2_SPLANE
FALSE
V4L2_MPLANE
TRUE
V4L2_CAPTURE_FMTS
 NM12
V4L2_OUTPUT_FMTS
 VP90 HEVC H264 MPG1 MPG2
V4L2_SUPPORTED
TRUE

Differ slightly rpi4. It does indicate “V4L2_ SUPPORTED = TRUE”…

What does “V4L2_OUTPUT+FMTS” means. Does it mean VP90 HEVC H264 MPG1 MPG2 video format is supported?

media.hardware-video-decoding.force-enabled

This made no real difference.

MOZ_DRM_DEVICE=/dev/dri/card0

Also made no real difference. With MOZ_DRM_DEVICE=/dev/dri/card0 Firefox startup like invisible until you mouse click on it.

Based on Firefox and mpv-1:0.36.0-1 playing the same local “Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film [aqz-KE-bpKQ].mp4”, by comparison Firefox CPU resource usage is much higher than mpv.

My assumption is Firefox is not vpu hardware accelerated based on the CPU usage.

According to this Debian Package Tracker, chromium 116.0.5845.110-1~deb11u1 also have arm “v4l2” support.

With my limited knowledge with the new rpi HW for firefox I’m inclined to think that maybe your vpu may not be compatible yet. Here is my debug logs when firefox first starts up and when the video first starts playing. You can see both times all of my video devices gets probed for v4l and m2m and it picks /dev/video10.

At first startup debug log:

[ray@jellyfin]$ mpv --hwdec=auto jellyfish-40-mbps-hd-hevc-10bit.mkv
(+) Video --vid=1 (*) (hevc 1920x1080 29.970fps)
Using hardware decoding (drm).
VO: [gpu] 1920x1080 drm_prime[rpi4_10]
V: 00:00:25 / 00:00:30 (83%)

Exiting… (Quit)

[ray@jellyfin]$ mpv --hwdec=auto jellyfish-40-mbps-hd-h264.mkv
(+) Video --vid=1 (*) (h264 1920x1080 29.970fps)
Using hardware decoding (v4l2m2m).
VO: [gpu] 1920x1080 drm_prime[yuv420p]
V: 00:00:26 / 00:00:30 (90%)

At first startup debug log:

[ray@jellyfin Downloads]$ MOZ_GFX_DEBUG=1 MOZ_LOG=“PlatformDecoderModule:5” firefox
GLX_TEST: childgltest start
GLX_TEST: get_pci_status start
GLX_TEST: get_pci_status finished
GLX_TEST: x11_egltest start
GLX_TEST: get_egl_status start
GLX_TEST: get_egl_gl_status start
GLX_TEST: get_egl_gl_status finished
GLX_TEST: get_egl_status finished with return: 1
GLX_TEST: get_xrandr_info start
GLX_TEST: get_xrandr_info finished
GLX_TEST: x11_egltest finished
DRI_DRIVER
vc4
VENDOR
Broadcom
RENDERER
V3D 4.2
VERSION
OpenGL ES 3.1 Mesa 23.1.4
TFP
TRUE
WARNING
DRM render node not clearly detectable. Falling back to using the only one that was found.
DRM_RENDERDEVICE
/dev/dri/renderD128
MESA_VENDOR_ID
0x7250
MESA_DEVICE_ID
0xecfd
DDX_DRIVER
modesetting;
TEST_TYPE
EGL
GLX_TEST: childgltest finished
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found. (t=27.4605) [GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found.
vaapitest start, device /dev/dri/renderD128
vaInitialize failed -1
ERROR
VA-API test failed: failed to initialise VAAPI connection.
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found. (t=27.4605) |[1][GFX1-]: vaapitest: ERROR (t=27.521) [GFX1-]: vaapitest: ERROR
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: DRM render node not clearly detectable. Falling back to using the only one that was found. (t=27.4605) |[1][GFX1-]: vaapitest: ERROR (t=27.521) |[2][GFX1-]: vaapitest: VA-API test failed: failed to initialise VAAPI connection.
(t=27.5211) [GFX1-]: vaapitest: VA-API test failed: failed to initialise VAAPI connection.

v4l2test probing device ‘/dev/video31’
v4l2test driver bcm2835-codec card bcm2835-codec-encode_image bus_info platform:bcm2835-codec version 393519
V4L2_SPLANE
FALSE
V4L2_MPLANE
TRUE
V4L2_CAPTURE_FMTS
JPEG
V4L2_OUTPUT_FMTS
RGBP RGB3 BGR3 AB24 BGR4 YU12 YUYV YVYU VYUY UYVY
V4L2_SUPPORTED
TRUE
v4l2test probing device ‘/dev/video23’
v4l2test driver bcm2835-isp card bcm2835-isp bus_info platform:bcm2835-isp version 393519
ERROR
V4L2 device /dev/video23 does not support M2M modes
[GFX2-]: v4l2test: V4L2 device /dev/video23 does not support M2M modes

v4l2test probing device ‘/dev/video22’
v4l2test driver bcm2835-isp card bcm2835-isp bus_info platform:bcm2835-isp version 393519
ERROR
V4L2 device /dev/video22 does not support M2M modes
[GFX2-]: v4l2test: V4L2 device /dev/video22 does not support M2M modes

v4l2test probing device ‘/dev/video21’
v4l2test driver bcm2835-isp card bcm2835-isp bus_info platform:bcm2835-isp version 393519
ERROR
V4L2 device /dev/video21 does not support M2M modes
[GFX2-]: v4l2test: V4L2 device /dev/video21 does not support M2M modes

v4l2test probing device ‘/dev/video20’
v4l2test driver bcm2835-isp card bcm2835-isp bus_info platform:bcm2835-isp version 393519
ERROR
V4L2 device /dev/video20 does not support M2M modes
[GFX2-]: v4l2test: V4L2 device /dev/video20 does not support M2M modes

v4l2test probing device ‘/dev/video18’
v4l2test driver bcm2835-codec card bcm2835-codec-image_fx bus_info platform:bcm2835-codec version 393519
V4L2_SPLANE
FALSE
V4L2_MPLANE
TRUE
V4L2_CAPTURE_FMTS
YU12 NC12 AB24 RGBP
V4L2_OUTPUT_FMTS
YU12 NC12 AB24 RGBP
V4L2_SUPPORTED
TRUE
v4l2test probing device ‘/dev/video12’
v4l2test driver bcm2835-codec card bcm2835-codec-isp bus_info platform:bcm2835-codec version 393519
V4L2_SPLANE
FALSE
V4L2_MPLANE
TRUE
V4L2_CAPTURE_FMTS
YUYV YVYU VYUY UYVY YU12 YV12 RGB3 BGR3 AB24 BGR4 RGBP NC12 NV12 NV21
V4L2_OUTPUT_FMTS
BA81 RGGB GBRG GRBG pBAA pRAA pGAA pgAA pBCC pRCC pGCC pgCC pBEE pREE pGEE pgEE BYR2 RG16 GB16 GR16 GREY Y10P Y12P Y14P Y16 YUYV YVYU VYUY UYVY YU12 YV12 RGB3 BGR3 AB24 BGR4 RGBP NC12 NV12 NV21 BG10 RG10 GB10 BA10 BG12 RG12 GB12 BA12 BG14 RG14 GB14 GR14 Y10 Y12 Y14
V4L2_SUPPORTED
TRUE
v4l2test probing device ‘/dev/video11’
v4l2test driver bcm2835-codec card bcm2835-codec-encode bus_info platform:bcm2835-codec version 393519
V4L2_SPLANE
FALSE
V4L2_MPLANE
TRUE
V4L2_CAPTURE_FMTS
H264 MJPG
V4L2_OUTPUT_FMTS
YU12 YV12 NV12 NV21 RGBP RGB3 BGR3 AB24 BGR4 YUYV YVYU UYVY VYUY NC12
V4L2_SUPPORTED
TRUE
v4l2test probing device ‘/dev/video16’
v4l2test driver bcm2835-isp card bcm2835-isp bus_info platform:bcm2835-isp version 393519
ERROR
V4L2 device /dev/video16 does not support M2M modes
[GFX2-]: v4l2test: V4L2 device /dev/video16 does not support M2M modes

v4l2test probing device ‘/dev/video15’
v4l2test driver bcm2835-isp card bcm2835-isp bus_info platform:bcm2835-isp version 393519
ERROR
V4L2 device /dev/video15 does not support M2M modes
[GFX2-]: v4l2test: V4L2 device /dev/video15 does not support M2M modes

v4l2test probing device ‘/dev/video14’
v4l2test driver bcm2835-isp card bcm2835-isp bus_info platform:bcm2835-isp version 393519
ERROR
V4L2 device /dev/video14 does not support M2M modes
[GFX2-]: v4l2test: V4L2 device /dev/video14 does not support M2M modes

v4l2test probing device ‘/dev/video13’
v4l2test driver bcm2835-isp card bcm2835-isp bus_info platform:bcm2835-isp version 393519
ERROR
V4L2 device /dev/video13 does not support M2M modes
[GFX2-]: v4l2test: V4L2 device /dev/video13 does not support M2M modes

v4l2test probing device ‘/dev/video10’
v4l2test driver bcm2835-codec card bcm2835-codec-decode bus_info platform:bcm2835-codec version 393519
V4L2_SPLANE
FALSE
V4L2_MPLANE
TRUE
V4L2_CAPTURE_FMTS
** YU12 YV12 NV12 NV21 NC12 RGBP**
V4L2_OUTPUT_FMTS
** H264 MJPG**
V4L2_SUPPORTED
TRUE
v4l2test probing device ‘/dev/video19’
v4l2test driver rpivid card rpivid bus_info platform:rpivid version 393519
V4L2_SPLANE
FALSE
V4L2_MPLANE
TRUE
V4L2_CAPTURE_FMTS
NC12 NC30
V4L2_OUTPUT_FMTS
S265
V4L2_SUPPORTED
TRUE
ATTENTION: default value of option mesa_glthread overridden by environment.
ATTENTION: default value of option mesa_glthread overridden by environment.
ATTENTION: default value of option mesa_glthread overridden by environment.

Debug log at first start up of big bunny mp4:

[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video23
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video22
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video21
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video31
[h264_v4l2m2m @ 0xffff8c584400] driver ‘bcm2835-codec’ on card ‘bcm2835-codec-encode_image’ in mplane mode
[h264_v4l2m2m @ 0xffff8c584400] v4l2 output format not supported
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video20
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video18
[h264_v4l2m2m @ 0xffff8c584400] driver ‘bcm2835-codec’ on card ‘bcm2835-codec-image_fx’ in mplane mode
[h264_v4l2m2m @ 0xffff8c584400] v4l2 output format not supported
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video12
[h264_v4l2m2m @ 0xffff8c584400] driver ‘bcm2835-codec’ on card ‘bcm2835-codec-isp’ in mplane mode
[h264_v4l2m2m @ 0xffff8c584400] v4l2 output format not supported
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video16
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video15
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video14
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video11
[h264_v4l2m2m @ 0xffff8c584400] driver ‘bcm2835-codec’ on card ‘bcm2835-codec-encode’ in mplane mode
[h264_v4l2m2m @ 0xffff8c584400] v4l2 output format not supported
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video13
[h264_v4l2m2m @ 0xffff8c584400] probing device /dev/video10
[h264_v4l2m2m @ 0xffff8c584400] driver ‘bcm2835-codec’ on card ‘bcm2835-codec-decode’ in mplane mode
[h264_v4l2m2m @ 0xffff8c584400] Using device /dev/video10
[h264_v4l2m2m @ 0xffff8c584400] driver ‘bcm2835-codec’ on card ‘bcm2835-codec-decode’ in mplane mode
[h264_v4l2m2m @ 0xffff8c584400] requesting formats: output=H264/none capture=YU12/none
[h264_v4l2m2m @ 0xffff8c584400] output: H264 16 buffers initialized: 0000x0000, sizeimage 00524288, bytesperline 00000000
[h264_v4l2m2m @ 0xffff8c584400] Driver ‘bcm2835-codec’: Quirks=0
[h264_v4l2m2m @ 0xffff8c584400] check_profile: Control supported: 0x990a6b
[RDD 277600: MediaPDecoder #1]: D/PlatformDecoderModule FFMPEG: Choosing FFmpeg pixel format for V4L2 video decoding.
[RDD 277600: MediaPDecoder #1]: D/PlatformDecoderModule FFMPEG: Requesting pixel format DRM PRIME
[h264_v4l2m2m @ 0xffff8c584400] Format drm_prime chosen by get_format().
[h264_v4l2m2m @ 0xffff8c584400] avctx requested=-1 ((null)) 480x360; get_format requested=179 (drm_prime)
[RDD 277600: MediaPDecoder #1]: D/PlatformDecoderModule FFMPEG: V4L2 FFmpeg init successful
[Child 447580: RemVidChild]: D/PlatformDecoderModule RemoteMediaDataDecoder[ffff81a08c80] ::operator(): ffff81a08c80 RemoteDecoderChild has been initialized - description: ffmpeg video decoder (RDD remote), process: rdd, codec: h264
[RDD 277600: MediaPDecoder #1]: V/PlatformDecoderModule ProcessDecode: mDuration=33333µs ; mTime=0µs ; mTimecode=18446744073709518283µs
[h264_v4l2m2m @ 0xffff8c584400] output set status 1074026002 (ON) OK
[h264_v4l2m2m @ 0xffff8c584400] — output pre VIDIOC_QBUF: index 0, ts=0.000001 count=0
[h264_v4l2m2m @ 0xffff8c584400] — output VIDIOC_QBUF: index 0, ts=0.000001 count=1
[RDD 277600: MediaPDecoder #2]: V/PlatformDecoderModule ProcessDecode: mDuration=33333µs ; mTime=100000µs ; mTimecode=0µs
[h264_v4l2m2m @ 0xffff8c584400] — output pre VIDIOC_QBUF: index 1, ts=0.000002 count=1
[h264_v4l2m2m @ 0xffff8c584400] — output VIDIOC_QBUF: index 1, ts=0.000002 count=2
[RDD 277600: MediaPDecoder #1]: V/PlatformDecoderModule ProcessDecode: mDuration=33333µs ; mTime=33333µs ; mTimecode=33333µs
[h264_v4l2m2m @ 0xffff8c584400] — output pre VIDIOC_QBUF: index 0, ts=0.000003 count=0
[h264_v4l2m2m @ 0xffff8c584400] — output VIDIOC_QBUF: index 0, ts=0.000003 count=1
[RDD 277600: MediaPDecoder #1]: V/PlatformDecoderModule ProcessDecode: mDuration=33333µs ; mTime=66666µs ; mTimecode=66666µs
[h264_v4l2m2m @ 0xffff8c584400] — output pre VIDIOC_QBUF: index 0, ts=0.000004 count=0
[h264_v4l2m2m @ 0xffff8c584400] — output VIDIOC_QBUF: index 0, ts=0.000004 count=1
[h264_v4l2m2m @ 0xffff8c584400] Dq event 5
[h264_v4l2m2m @ 0xffff8c584400] V4L2 capture changed: alloc=0 (32x32) → (480x368)
[h264_v4l2m2m @ 0xffff8c584400] Source change: SAR: 1/1, wxh 480x368 crop 480x360 @ 0,0, reinit=1
[h264_v4l2m2m @ 0xffff8c584400] reinit context
[h264_v4l2m2m @ 0xffff8c584400] capture: YU12 20 buffers initialized: 0480x0368, sizeimage 00264960, bytesperline 00000480
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 0, ts=0.000000 count=1
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 1, ts=0.000000 count=2
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 2, ts=0.000000 count=3
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 3, ts=0.000000 count=4
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 4, ts=0.000000 count=5
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 5, ts=0.000000 count=6
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 6, ts=0.000000 count=7
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 7, ts=0.000000 count=8
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 8, ts=0.000000 count=9
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 9, ts=0.000000 count=10
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 10, ts=0.000000 count=11
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 11, ts=0.000000 count=12
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 12, ts=0.000000 count=13
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 13, ts=0.000000 count=14
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 14, ts=0.000000 count=15
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 15, ts=0.000000 count=16
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 16, ts=0.000000 count=17
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 17, ts=0.000000 count=18
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 18, ts=0.000000 count=19
[h264_v4l2m2m @ 0xffff8c584400] — capture VIDIOC_QBUF: index 19, ts=0.000000 count=20
[h264_v4l2m2m @ 0xffff8c584400] capture set status 1074026002 (ON) OK

I was looking over @tartanpion PKGBUILD and noticed --enable-neon (which is supposed to be for arm devices) was not there which is in ffmpeg-rpi for HW so I recompiled and also disabled vmaf and svt-av1 which is not in our repo. I am now able to play a really stout stream jellyfish-120-mbps-4k-uhd-hevc-10bit.mkv really well like I could with ffmpeg-rpi. Here is the new rpi-ffmpeg build.

https://drive.google.com/file/d/1bZthM-wHYiAvsCg9XS6JN3DlMv1vfupM/view?usp=sharing

rpi-ffmpeg-6.0 and mpv on my device support h264.mkv and hevc.mkv (8 bits) but not hevc.mkv (10 bits) crashes the system (need to power off and on to reboot.) Stream online the same “media/jellyfish-40-mbps-hd.xxx”

jfl@jfl-gtkpro    mpv --gpu-context=wayland --hwdec=auto https://www.larmoire.info/jellyfish/media/jellyfish-40-mbps-hd-h264.mkv
 (+) Video --vid=1 (*) (h264 1920x1080 29.970fps)
[vo/gpu/wayland] GNOME's wayland compositor lacks support for the idle inhibit protocol. This means the screen can blank during playback.
[vaapi] libva: /usr/lib/dri/v4l2_request_drv_video.so init failed
[vaapi] libva: /usr/lib/dri/v4l2_request_drv_video.so init failed
Using hardware decoding (v4l2m2m).
VO: [gpu] 1920x1080 drm_prime[nv12]
V: 00:00:29 / 00:00:30 (100%) Dropped: 8 Cache: 0.0s

Exiting... (End of file)
 jfl@jfl-gtkpro    mpv --gpu-context=wayland --hwdec=v4l2m2m https://www.larmoire.info/jellyfish/media/jellyfish-40-mbps-hd-hevc.mkv
 (+) Video --vid=1 (*) (hevc 1920x1080 29.970fps)
[vo/gpu/wayland] GNOME's wayland compositor lacks support for the idle inhibit protocol. This means the screen can blank during playback.
Using hardware decoding (v4l2m2m).
VO: [gpu] 1920x1080 drm_prime[nv12]
V: 00:00:29 / 00:00:30 (99%) Dropped: 2 Cache: 0.0s
Invalid video timestamp: 29.997000 -> 29.930000
V: 00:00:29 / 00:00:30 (99%) Dropped: 2 Cache: 0.0s

Exiting... (End of file)

Haven’t had a chance to run

MOZ_GFX_DEBUG=1 MOZ_LOG=“PlatformDecoderModule:5” firefox

yet. Will do it later on.

I have one more suggestion since I saw vp9 with your vpu. I ran across this in my notes when I was researching if you want to try this. Also the av1 I have noticed is in mp4:

To test vp8/vp9/av1 decode on aarch64 you need to set media.ffvpx.enabled to false at about:config
and restart browser.
It’s because bundled ffvpx library (used for vp8/vp9/av1 decode) doesn’t have backported V4L2
acceleration from ffmpeg so you need to use system ffmpeg for it.