82 lines
3.1 KiB
Text
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 -
|
|
|
|
|
|
|