Skip to content

Commit

Permalink
add h26forge test
Browse files Browse the repository at this point in the history
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]>
  • Loading branch information
Benjamin Gaignard committed Dec 13, 2024
1 parent 5ba8918 commit a135bc0
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 0 deletions.
31 changes: 31 additions & 0 deletions config/core/rootfs-configs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,37 @@ rootfs_configs:
imagesize: 2GB
debos_memory: 8G

bookworm-gst-h26forge:
rootfs_type: debos
debian_release: bookworm
arch_list:
- amd64
- arm64
- armhf
extra_packages_remove:
- bash
- e2fslibs
- e2fsprogs
- klibc-utils
- libext2fs2
- libgnutls30
- libklibc
- libncursesw6
- libp11-kit0
- libunistring2
- sensible-utils
extra_packages:
- ca-certificates
- python3-requests
- python3-yaml
- rustc
- unzip
- wget
script: "scripts/bookworm-gst-h26forge.sh"
test_overlay: "overlays/fluster"
imagesize: 2GB
debos_memory: 8G

bookworm-igt:
rootfs_type: debos
debian_release: bookworm
Expand Down
65 changes: 65 additions & 0 deletions config/rootfs/debos/scripts/bookworm-gst-h26forge.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#!/bin/bash

H26FORGE_URL=https://github.com/h26forge/h26forge.git
H26FORGE=target/release/h26forge
output_dir="test_videos"
tool_args="--mp4 --mp4-rand-size --safestart"
generation_args="--small --ignore-edge-intra-pred --ignore-ipcm --config config/default.json"

# Configure git
git config --global user.email "[email protected]"
git config --global user.name "KernelCI Bot"

GSTREAMER_URL=https://gitlab.freedesktop.org/gstreamer/gstreamer.git

mkdir -p /var/tests/gstreamer && cd /var/tests/gstreamer

git clone --depth 1 $GSTREAMER_URL .

meson setup build \
--wrap-mode=nofallback \
-Dauto_features=disabled \
-Dbad=enabled \
-Dbase=enabled \
-Dgood=enabled \
-Dugly=disabled \
-Dgst-plugins-bad:ivfparse=enabled \
-Dgst-plugins-bad:debugutils=enabled \
-Dgst-plugins-bad:v4l2codecs=enabled \
-Dgst-plugins-bad:videoparsers=enabled \
-Dgst-plugins-base:app=enabled \
-Dgst-plugins-base:playback=enabled \
-Dgst-plugins-base:tools=enabled \
-Dgst-plugins-base:typefind=enabled \
-Dgst-plugins-base:videoconvertscale=enabled \
-Dgst-plugins-good:matroska=enabled \
-Dgst-plugins-good:v4l2=enabled \
-Dtools=enabled \
-Ddevtools=disabled \
-Dges=disabled \
-Dlibav=disabled \
-Drtsp_server=disabled

ninja -C build
ninja -C build install

mkdir -p /opt/h26forge && cd /opt/h26forge

git clone --depth 1 $H26FORGE_URL .

cargo build --release

if [ ! -d h264forge ]; then
echo "can't clone $H26FORGE_URL"
exit 1
fi
if [ ! -f $H26FORGE ]; then
echo "h26forge not found"
exit 1
fi

mkdir -p $output_dir
for i in $(seq -f "%04g" 0 99); do
$H26FORGE $tool_args generate $generation_args -o $output_dir/video$i.264
gst-launch-1.0 filesrc location=$output_dir/video$i.264.mp4 ! parsebin ! fakesink
done

0 comments on commit a135bc0

Please sign in to comment.