Skip to content

Commit e4166e1

Browse files
author
Benjamin Gaignard
committed
add h26forge test
Create a rootfs with rustc compiler to compile and run h26forge. h26forge will generate h264 test files to be parsed with Gstreamer h264parse element. Signed-off-by: Benjamin Gaignard <[email protected]>
1 parent 5ba8918 commit e4166e1

File tree

2 files changed

+137
-0
lines changed

2 files changed

+137
-0
lines changed

config/core/rootfs-configs.yaml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,37 @@ rootfs_configs:
105105
imagesize: 2GB
106106
debos_memory: 8G
107107

108+
bookworm-gst-h26forge:
109+
rootfs_type: debos
110+
debian_release: bookworm
111+
arch_list:
112+
- amd64
113+
- arm64
114+
- armhf
115+
extra_packages_remove:
116+
- bash
117+
- e2fslibs
118+
- e2fsprogs
119+
- klibc-utils
120+
- libext2fs2
121+
- libgnutls30
122+
- libklibc
123+
- libncursesw6
124+
- libp11-kit0
125+
- libunistring2
126+
- sensible-utils
127+
extra_packages:
128+
- ca-certificates
129+
- python3-requests
130+
- python3-yaml
131+
- rustc
132+
- unzip
133+
- wget
134+
script: "scripts/bookworm-gst-h26forge.sh"
135+
test_overlay: "overlays/fluster"
136+
imagesize: 2GB
137+
debos_memory: 8G
138+
108139
bookworm-igt:
109140
rootfs_type: debos
110141
debian_release: bookworm
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
#!/bin/bash
2+
set -e
3+
4+
BUILD_DEPS="\
5+
g++ \
6+
flex \
7+
bison \
8+
ninja-build \
9+
git \
10+
python3-pip \
11+
pkg-config \
12+
openssl \
13+
ca-certificates \
14+
jq \
15+
wget \
16+
unzip \
17+
software-properties-common \
18+
rustc \
19+
cargo
20+
"
21+
22+
GST_DEPS="\
23+
libglib2.0-dev \
24+
libgudev-1.0-dev
25+
"
26+
27+
export DEBIAN_FRONTEND=noninteractive
28+
29+
# Install dependencies
30+
echo 'deb http://deb.debian.org/debian bookworm-backports main' >>/etc/apt/sources.list
31+
apt-get update
32+
apt-get install --no-install-recommends -y ${BUILD_DEPS} ${GST_DEPS} curl
33+
apt-mark manual python3 libpython3-stdlib python3 libglib2.0-0 libgudev-1.0
34+
35+
# Get latest meson from pip
36+
pip3 install meson --break-system-packages
37+
38+
H26FORGE_URL=https://github.com/h26forge/h26forge.git
39+
H26FORGE=target/release/h26forge
40+
output_dir="test_videos"
41+
tool_args="--mp4 --mp4-rand-size --safestart"
42+
generation_args="--small --ignore-edge-intra-pred --ignore-ipcm --config config/default.json"
43+
44+
# Configure git
45+
git config --global user.email "[email protected]"
46+
git config --global user.name "KernelCI Bot"
47+
48+
GSTREAMER_URL=https://gitlab.freedesktop.org/gstreamer/gstreamer.git
49+
50+
mkdir -p /var/tests/gstreamer && cd /var/tests/gstreamer
51+
52+
git clone --depth 1 $GSTREAMER_URL .
53+
54+
meson setup build \
55+
--wrap-mode=nofallback \
56+
-Dauto_features=disabled \
57+
-Dbad=enabled \
58+
-Dbase=enabled \
59+
-Dgood=enabled \
60+
-Dugly=disabled \
61+
-Dgst-plugins-bad:ivfparse=enabled \
62+
-Dgst-plugins-bad:debugutils=enabled \
63+
-Dgst-plugins-bad:v4l2codecs=enabled \
64+
-Dgst-plugins-bad:videoparsers=enabled \
65+
-Dgst-plugins-base:app=enabled \
66+
-Dgst-plugins-base:playback=enabled \
67+
-Dgst-plugins-base:tools=enabled \
68+
-Dgst-plugins-base:typefind=enabled \
69+
-Dgst-plugins-base:videoconvertscale=enabled \
70+
-Dgst-plugins-good:matroska=enabled \
71+
-Dgst-plugins-good:v4l2=enabled \
72+
-Dtools=enabled \
73+
-Ddevtools=disabled \
74+
-Dges=disabled \
75+
-Dlibav=disabled \
76+
-Drtsp_server=disabled
77+
78+
ninja -C build
79+
ninja -C build install
80+
81+
mkdir -p /opt/h26forge && cd /opt/h26forge
82+
83+
git clone --depth 1 $H26FORGE_URL .
84+
85+
cargo update
86+
cargo build --release
87+
88+
if [ ! -f $H26FORGE ]; then
89+
echo "h26forge not found"
90+
exit 1
91+
fi
92+
93+
mkdir -p $output_dir
94+
for i in $(seq -f "%04g" 0 99); do
95+
$H26FORGE $tool_args generate $generation_args -o $output_dir/video$i.264
96+
gst-launch-1.0 filesrc location=$output_dir/video$i.264.mp4 ! parsebin ! fakesink
97+
done
98+
99+
########################################################################
100+
# Cleanup: remove files and packages we don't want in the images #
101+
########################################################################
102+
rm -rf /var/tests
103+
104+
apt-get remove --purge -y ${BUILD_DEPS}
105+
apt-get autoremove --purge -y
106+
apt-get clean

0 commit comments

Comments
 (0)