|
| 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