android_external_ffmpeg/pi-util/TESTMESA.txt
2025-06-24 22:46:48 -05:00

82 lines
3.1 KiB
Text

# Setup & Build instructions for testing Argon30 mesa support (on Pi4)
# These assume that the drm_mmal test for Sand8 has been built on this Pi
# as build relies on many of the same files
# 1st get everything required to build ffmpeg
# If sources aren't already enabled on your Pi then enable them
sudo su
sed "s/#deb-src/deb-src/" /etc/apt/sources.list > /tmp/sources.list
sed "s/#deb-src/deb-src/" /etc/apt/sources.list.d/raspi.list > /tmp/raspi.list
mv /tmp/sources.list /etc/apt/
mv /tmp/raspi.list /etc/apt/sources.list.d/
apt update
# Get dependancies
sudo apt build-dep ffmpeg
sudo apt install meson libepoxy-dev libxcb-dri3-dev libxcb1-dev libx11-dev libx11-xcb-dev libdrm-dev
# Enable H265 V4L2 request decoder
sudo su
echo dtoverlay=rpivid-v4l2 >> /boot/config.txt
# You may also want to add more CMA if you are going to try 4k videos
# Change the dtoverlay=vc4-fkms-v3d line in config.txt to read
# dtoverlay=vc4-fkms-v3d,cma-512
reboot
# Check it has turned up
ls -la /dev/video*
# This should include video19
# crw-rw----+ 1 root video 81, 7 Aug 4 17:25 /dev/video19
# Currently on the Pi the linux headers from the debian distro don't match
# the kernel that we ship and we need to update them - hopefully this step
# will be unneeded in the future
sudo apt install git bc bison flex libssl-dev make
git clone --depth=1 https://github.com/raspberrypi/linux --branch rpi-5.10.y
cd linux
KERNEL=kernel7l
make bcm2711_defconfig
make headers_install
sudo cp -r usr/include/linux /usr/include
cd ..
# Config - this builds a staticly linked ffmpeg which is easier for testing
pi-util/conf_native.sh --noshared
# Build (this is a bit dull)
# If you want to poke the source the libavdevice/egl_vout.c contains the
# output code -
cd out/armv7-static-rel
# Check that you have actually configured V4L2 request
grep HEVC_V4L2REQUEST config.h
# You are hoping for
# #define CONFIG_HEVC_V4L2REQUEST_HWACCEL 1
# if you get 0 then the config has failed
make -j6
# Grab test streams
wget http://www.jell.yfish.us/media/jellyfish-3-mbps-hd-h264.mkv
wget http://www.jell.yfish.us/media/jellyfish-3-mbps-hd-hevc.mkv
wget http://www.jell.yfish.us/media/jellyfish-3-mbps-hd-hevc-10bit.mkv
# Test i420 output (works currently)
./ffmpeg -no_cvt_hw -vcodec h264_v4l2m2m -i jellyfish-3-mbps-hd-h264.mkv -f vout_egl -
# Test Sand8 output - doesn't currently work but should once you have
# Sand8 working in drm_mmal. I can't guarantee that this will work as
# I can't test this path with a known working format, but the debug looks
# good. If this doesn't work & drm_mmal does with sand8 then come back to me
# The "show_all 1" forces vout to display every frame otherwise it drops any
# frame that would cause it to block
./ffmpeg -no_cvt_hw -hwaccel drm -vcodec hevc -i jellyfish-3-mbps-hd-hevc.mkv -show_all 1 -f vout_egl -
# Test Sand30 - doesn't currently work
# (Beware that when FFmpeg errors out it often leaves your teminal window
# in a state where you need to reset it)
./ffmpeg -no_cvt_hw -hwaccel drm -vcodec hevc -i jellyfish-3-mbps-hd-hevc-10bit.mkv -f vout_egl -