CuTePi is a cue-based show playback controller for the Raspberry Pi. It plays video, images and audio full-screen on HDMI from a cue list run in a web browser, with fades, crossfades, layers, scheduling, a panic holding image, and remote control from Bitfocus Companion (HyperDeck and QLab).
- Design: DESIGN.md — product decisions, architecture, playback engine, remote protocols.
- Test results: TEST_REPORT.md — system test rounds, measurements, open findings.
- Servers: AGENTS.md — the test (Pi 4) and dev machines and how to test on them.
- Codec test tools: tools/codec-corpus/.
On the Pi, from the checkout in /opt/cutepi (binary built there):
sudo deploy/install-service-user.sh
It creates the unprivileged cutepi system user, installs the polkit rules (deploy/50-cutepi.rules) and the unit
(cutepi.service), copies existing data from /root/cutepi into /var/lib/cutepi (keeping the original), and
restarts the service. See DESIGN.md §7 for what the service user is allowed to do and why.
Also on the Pi:
- Codec clocks:
sudo deploy/install-firmware-config.shholds the VideoCore codec blocks at their stock maximum in/boot/firmware/config.txt(without it a hardware H.264 decode runs at half clock: 54 fps instead of 90).--overclockadds the test Pi's measured overclock (650 MHz codec blocks, ARM 2.0 GHz; keep the Pi cooled),--removetakes CuTePi's block out. Reboot to apply. Pi 4 only. See DESIGN.md §12.16. - CineForm decoder library:
sudo deploy/build-cineform.shbuilds the GoPro CineForm SDK (ported to AArch64,third_party/cineform-sdk) and installs/usr/local/lib/cutepi/libcutepi-cfhd.so, which CuTePi's CineForm decoder loads at start-up (about 2 minutes; needsuuid-dev). Without it CineForm plays through FFmpeg's slower decoder. - yt-dlp: a current release (Debian trixie's 2025.04 gets nothing usable from YouTube), e.g. the official
yt-dlp_linux_aarch64binary as/usr/local/bin/yt-dlp. - GPU compositor wall:
CUTEPI_WALL=glin a drop-in forcutepi.service(the test Pi runs it).
CuTePi is meant to play any codec GStreamer can decode: hardware decoders are fast paths, never the supported set. Every codec has its own test, and this table is regenerated after each batch of testing.
Beyond GStreamer's own decoders, CuTePi registers its own (DESIGN §12.16): AV1 through dav1d
(cutepidav1ddec, about 4× libaom), CineForm through the CineForm SDK (cutepicfhddec, about 4× FFmpeg),
FFmpeg's VP8 decoder ranked above libvpx's, a NEON packer that turns 10-bit and 4:2:2 frames (ProRes,
DNxHR) into 4:2:0 for the display path, Motion JPEG and PNG video on several cores (cutepimjpegdec, cutepipngvdec), and an animated image decoder (cutepianimdec: GIF, APNG, animated
WebP, AVIF stills and sequences, JPEG XL stills and animations, with alpha) that decodes frames in parallel. The "Video decoder" column comes from a probe that runs outside the
service, so it names GStreamer's choice there (e.g. av1dec, avdec_cfhd) rather than CuTePi's own elements,
which only exist in the service. URL imports are kept in their own format when it is supported here (1080p60 with
smooth fades) and refused otherwise, with a notice listing the supported codecs and containers; nothing is
converted on import (DESIGN §12.15).
Supported means, measured on the hardware named below through the live service:
- Video: a 1080p60 file plays at 60 fps — a new frame on at least 59 of every 60 refreshes — during a 1 s fade in, steady play and a 1 s fade out, and both fades change the opacity at least 59 times a second (a smooth fade at the display rate).
- Images: a 1080p still fades in and out with the opacity changing at least 59 times a second.
- Animated images (GIF, APNG, WebP): as images, and every frame of the animation is presented at the file's own timing (all but at most one frame per 0.9 s measuring window, as 59 of 60 for video) through the fades and steady play. GIF cannot store 60 fps (its frame delays are in 1/100 s), so animated images are tested at 25, 30 and 50 fps.
- Transparency (files named
*_alpha, video and images): as above, and the picture reaches the display with its alpha channel, blended as straight (non-premultiplied) alpha, so transparent areas show what lies beneath. - Audio: (the 1080p60 part does not apply) the HDMI audio stream runs without a break through steady play and the fade out.
Anything else is listed as "<Pi model> - unsupported", with what was measured. Every video codec is tested in both MOV and MKV wherever the container can carry it.
How it is measured: tools/codec-corpus/support.py uploads each file of the support set (make-support.sh), plays it as a cue with the fades, and counts what the display actually latched per refresh with kernel tracing (frames committed to the display, opacity writes, vblank timing), from outside the service. To refresh the table, on the Pi:
tools/codec-corpus/make-support.sh
python3 tools/codec-corpus/support.py --readme README.md
Tested on Raspberry Pi 4 Model B Rev 1.5, output: KMS display planes, 2026-10-09. 17 of 95 codec/container combinations supported.
| Type | Codec | Container | Video decoder | Hardware | Measured (1 s fade in, steady, 1 s fade out) | Status |
|---|---|---|---|---|---|---|
| video | av1 | MKV | av1dec | no | steady 34.8 fps; fade in 30 fps (30 steps/s); fade out 30 fps (28.9 steps/s); frame interval p99 133.89 ms, p99.9 138.95, max 138.95 (92 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_422 | MKV | avdec_cfhd | no | steady 0 fps; fade in 3 fps (41 steps/s); fade out 0 fps (56.7 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_422 | MOV | avdec_cfhd | no | steady 0.3 fps; fade in 3 fps (40 steps/s); fade out 0 fps (42.2 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_alpha | MKV | avdec_cfhd | no | steady 0 fps; fade in 2 fps (41 steps/s); fade out 0 fps (57.8 steps/s); alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_alpha | MOV | avdec_cfhd | no | steady 0 fps; fade in 2 fps (41 steps/s); fade out 0 fps (56.7 steps/s); alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgb12 | MKV | avdec_cfhd | no | steady 0 fps; fade in 2 fps (40 steps/s); fade out 0 fps (56.7 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgb12 | MOV | avdec_cfhd | no | steady 0 fps; fade in 2 fps (41 steps/s); fade out 0 fps (57.8 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgba12 | MKV | avdec_cfhd | no | steady 0 fps; fade in 2 fps (42 steps/s); fade out 0 fps (56.7 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgba12 | MOV | avdec_cfhd | no | steady 0 fps; fade in 2 fps (41 steps/s); fade out 0 fps (56.7 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | dnxhr_hq | MKV | - | no | import refused: could not import 1 of 1: "dnxhr_hq.mkv": cannot be played: this system has no GStreamer decoder for video/x-unknown | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | dnxhr_hq | MOV | avdec_dnxhd | no | steady 0.5 fps; fade in 7 fps (38 steps/s); fade out 0 fps (43.3 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | dnxhr_lb | MKV | - | no | import refused: could not import 1 of 1: "dnxhr_lb.mkv": cannot be played: this system has no GStreamer decoder for video/x-unknown | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | dnxhr_lb | MOV | avdec_dnxhd | no | steady 60 fps; fade in 30 fps (29 steps/s); fade out 30 fps (30 steps/s); frame interval p99 16.72 ms, p99.9 16.9, max 16.9 (0 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | ffv1 | MKV | avdec_ffv1 | no | steady 58.8 fps; fade in 30 fps (30 steps/s); fade out 30 fps (30 steps/s); frame interval p99 33.28 ms, p99.9 35.29, max 35.29 (5 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | ffv1_alpha | MKV | avdec_ffv1 | no | steady 18.4 fps; fade in 14 fps (30 steps/s); fade out 23.3 fps (30 steps/s); frame interval p99 383.3 ms, p99.9 383.3, max 383.3 (153 repeated refreshes); alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_high | MKV | v4l2h264dec | yes | steady 59.8 fps; fade in 31 fps (30 steps/s); fade out 31.1 fps (28.9 steps/s); frame interval p99 22.28 ms, p99.9 25.07, max 25.07 (1 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_high | MOV | v4l2h264dec | yes | steady 59.8 fps; fade in 31 fps (29 steps/s); fade out 31.1 fps (28.9 steps/s); frame interval p99 22.86 ms, p99.9 23.41, max 23.41 (0 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_high10 | MKV | avdec_h264 | no | steady 0.5 fps; fade in 9 fps (30 steps/s); fade out 0 fps (42.2 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_high10 | MOV | avdec_h264 | no | steady 0.3 fps; fade in 23 fps (30 steps/s); fade out 1.1 fps (37.8 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_noaudio | MOV | v4l2h264dec | yes | steady 59.9 fps; fade in 31 fps (29 steps/s); fade out 31.1 fps (28.9 steps/s); frame interval p99 22.4 ms, p99.9 25.19, max 25.19 (1 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hap | MKV | - | no | import refused: could not import 1 of 1: "hap.mkv": cannot be played: this system has no GStreamer decoder for video/x-unknown | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hap | MOV | avdec_hap | no | steady 28.1 fps; fade in 25 fps (30 steps/s); fade out 22.2 fps (30 steps/s); frame interval p99 83.24 ms, p99.9 83.29, max 83.29 (117 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hap_alpha | MKV | - | no | import refused: could not import 1 of 1: "hap_alpha.mkv": cannot be played: this system has no GStreamer decoder for video/x-unknown | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hap_alpha | MOV | avdec_hap | no | steady 22.7 fps; fade in 19 fps (29 steps/s); fade out 17.8 fps (30 steps/s); frame interval p99 66.71 ms, p99.9 66.71, max 66.71 (136 repeated refreshes); alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hevc_main | MKV | v4l2slh265dec | yes | steady 0.8 fps; fade in 2 fps (42 steps/s); fade out 1.1 fps (32.2 steps/s); frame interval p99 1033.32 ms, p99.9 1033.32, max 1033.32 (119 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hevc_main | MOV | v4l2slh265dec | yes | steady 0.8 fps; fade in 2 fps (41 steps/s); fade out 1.1 fps (30 steps/s); frame interval p99 1152.73 ms, p99.9 1152.73, max 1152.73 (132 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hevc_main10 | MKV | v4l2slh265dec | yes | steady 0.8 fps; fade in 4 fps (31 steps/s); fade out 2.2 fps (28.9 steps/s); frame interval p99 1266.71 ms, p99.9 1266.71, max 1266.71 (133 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hevc_main10 | MOV | v4l2slh265dec | yes | steady 0.8 fps; fade in 2 fps (41 steps/s); fade out 2.2 fps (31.1 steps/s); frame interval p99 1099.92 ms, p99.9 1099.92, max 1099.92 (128 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | mjpeg | MKV | jpegdec | no | steady 60 fps; fade in 31 fps (30 steps/s); fade out 31.1 fps (28.9 steps/s); frame interval p99 17 ms, p99.9 21.56, max 21.56 (0 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | mjpeg | MOV | jpegdec | no | steady 59.8 fps; fade in 31 fps (30 steps/s); fade out 31.1 fps (28.9 steps/s); frame interval p99 16.84 ms, p99.9 18.28, max 18.28 (0 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | mpeg2 | MKV | avdec_mpeg2video | no | steady 60 fps; fade in 31 fps (30 steps/s); fade out 30 fps (30 steps/s); frame interval p99 16.78 ms, p99.9 17.06, max 17.06 (0 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | mpeg2 | MOV | avdec_mpeg2video | no | steady 59.2 fps; fade in 31 fps (30 steps/s); fade out 30 fps (30 steps/s); frame interval p99 16.76 ms, p99.9 34.37, max 34.37 (2 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | mpeg4_asp | MKV | avdec_mpeg4 | no | steady 59.5 fps; fade in 30 fps (29 steps/s); fade out 30 fps (30 steps/s); frame interval p99 19.97 ms, p99.9 33.23, max 33.23 (2 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | mpeg4_asp | MOV | avdec_mpeg4 | no | steady 60 fps; fade in 31 fps (30 steps/s); fade out 30 fps (30 steps/s); frame interval p99 16.76 ms, p99.9 16.81, max 16.81 (0 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | png_alpha | MKV | pngdec | no | steady 0 fps; fade in 2 fps (43 steps/s); fade out 0 fps (56.7 steps/s); alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | png_alpha | MOV | pngdec | no | steady 0 fps; fade in 2 fps (41 steps/s); fade out 0 fps (56.7 steps/s); alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_422 | MKV | avdec_prores | no | steady 45.1 fps; fade in 18 fps (29 steps/s); fade out 30 fps (30 steps/s); frame interval p99 178.61 ms, p99.9 251.79, max 251.79 (56 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_422 | MOV | avdec_prores | no | steady 54.3 fps; fade in 25 fps (30 steps/s); fade out 28.9 fps (30 steps/s); frame interval p99 46.62 ms, p99.9 99.86, max 99.86 (21 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_422hq | MKV | avdec_prores | no | steady 35.1 fps; fade in 22 fps (30 steps/s); fade out 30 fps (30 steps/s); frame interval p99 116.99 ms, p99.9 149.99, max 149.99 (88 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_422hq | MOV | avdec_prores | no | steady 53 fps; fade in 12 fps (30 steps/s); fade out 27.8 fps (28.9 steps/s); frame interval p99 62.68 ms, p99.9 77.1, max 77.1 (25 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444 | MKV | avdec_prores | no | steady 0.5 fps; fade in 2 fps (40 steps/s); fade out 1.1 fps (35.6 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444 | MOV | avdec_prores | no | steady 0.3 fps; fade in 2 fps (42 steps/s); fade out 1.1 fps (40 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444_alpha | MKV | avdec_prores | no | steady 0.3 fps; fade in 2 fps (21 steps/s); fade out 0 fps (41.1 steps/s); alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444_alpha | MOV | avdec_prores | no | steady 0.3 fps; fade in 2 fps (41 steps/s); fade out 0 fps (36.7 steps/s); alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444xq | MKV | avdec_prores | no | steady 0.8 fps; fade in 2 fps (42 steps/s); fade out 1.1 fps (34.4 steps/s); frame interval p99 1829.02 ms, p99.9 1829.02, max 1829.02 (190 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444xq | MOV | avdec_prores | no | steady 0.5 fps; fade in 2 fps (42 steps/s); fade out 1.1 fps (30 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_lt | MKV | avdec_prores | no | steady 45.4 fps; fade in 30 fps (30 steps/s); fade out 31.1 fps (28.9 steps/s); frame interval p99 144.05 ms, p99.9 185.06, max 185.06 (55 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_lt | MOV | avdec_prores | no | steady 51.8 fps; fade in 22 fps (30 steps/s); fade out 31.1 fps (28.9 steps/s); frame interval p99 69.13 ms, p99.9 168.51, max 168.51 (31 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_proxy | MKV | avdec_prores | no | steady 50.5 fps; fade in 29 fps (30 steps/s); fade out 30 fps (30 steps/s); frame interval p99 37.27 ms, p99.9 146.15, max 146.15 (21 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_proxy | MOV | avdec_prores | no | steady 51.3 fps; fade in 31 fps (30 steps/s); fade out 28.9 fps (30 steps/s); frame interval p99 83.34 ms, p99.9 168.14, max 168.14 (32 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | qtrle | MKV | - | no | import refused: could not import 1 of 1: "qtrle.mkv": media: ffprobe failed for "qtrle.mkv": exit status 1 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | qtrle | MOV | avdec_qtrle | no | steady 25.4 fps; fade in 21 fps (30 steps/s); fade out 28.9 fps (30 steps/s); frame interval p99 83.38 ms, p99.9 83.38, max 83.38 (126 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | qtrle_alpha | MKV | - | no | import refused: could not import 1 of 1: "qtrle_alpha.mkv": media: ffprobe failed for "qtrle_alpha.mkv": exit status 1 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | qtrle_alpha | MOV | avdec_qtrle | no | steady 24.9 fps; fade in 30 fps (30 steps/s); fade out 28.9 fps (30 steps/s); frame interval p99 516.7 ms, p99.9 516.7, max 516.7 (129 repeated refreshes); alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | theora | MKV | theoradec | no | steady 59.7 fps; fade in 30 fps (29 steps/s); fade out 30 fps (30 steps/s); frame interval p99 17.44 ms, p99.9 33.27, max 33.27 (1 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | vp8 | MKV | vp8dec | no | steady 59.7 fps; fade in 30 fps (30 steps/s); fade out 30 fps (30 steps/s); frame interval p99 16.74 ms, p99.9 16.79, max 16.79 (0 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | vp9 | MKV | vp9dec | no | steady 42.1 fps; fade in 30 fps (30 steps/s); fade out 31.1 fps (28.9 steps/s); frame interval p99 32.82 ms, p99.9 33.28, max 33.28 (2 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | vp9_alpha | MKV | - | no | steady 1.9 fps; fade in 14 fps (29 steps/s); fade out 1.1 fps (35.6 steps/s); frame interval p99 2166.78 ms, p99.9 2166.78, max 2166.78 (195 repeated refreshes); alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | wmv2 | MKV | avdec_wmav2, avdec_wmv2 | no | steady 60 fps; fade in 31 fps (29 steps/s); fade out 30 fps (30 steps/s); frame interval p99 16.76 ms, p99.9 17.39, max 17.39 (0 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | apng_anim | APNG | pngdec | no | import refused: could not import 1 of 1: "apng_anim.apng": cannot be played: GStreamer did not finish decoding the first frame within 10s | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | avif | AVIF | - | no | import refused: could not import 1 of 1: "avif.avif": cannot be played: GStreamer cannot decode it: This file contains no playable streams. | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | bmp | BMP | gdkpixbufdec | no | fade in 55 steps/s, fade out 56.7 steps/s | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | gif | GIF | avdec_gif | no | fade in 56 steps/s, fade out 56.7 steps/s | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | gif_alpha | GIF | avdec_gif | no | fade in 57 steps/s, fade out 57.8 steps/s; alpha: plane AR24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | gif_anim | GIF | avdec_gif | no | animated, 25 fps file; steady 24.9 fps; fade in 25 fps (30 steps/s); fade out 25.6 fps (28.9 steps/s); frame interval p99 50.04 ms, p99.9 50.04, max 50.04 (127 repeated refreshes) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | gif_anim_50fps | GIF | avdec_gif | no | animated, 50 fps file; steady 0.5 fps; fade in 7 fps (36 steps/s); fade out 0 fps (42.2 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | gif_anim_alpha | GIF | avdec_gif | no | animated, 25 fps file; steady 25.1 fps; fade in 26 fps (30 steps/s); fade out 24.4 fps (30 steps/s); frame interval p99 50.02 ms, p99.9 50.02, max 50.02 (129 repeated refreshes); alpha: plane AR24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | jpeg | JPG | jpegdec | no | fade in 56 steps/s, fade out 56.7 steps/s | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | jpeg2000 | JP2 | avdec_jpeg2000 | no | fade in 56 steps/s, fade out 56.7 steps/s | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | jpegxl | JXL | - | no | import refused: could not import 1 of 1: "jpegxl.jxl": cannot be played: GStreamer cannot decode it: Could not determine type of stream. | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | png | PNG | pngdec | no | fade in 56 steps/s, fade out 56.7 steps/s | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | png_alpha | PNG | pngdec | no | fade in 57 steps/s, fade out 56.7 steps/s; alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | tiff | TIFF | gdkpixbufdec | no | fade in 57 steps/s, fade out 56.7 steps/s | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | tiff_alpha | TIFF | gdkpixbufdec | no | fade in 57 steps/s, fade out 57.8 steps/s; alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | webp | WEBP | webpdec | no | fade in 56 steps/s, fade out 56.7 steps/s | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | webp_alpha | WEBP | webpdec | no | fade in 57 steps/s, fade out 56.7 steps/s; alpha: plane AB24, blend Coverage | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | webp_anim_30fps | WEBP | webpdec | no | import refused: could not import 1 of 1: "webp_anim_30fps.webp": cannot be played: GStreamer cannot decode it: Internal data stream error. | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| audio | aac | MKV | avdec_aac | no | HDMI stream running 115/117 samples | Supported |
| audio | aac | MOV | avdec_aac | no | HDMI stream running 117/117 samples | Supported |
| audio | ac3_5.1 | MKV | avdec_ac3 | no | HDMI stream running 116/116 samples | Supported |
| audio | ac3_5.1 | MOV | avdec_ac3 | no | HDMI stream running 117/117 samples | Supported |
| audio | alac | MKV | - | no | import refused: could not import 1 of 1: "alac.mkv": cannot be played: this system has no GStreamer decoder for audio/x-unknown | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| audio | alac | MOV | avdec_alac | no | HDMI stream running 117/117 samples | Supported |
| audio | eac3_5.1 | MKV | avdec_eac3 | no | HDMI stream running 117/117 samples | Supported |
| audio | eac3_5.1 | MOV | avdec_eac3 | no | HDMI stream running 117/117 samples | Supported |
| audio | flac | MKV | flacdec | no | HDMI stream running 117/117 samples | Supported |
| audio | mp3 | MKV | mpg123audiodec | no | HDMI stream running 117/117 samples | Supported |
| audio | mp3 | MOV | mpg123audiodec | no | HDMI stream running 117/117 samples | Supported |
| audio | opus | MKV | opusdec | no | HDMI stream running 117/117 samples | Supported |
| audio | pcm_s16 | MKV | - | no | HDMI stream running 117/117 samples | Supported |
| audio | pcm_s16 | MOV | - | no | HDMI stream running 117/117 samples | Supported |
| audio | pcm_s24 | MKV | - | no | HDMI stream running 117/117 samples | Supported |
| audio | pcm_s24 | MOV | - | no | HDMI stream running 117/117 samples | Supported |
| audio | vorbis | MKV | vorbisdec | no | HDMI stream running 117/117 samples | Supported |
| audio | wma | MKV | avdec_wmav2 | no | HDMI stream running 117/117 samples | Supported |
The same support set through the GPU compositor wall (DESIGN §6.1.1), which is not the default yet. Here every layer
is blended by the GPU and the display shows one finished picture per refresh, so the test reads the wall's own
counters of frames actually put on screen (GET /api/debug/glwall) instead of tracing display planes. Fades change
the opacity on every refresh when the CPU is free. Software codecs mostly play faster than on the plane wall,
because late frames are shown and the decoder skips ahead to stay in step with the sound. The table below dates from
2026-10-03; since 2026-10-07 the wall's threads run real-time (SCHED_FIFO) and H.264 1080p60 plays at 59.6–60.1
(TEST_REPORT, "Performance round, 2026-10-07"), so its H.264 rows are out of date until the next full run. To refresh
this table, run the service with CUTEPI_WALL=gl and:
python3 tools/codec-corpus/support.py --section gl --readme README.md
Tested on Raspberry Pi 4 Model B Rev 1.5, output: GPU compositor wall, 2026-10-09. 45 of 101 codec/container combinations supported.
| Type | Codec | Container | Video decoder | Hardware | Measured (1 s fade in, steady, 1 s fade out) | Status |
|---|---|---|---|---|---|---|
| video | av1 | MKV | av1dec | no | steady 21.7 fps; fade in 60 fps (60 steps/s); fade out 8.2 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_422 | MKV | avdec_cfhd | no | steady 24 fps; fade in 25.8 fps (59.9 steps/s); fade out 32.3 fps (59.9 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_422 | MOV | avdec_cfhd | no | steady 24 fps; fade in 16.8 fps (60.1 steps/s); fade out 36.1 fps (60.1 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_alpha | MKV | avdec_cfhd | no | steady 23.9 fps; fade in 8.1 fps (60 steps/s); fade out 15.3 fps (60 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_alpha | MOV | avdec_cfhd | no | steady 15.7 fps; fade in 4.7 fps (60 steps/s); fade out 20 fps (60 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgb12 | MKV | avdec_cfhd | no | steady 24.1 fps; fade in 7.2 fps (59.9 steps/s); fade out 22.3 fps (59.9 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgb12 | MOV | avdec_cfhd | no | steady 22.3 fps; fade in 3.5 fps (59.9 steps/s); fade out 27.7 fps (59.9 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgba12 | MKV | avdec_cfhd | no | steady 18.5 fps; fade in 9.4 fps (60.1 steps/s); fade out 22.4 fps (60.1 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgba12 | MOV | avdec_cfhd | no | steady 18.2 fps; fade in 9.4 fps (60 steps/s); fade out 21.9 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_422 | MKV | avdec_cfhd | no | steady 32.3 fps; fade in 25.2 fps (60 steps/s); fade out 34.8 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_422 | MOV | avdec_cfhd | no | steady 33 fps; fade in 25.9 fps (60.1 steps/s); fade out 38.5 fps (60.1 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_444 | MKV | avdec_cfhd | no | steady 22.2 fps; fade in 11.8 fps (60 steps/s); fade out 30 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_444 | MOV | avdec_cfhd | no | steady 17.5 fps; fade in 15.3 fps (60 steps/s); fade out 27.1 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_alpha | MKV | avdec_cfhd | no | steady 18.4 fps; fade in 8.1 fps (60.1 steps/s); fade out 18.8 fps (60.1 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_alpha | MOV | avdec_cfhd | no | steady 12.9 fps; fade in 7.9 fps (60 steps/s); fade out 16.5 fps (60 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | dnxhr_hq | MKV | - | no | import refused: could not import 1 of 1: "dnxhr_hq.mkv": cannot be played: this system has no GStreamer decoder for video/x-unknown | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | dnxhr_hq | MOV | avdec_dnxhd | no | steady 23.6 fps; fade in 60.1 fps (60.1 steps/s); fade out 36.5 fps (60.1 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | dnxhr_lb | MKV | - | no | import refused: could not import 1 of 1: "dnxhr_lb.mkv": cannot be played: this system has no GStreamer decoder for video/x-unknown | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | dnxhr_lb | MOV | avdec_dnxhd | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s) | Supported |
| video | ffv1 | MKV | avdec_ffv1 | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s) | Supported |
| video | ffv1_alpha | MKV | avdec_ffv1 | no | steady 10.9 fps; fade in 15.3 fps (60 steps/s); fade out 24.2 fps (60 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_high | MKV | v4l2h264dec | yes | steady 59.6 fps; fade in 59.6 fps (54.8 steps/s); fade out 59.6 fps (59.6 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_high | MOV | v4l2h264dec | yes | steady 59.4 fps; fade in 59.4 fps (57.2 steps/s); fade out 59.4 fps (59.4 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_high10 | MKV | avdec_h264 | no | steady 14.3 fps; fade in 28.8 fps (60 steps/s); fade out 25.2 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_high10 | MOV | avdec_h264 | no | steady 11.7 fps; fade in 22.8 fps (60 steps/s); fade out 24.2 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_noaudio | MOV | v4l2h264dec | yes | steady 59.7 fps; fade in 59.7 fps (59.7 steps/s); fade out 59.7 fps (59.7 steps/s) | Supported |
| video | hap | MKV | - | no | import refused: could not import 1 of 1: "hap.mkv": cannot be played: this system has no GStreamer decoder for video/x-unknown | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hap | MOV | avdec_hap | no | steady 36.4 fps; fade in 44.3 fps (59.9 steps/s); fade out 29.9 fps (59.9 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hap_alpha | MKV | - | no | import refused: could not import 1 of 1: "hap_alpha.mkv": cannot be played: this system has no GStreamer decoder for video/x-unknown | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hap_alpha | MOV | avdec_hap | no | steady 40.5 fps; fade in 43.6 fps (60.1 steps/s); fade out 40.9 fps (60.1 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | hevc_main | MKV | v4l2slh265dec | yes | steady 60.1 fps; fade in 60.1 fps (60.1 steps/s); fade out 60.1 fps (60.1 steps/s) | Supported |
| video | hevc_main | MOV | v4l2slh265dec | yes | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s) | Supported |
| video | hevc_main10 | MKV | v4l2slh265dec | yes | steady 59.9 fps; fade in 59.9 fps (59.9 steps/s); fade out 59.9 fps (59.9 steps/s) | Supported |
| video | hevc_main10 | MOV | v4l2slh265dec | yes | steady 59.9 fps; fade in 59.9 fps (59.9 steps/s); fade out 59.9 fps (59.9 steps/s) | Supported |
| video | mjpeg | MKV | jpegdec | no | steady 59.9 fps; fade in 59.9 fps (59.9 steps/s); fade out 59.9 fps (59.9 steps/s) | Supported |
| video | mjpeg | MOV | jpegdec | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s) | Supported |
| video | mpeg2 | MKV | avdec_mpeg2video | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s) | Supported |
| video | mpeg2 | MOV | avdec_mpeg2video | no | steady 60.1 fps; fade in 60.1 fps (60.1 steps/s); fade out 60.1 fps (60.1 steps/s) | Supported |
| video | mpeg4_asp | MKV | avdec_mpeg4 | no | steady 60.2 fps; fade in 60.2 fps (60.2 steps/s); fade out 60.2 fps (60.2 steps/s) | Supported |
| video | mpeg4_asp | MOV | avdec_mpeg4 | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s) | Supported |
| video | png_alpha | MKV | pngdec | no | steady 36.8 fps; fade in 14.7 fps (60 steps/s); fade out 36 fps (60 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | png_alpha | MOV | pngdec | no | steady 36.9 fps; fade in 13.8 fps (60 steps/s); fade out 42.7 fps (60 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_422 | MKV | avdec_prores | no | steady 28.4 fps; fade in 30.6 fps (60.1 steps/s); fade out 54.4 fps (60.1 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_422 | MOV | avdec_prores | no | steady 18.8 fps; fade in 43.9 fps (60.1 steps/s); fade out 60.1 fps (60.1 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_422hq | MKV | avdec_prores | no | steady 5.5 fps; fade in 55.4 fps (60.1 steps/s); fade out 3.6 fps (60.1 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_422hq | MOV | avdec_prores | no | steady 19.9 fps; fade in 34.1 fps (60.1 steps/s); fade out 54.1 fps (60.1 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444 | MKV | avdec_prores | no | steady 18.5 fps; fade in 2.3 fps (59.9 steps/s); fade out 23 fps (59.9 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444 | MOV | avdec_prores | no | steady 18.2 fps; fade in 5.9 fps (60.1 steps/s); fade out 19.7 fps (60.1 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444_alpha | MKV | avdec_prores | no | steady 18.7 fps; fade in 9.4 fps (60 steps/s); fade out 21.9 fps (60 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444_alpha | MOV | avdec_prores | no | steady 20.5 fps; fade in 1.2 fps (42.7 steps/s); fade out 21.9 fps (60 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444xq | MKV | avdec_prores | no | steady 21.9 fps; fade in 9.4 fps (59.9 steps/s); fade out 21.9 fps (59.9 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444xq | MOV | avdec_prores | no | steady 22.3 fps; fade in 8.2 fps (60.1 steps/s); fade out 25.9 fps (60.1 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_lt | MKV | avdec_prores | no | steady 24.7 fps; fade in 57.7 fps (60 steps/s); fade out 52.9 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_lt | MOV | avdec_prores | no | steady 31.2 fps; fade in 60 fps (60 steps/s); fade out 50.4 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_proxy | MKV | avdec_prores | no | steady 33.7 fps; fade in 55.3 fps (60 steps/s); fade out 52.9 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_proxy | MOV | avdec_prores | no | steady 43 fps; fade in 56.5 fps (60 steps/s); fade out 60 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | qtrle | MKV | - | no | import refused: could not import 1 of 1: "qtrle.mkv": media: ffprobe failed for "qtrle.mkv": exit status 1 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | qtrle | MOV | avdec_qtrle | no | steady 44.7 fps; fade in 60 fps (60 steps/s); fade out 50.6 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | qtrle_alpha | MKV | - | no | import refused: could not import 1 of 1: "qtrle_alpha.mkv": media: ffprobe failed for "qtrle_alpha.mkv": exit status 1 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | qtrle_alpha | MOV | avdec_qtrle | no | steady 5.5 fps; fade in 17.2 fps (60.1 steps/s); fade out 25.9 fps (60.1 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | theora | MKV | theoradec | no | steady 34.6 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | vp8 | MKV | vp8dec | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s) | Supported |
| video | vp9 | MKV | vp9dec | no | steady 13.4 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | vp9_alpha | MKV | - | no | steady 15.6 fps; fade in 16.5 fps (59.9 steps/s); fade out 31.2 fps (59.9 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | wmv2 | MKV | avdec_wmav2, avdec_wmv2 | no | steady 60.1 fps; fade in 60.1 fps (60.1 steps/s); fade out 60.1 fps (60.1 steps/s) | Supported |
| image | apng_anim | APNG | pngdec | no | import refused: could not import 1 of 1: "apng_anim.apng": cannot be played: GStreamer did not finish decoding the first frame within 10s | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | avif | AVIF | - | no | import refused: could not import 1 of 1: "avif.avif": cannot be played: GStreamer cannot decode it: This file contains no playable streams. | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | bmp | BMP | gdkpixbufdec | no | fade in 60 steps/s, fade out 60 steps/s | Supported |
| image | gif | GIF | avdec_gif | no | fade in 60.1 steps/s, fade out 60.1 steps/s | Supported |
| image | gif_alpha | GIF | avdec_gif | no | fade in 60 steps/s, fade out 60 steps/s; alpha: plane GL layer, alpha route, RGBA, blend straight | Supported |
| image | gif_anim | GIF | avdec_gif | no | animated, 25 fps file; steady 24.8 fps; fade in 24.7 fps (60 steps/s); fade out 24.9 fps (60 steps/s) | Supported |
| image | gif_anim_50fps | GIF | avdec_gif | no | animated, 50 fps file; steady 25.7 fps; fade in 20.8 fps (60 steps/s); fade out 31.8 fps (60 steps/s) | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | gif_anim_alpha | GIF | avdec_gif | no | animated, 25 fps file; steady 24.9 fps; fade in 25.9 fps (59.9 steps/s); fade out 25.4 fps (59.9 steps/s); alpha: plane GL layer, alpha route, RGBA, blend straight | Supported |
| image | jpeg | JPG | jpegdec | no | fade in 60 steps/s, fade out 60 steps/s | Supported |
| image | jpeg2000 | JP2 | avdec_jpeg2000 | no | fade in 60 steps/s, fade out 60 steps/s | Supported |
| image | jpegxl | JXL | - | no | import refused: could not import 1 of 1: "jpegxl.jxl": cannot be played: GStreamer cannot decode it: Could not determine type of stream. | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| image | png | PNG | pngdec | no | fade in 60 steps/s, fade out 60 steps/s | Supported |
| image | png_alpha | PNG | pngdec | no | fade in 60 steps/s, fade out 60 steps/s; alpha: plane GL layer, alpha route, RGBA, blend straight | Supported |
| image | tiff | TIFF | gdkpixbufdec | no | fade in 60 steps/s, fade out 60 steps/s | Supported |
| image | tiff_alpha | TIFF | gdkpixbufdec | no | fade in 60 steps/s, fade out 60 steps/s; alpha: plane GL layer, alpha route, RGBA, blend straight | Supported |
| image | webp | WEBP | webpdec | no | fade in 60.1 steps/s, fade out 60.1 steps/s | Supported |
| image | webp_alpha | WEBP | webpdec | no | fade in 60 steps/s, fade out 60 steps/s; alpha: plane GL layer, alpha route, RGBA, blend straight | Supported |
| image | webp_anim_30fps | WEBP | webpdec | no | import refused: could not import 1 of 1: "webp_anim_30fps.webp": cannot be played: GStreamer cannot decode it: Internal data stream error. | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| audio | aac | MKV | avdec_aac | no | HDMI stream running 116/116 samples | Supported |
| audio | aac | MOV | avdec_aac | no | HDMI stream running 116/116 samples | Supported |
| audio | ac3_5.1 | MKV | avdec_ac3 | no | HDMI stream running 117/117 samples | Supported |
| audio | ac3_5.1 | MOV | avdec_ac3 | no | HDMI stream running 117/117 samples | Supported |
| audio | alac | MKV | - | no | import refused: could not import 1 of 1: "alac.mkv": cannot be played: this system has no GStreamer decoder for audio/x-unknown | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| audio | alac | MOV | avdec_alac | no | HDMI stream running 116/116 samples | Supported |
| audio | eac3_5.1 | MKV | avdec_eac3 | no | HDMI stream running 117/117 samples | Supported |
| audio | eac3_5.1 | MOV | avdec_eac3 | no | HDMI stream running 117/117 samples | Supported |
| audio | flac | MKV | flacdec | no | HDMI stream running 116/116 samples | Supported |
| audio | mp3 | MKV | mpg123audiodec | no | HDMI stream running 116/116 samples | Supported |
| audio | mp3 | MOV | mpg123audiodec | no | HDMI stream running 117/117 samples | Supported |
| audio | opus | MKV | opusdec | no | HDMI stream running 116/116 samples | Supported |
| audio | pcm_s16 | MKV | - | no | HDMI stream running 116/116 samples | Supported |
| audio | pcm_s16 | MOV | - | no | HDMI stream running 116/116 samples | Supported |
| audio | pcm_s24 | MKV | - | no | HDMI stream running 116/116 samples | Supported |
| audio | pcm_s24 | MOV | - | no | HDMI stream running 117/117 samples | Supported |
| audio | vorbis | MKV | vorbisdec | no | HDMI stream running 116/116 samples | Supported |
| audio | wma | MKV | avdec_wmav2 | no | HDMI stream running 116/116 samples | Supported |
Plane wall with CuTePi's presenter (CUTEPI_WALL_SINK=planesink; the test Pi's display path since 2026-10-20)
The same support set on the plane wall (one hardware display plane per cue) with CuTePi's own presenter instead of a
kmssink per layer (DESIGN §6.1.4): one atomic commit per refresh carries every layer's new frame and opacity, and
the presenter steps each fade itself on every refresh. HEVC (8- and 10-bit) goes on a plane as the decoder wrote it,
with a GPU gather of its colour planes; interlaced video is deinterlaced to 60 pictures a second. The test reads the
presenter's per-layer counters (GET /api/debug/planewall) and checks the picture: each file must show on the
display (its plane read back, tools/screen/scanout.py). This table merges three passes: a file is Supported
if it passed in at least two, and its row says how many. Codecs below 60 here are bound by their decoders on the
Pi 4 (CineForm 34-50 fps, ProRes 4444 about 30, VP9 with alpha about 25, 10-bit H.264 45-55); DNxHR HQ in MOV
(440 Mbit/s) is bound by the SD card when read cold. This is the path the GPU wall's results above should be read
against: those counted frames of layers the wall never drew (TEST_REPORT P2). To refresh this table, run the service
with CUTEPI_WALL_SINK=planesink (and no CUTEPI_WALL=gl), run three passes and merge them:
for n in 1 2 3; do python3 tools/codec-corpus/support.py --settle 15 --json /tmp/pass$n.json; done
python3 tools/codec-corpus/support_merge.py /tmp/pass1.json /tmp/pass2.json /tmp/pass3.json --section planewall --readme README.md
Tested on Raspberry Pi 4 Model B Rev 1.5, output: plane wall, CuTePi presenter, 3 passes, 2026-10-20. 78 of 107 codec/container combinations supported.
| Type | Codec | Container | Video decoder | Hardware | Measured (1 s fade in, steady, 1 s fade out) | Status |
|---|---|---|---|---|---|---|
| video | av1 | MKV | av1dec | no | steady 60 fps; fade in 47.3 fps (60 steps/s); fade out 43.8 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.2%); passed 1 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_422 | MKV | avdec_cfhd | no | steady 50.2 fps; fade in 50.9 fps (60 steps/s); fade out 46.2 fps (60 steps/s); picture: 99.3% non-black (plane 127, XB24; file 99.2%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_422 | MOV | avdec_cfhd | no | steady 45.6 fps; fade in 49.4 fps (60 steps/s); fade out 49.4 fps (60 steps/s); picture: 99.3% non-black (plane 127, XB24; file 99.2%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_alpha | MKV | avdec_cfhd | no | steady 34.9 fps; fade in 29.4 fps (60 steps/s); fade out 34.6 fps (60 steps/s); alpha: plane XB24, blend Coverage; picture: 99.3% non-black (plane 127, XB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_alpha | MOV | avdec_cfhd | no | steady 34.7 fps; fade in 36.5 fps (60 steps/s); fade out 33.3 fps (60 steps/s); alpha: plane XB24, blend Coverage; picture: 99.4% non-black (plane 127, XB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgb12 | MKV | avdec_cfhd | no | steady 32.9 fps; fade in 34.6 fps (60 steps/s); fade out 32.9 fps (60 steps/s); picture: 99.4% non-black (plane 127, XB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgb12 | MOV | avdec_cfhd | no | steady 34.3 fps; fade in 31.8 fps (60 steps/s); fade out 31.7 fps (60 steps/s); picture: 99.4% non-black (plane 127, XB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgba12 | MKV | avdec_cfhd | no | steady 34 fps; fade in 34 fps (60 steps/s); fade out 35.1 fps (60 steps/s); picture: 99.3% non-black (plane 127, XB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_rgba12 | MOV | avdec_cfhd | no | steady 32.8 fps; fade in 34.8 fps (60 steps/s); fade out 24.7 fps (60 steps/s); picture: 99.4% non-black (plane 127, XB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_422 | MKV | avdec_cfhd | no | steady 50.1 fps; fade in 47.5 fps (60 steps/s); fade out 47.3 fps (60 steps/s); picture: 99.3% non-black (plane 127, XB24; file 99.2%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_422 | MOV | avdec_cfhd | no | steady 50.1 fps; fade in 49.2 fps (60 steps/s); fade out 49.4 fps (60 steps/s); picture: 99.4% non-black (plane 127, XB24; file 99.2%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_444 | MKV | avdec_cfhd | no | steady 35 fps; fade in 34.1 fps (60 steps/s); fade out 32.9 fps (60 steps/s); picture: 99.4% non-black (plane 127, XB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_444 | MOV | avdec_cfhd | no | steady 34.2 fps; fade in 36.2 fps (60 steps/s); fade out 34.6 fps (60 steps/s); picture: 99.4% non-black (plane 127, XB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_alpha | MKV | avdec_cfhd | no | steady 29.8 fps; fade in 18.5 fps (60 steps/s); fade out 23.8 fps (60 steps/s); alpha: plane AR24, blend Coverage; picture: 99.4% non-black (plane 127, AR24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | cineform_sdk_alpha | MOV | avdec_cfhd | no | steady 30.2 fps; fade in 25.4 fps (60 steps/s); fade out 18.8 fps (60 steps/s); alpha: plane AR24, blend Coverage; picture: 99.4% non-black (plane 127, AR24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | dnxhr_hq | MKV | - | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.2%); passed 3 of 3 | Supported |
| video | dnxhr_hq | MOV | avdec_dnxhd | no | steady 48.7 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.2%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | dnxhr_lb | MKV | - | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | dnxhr_lb | MOV | avdec_dnxhd | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | ffv1 | MKV | avdec_ffv1 | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.2%); passed 3 of 3 | Supported |
| video | ffv1_alpha | MKV | avdec_ffv1 | no | steady 60 fps; fade in 58.9 fps (60 steps/s); fade out 60 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 99.4% non-black (plane 127, AB24; file 99.3%); passed 1 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_high | MKV | v4l2h264dec | yes | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.2%); passed 3 of 3 | Supported |
| video | h264_high | MOV | v4l2h264dec | yes | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | h264_high10 | MKV | avdec_h264 | no | steady 51 fps; fade in 60 fps (60 steps/s); fade out 48.2 fps (60 steps/s); picture: 99.4% non-black (plane 127, YU12; file 99.2%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_high10 | MOV | avdec_h264 | no | steady 51.4 fps; fade in 58.9 fps (60 steps/s); fade out 41.9 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | h264_noaudio | MOV | v4l2h264dec | yes | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | hap | MKV | - | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.4% non-black (plane 127, XB24; file 99.3%); passed 3 of 3 | Supported |
| video | hap | MOV | avdec_hap | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.4% non-black (plane 127, XB24; file 99.3%); passed 3 of 3 | Supported |
| video | hap_alpha | MKV | - | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 99.3% non-black (plane 127, AB24; file 99.3%); passed 3 of 3 | Supported |
| video | hap_alpha | MOV | avdec_hap | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 99.4% non-black (plane 127, AB24; file 99.3%); passed 2 of 3 | Supported |
| video | hevc_main | MKV | v4l2slh265dec | yes | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.4% non-black (plane 127, NV12; file 99.2%); passed 2 of 3 | Supported |
| video | hevc_main | MOV | v4l2slh265dec | yes | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.4% non-black (plane 127, NV12; file 99.2%); passed 3 of 3 | Supported |
| video | hevc_main10 | MKV | v4l2slh265dec | yes | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.2% non-black (plane 127, P030; file 99.2%); passed 3 of 3 | Supported |
| video | hevc_main10 | MOV | v4l2slh265dec | yes | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.2% non-black (plane 127, P030; file 99.2%); passed 3 of 3 | Supported |
| video | mjpeg | MKV | jpegdec | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.2% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | mjpeg | MOV | jpegdec | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.2% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | mpeg2 | MKV | avdec_mpeg2video | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.4% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | mpeg2 | MOV | avdec_mpeg2video | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | mpeg2_1080i | MKV | avdec_mpeg2video | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.4% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | mpeg2_1080i | MOV | avdec_mpeg2video | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.4% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | mpeg4_asp | MKV | avdec_mpeg4 | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.2%); passed 3 of 3 | Supported |
| video | mpeg4_asp | MOV | avdec_mpeg4 | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | png_alpha | MKV | pngdec | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 99.4% non-black (plane 127, AB24; file 99.3%); passed 3 of 3 | Supported |
| video | png_alpha | MOV | pngdec | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 99.3% non-black (plane 127, AB24; file 99.3%); passed 3 of 3 | Supported |
| video | prores_422 | MKV | avdec_prores | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 2 of 3 | Supported |
| video | prores_422 | MOV | avdec_prores | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | prores_422hq | MKV | avdec_prores | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | prores_422hq | MOV | avdec_prores | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | prores_4444 | MKV | avdec_prores | no | steady 29.5 fps; fade in 28.3 fps (60 steps/s); fade out 28.9 fps (60 steps/s); picture: 99.4% non-black (plane 127, AB24; file 99.2%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444 | MOV | avdec_prores | no | steady 29.7 fps; fade in 28.3 fps (60 steps/s); fade out 29.4 fps (60 steps/s); picture: 99.4% non-black (plane 127, AB24; file 99.2%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444_alpha | MKV | avdec_prores | no | steady 27.4 fps; fade in 28.8 fps (60 steps/s); fade out 27.1 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 99.3% non-black (plane 127, AB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444_alpha | MOV | avdec_prores | no | steady 20.2 fps; fade in 29.4 fps (60 steps/s); fade out 18.1 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 99.4% non-black (plane 127, AB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444xq | MKV | avdec_prores | no | steady 37.3 fps; fade in 36.9 fps (60 steps/s); fade out 36.5 fps (60 steps/s); picture: 99.3% non-black (plane 127, XB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_4444xq | MOV | avdec_prores | no | steady 37.2 fps; fade in 37.4 fps (60 steps/s); fade out 35.1 fps (60 steps/s); picture: 99.3% non-black (plane 127, XB24; file 99.3%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | prores_lt | MKV | avdec_prores | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.4% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | prores_lt | MOV | avdec_prores | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | prores_proxy | MKV | avdec_prores | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.4% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | prores_proxy | MOV | avdec_prores | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.4% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | qtrle | MKV | - | no | import refused: could not import 1 of 1: "qtrle.mkv": media: ffprobe failed for "qtrle.mkv": exit status 1; passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | qtrle | MOV | avdec_qtrle | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, XB24; file 99.3%); passed 3 of 3 | Supported |
| video | qtrle_alpha | MKV | - | no | import refused: could not import 1 of 1: "qtrle_alpha.mkv": media: ffprobe failed for "qtrle_alpha.mkv": exit status 1; passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | qtrle_alpha | MOV | avdec_qtrle | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); alpha: plane BA24, blend Coverage; picture: 100.0% non-black (plane 127, BA24; file 99.3%); passed 3 of 3 | Supported |
| video | theora | MKV | theoradec | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.3%); passed 3 of 3 | Supported |
| video | vp8 | MKV | avdec_vp8 | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 0.1% non-black (plane 127, YU12; file 0.1%); passed 3 of 3 | Supported |
| video | vp9 | MKV | vp9dec | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.2%); passed 3 of 3 | Supported |
| video | vp9_alpha | MKV | - | no | steady 25.9 fps; fade in 22.4 fps (60 steps/s); fade out 27.1 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 99.4% non-black (plane 127, AB24; file 99.2%); passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| video | wmv2 | MKV | avdec_wmav2, avdec_wmv2 | no | steady 60 fps; fade in 60 fps (60 steps/s); fade out 60 fps (60 steps/s); picture: 99.3% non-black (plane 127, YU12; file 99.2%); passed 3 of 3 | Supported |
| image | apng_anim | APNG | pngdec | no | animated, 30 fps file; steady 30 fps; fade in 30 fps (60 steps/s); fade out 30.6 fps (60 steps/s); picture: 99.4% non-black (plane 127, AB24; file 99.5%); passed 3 of 3 | Supported |
| image | apng_anim_alpha | APNG | pngdec | no | animated, 30 fps file; steady 30 fps; fade in 30 fps (60 steps/s); fade out 30 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 99.4% non-black (plane 127, AB24; file 99.5%); passed 3 of 3 | Supported |
| image | avif | AVIF | - | no | fade in 60 steps/s, fade out 60 steps/s; picture: 100.0% non-black (plane 127, AB24; file 99.9%); passed 3 of 3 | Supported |
| image | avif_anim_30fps | AVIF | - | no | animated, 30 fps file; steady 30 fps; fade in 30 fps (60 steps/s); fade out 30 fps (60 steps/s); picture: 99.5% non-black (plane 127, AB24; file 99.7%); passed 3 of 3 | Supported |
| image | avif_anim_alpha_30fps | AVIF | - | no | animated, 30 fps file; steady 30 fps; fade in 30.6 fps (60 steps/s); fade out 30 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 99.5% non-black (plane 127, AB24; file 99.7%); passed 3 of 3 | Supported |
| image | bmp | BMP | gdkpixbufdec | no | fade in 60 steps/s, fade out 60 steps/s; picture: 100.0% non-black (plane 127, XB24; file 99.9%); passed 3 of 3 | Supported |
| image | gif | GIF | avdec_gif | no | fade in 60 steps/s, fade out 60 steps/s; picture: 100.0% non-black (plane 127, AB24; file 97.9%); passed 3 of 3 | Supported |
| image | gif_alpha | GIF | avdec_gif | no | fade in 60 steps/s, fade out 60 steps/s; alpha: plane AB24, blend Coverage; picture: 50.0% non-black (plane 127, AB24; file 99.9%); passed 3 of 3 | Supported |
| image | gif_anim | GIF | avdec_gif | no | animated, 25 fps file; steady 25.1 fps; fade in 24.7 fps (60 steps/s); fade out 24.2 fps (60 steps/s); picture: 99.3% non-black (plane 127, AB24; file 99.4%); passed 3 of 3 | Supported |
| image | gif_anim_50fps | GIF | avdec_gif | no | animated, 50 fps file; steady 49.9 fps; fade in 50.6 fps (60 steps/s); fade out 49.8 fps (60 steps/s); picture: 99.4% non-black (plane 127, AB24; file 99.2%); passed 3 of 3 | Supported |
| image | gif_anim_alpha | GIF | avdec_gif | no | animated, 25 fps file; steady 25 fps; fade in 24.9 fps (60 steps/s); fade out 24.7 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 49.3% non-black (plane 127, AB24; file 99.4%); passed 3 of 3 | Supported |
| image | jpeg | JPG | jpegdec | no | fade in 60 steps/s, fade out 60 steps/s; picture: 99.9% non-black (plane 127, YU12; file 99.9%); passed 3 of 3 | Supported |
| image | jpeg2000 | JP2 | avdec_jpeg2000 | no | fade in 60 steps/s, fade out 60 steps/s; picture: 100.0% non-black (plane 127, YU12; file 99.9%); passed 3 of 3 | Supported |
| image | jpegxl | JXL | - | no | fade in 60 steps/s, fade out 59.6 steps/s; picture: 100.0% non-black (plane 127, AB24; file 99.9%); passed 3 of 3 | Supported |
| image | png | PNG | pngdec | no | fade in 60 steps/s, fade out 60 steps/s; picture: 100.0% non-black (plane 127, XB24; file 99.9%); passed 3 of 3 | Supported |
| image | png_alpha | PNG | pngdec | no | fade in 60 steps/s, fade out 60 steps/s; alpha: plane AB24, blend Coverage; picture: 100.0% non-black (plane 127, AB24; file 99.9%); passed 3 of 3 | Supported |
| image | tiff | TIFF | gdkpixbufdec | no | fade in 60 steps/s, fade out 60 steps/s; picture: 100.0% non-black (plane 127, AB24; file 99.9%); passed 3 of 3 | Supported |
| image | tiff_alpha | TIFF | gdkpixbufdec | no | fade in 60 steps/s, fade out 60 steps/s; alpha: plane AB24, blend Coverage; picture: 66.7% non-black (plane 127, AB24; file 99.9%); passed 3 of 3 | Supported |
| image | webp | WEBP | webpdec | no | fade in 60 steps/s, fade out 60 steps/s; picture: 100.0% non-black (plane 127, AB24; file 99.9%); passed 3 of 3 | Supported |
| image | webp_alpha | WEBP | webpdec | no | fade in 60 steps/s, fade out 60 steps/s; alpha: plane AB24, blend Coverage; picture: 66.7% non-black (plane 127, AB24; file 99.9%); passed 3 of 3 | Supported |
| image | webp_anim_30fps | WEBP | webpdec | no | animated, 30 fps file; steady 30 fps; fade in 30 fps (60 steps/s); fade out 30 fps (60 steps/s); picture: 99.7% non-black (plane 127, AB24; file ?); passed 3 of 3 | Supported |
| image | webp_anim_alpha_30fps | WEBP | webpdec | no | animated, 30 fps file; steady 30 fps; fade in 30 fps (60 steps/s); fade out 30 fps (60 steps/s); alpha: plane AB24, blend Coverage; picture: 66.2% non-black (plane 127, AB24; file ?); passed 3 of 3 | Supported |
| audio | aac | MKV | avdec_aac | no | HDMI stream running 115/117 samples; passed 3 of 3 | Supported |
| audio | aac | MOV | avdec_aac | no | HDMI stream running 114/116 samples; passed 3 of 3 | Supported |
| audio | ac3_5.1 | MKV | avdec_ac3 | no | HDMI stream running 115/116 samples; passed 3 of 3 | Supported |
| audio | ac3_5.1 | MOV | avdec_ac3 | no | HDMI stream running 115/117 samples; passed 3 of 3 | Supported |
| audio | alac | MKV | - | no | import refused: could not import 1 of 1: "alac.mkv": cannot be played: this system has no GStreamer decoder for audio/x-unknown. Supported video (1080p60 wi; passed 0 of 3 | Raspberry Pi 4 Model B Rev 1.5 - unsupported |
| audio | alac | MOV | avdec_alac | no | HDMI stream running 116/117 samples; passed 3 of 3 | Supported |
| audio | eac3_5.1 | MKV | avdec_eac3 | no | HDMI stream running 114/116 samples; passed 3 of 3 | Supported |
| audio | eac3_5.1 | MOV | avdec_eac3 | no | HDMI stream running 116/117 samples; passed 3 of 3 | Supported |
| audio | flac | MKV | flacdec | no | HDMI stream running 114/116 samples; passed 3 of 3 | Supported |
| audio | mp3 | MKV | mpg123audiodec | no | HDMI stream running 114/116 samples; passed 3 of 3 | Supported |
| audio | mp3 | MOV | mpg123audiodec | no | HDMI stream running 115/117 samples; passed 3 of 3 | Supported |
| audio | opus | MKV | opusdec | no | HDMI stream running 115/117 samples; passed 3 of 3 | Supported |
| audio | pcm_s16 | MKV | - | no | HDMI stream running 115/117 samples; passed 3 of 3 | Supported |
| audio | pcm_s16 | MOV | - | no | HDMI stream running 114/116 samples; passed 3 of 3 | Supported |
| audio | pcm_s24 | MKV | - | no | HDMI stream running 114/116 samples; passed 3 of 3 | Supported |
| audio | pcm_s24 | MOV | - | no | HDMI stream running 114/116 samples; passed 3 of 3 | Supported |
| audio | vorbis | MKV | vorbisdec | no | HDMI stream running 114/116 samples; passed 3 of 3 | Supported |
| audio | wma | MKV | avdec_wmav2 | no | HDMI stream running 114/116 samples; passed 3 of 3 | Supported |