uvg266/tests/util.sh

75 lines
1.6 KiB
Bash
Raw Normal View History

#!/bin/sh
# Helper functions for test scripts.
set -eu${BASH+o pipefail}
# Temporary files for encoder input and output.
yuvfile="$(mktemp)"
hevcfile="$(mktemp)"
cleanup() {
rm -rf "${yuvfile}" "${hevcfile}"
}
trap cleanup EXIT
print_and_run() {
printf '\n\n$ %s\n' "$*"
"$@"
}
prepare() {
cleanup
print_and_run \
ffmpeg -f lavfi -i "mandelbrot=size=${1}" \
-vframes "${2}" -pix_fmt yuv420p -f yuv4mpegpipe \
"${yuvfile}"
}
valgrind_test() {
dimensions="$1"
shift
frames="$1"
shift
prepare "${dimensions}" "${frames}"
# If $KVZ_TEST_VALGRIND is defined and equal to "1", run the test with
# valgrind. Otherwise, run without valgrind.
if [ "${KVZ_TEST_VALGRIND:-0}" = '1' ]; then
valgrind='valgrind --leak-check=full --error-exitcode=1 --'
else
valgrind=''
fi
# No quotes for $valgrind because it expands to multiple (or zero)
# arguments.
print_and_run \
libtool execute $valgrind \
2018-10-18 07:29:34 +00:00
../src/kvazaar --cpuid=0 -i "${yuvfile}" "--input-res=${dimensions}" -o "${hevcfile}" "$@" "--threads=0" "--no-wpp"
print_and_run \
2018-10-17 06:06:35 +00:00
DecoderAnalyserAppStatic -b "${hevcfile}"
cleanup
}
encode_test() {
dimensions="$1"
shift
frames="$1"
shift
expected_status="$1"
shift
prepare "${dimensions}" "${frames}"
set +e
print_and_run \
libtool execute \
2018-10-18 07:29:34 +00:00
../src/kvazaar --cpuid=0 -i "${yuvfile}" "--input-res=${dimensions}" -o "${hevcfile}" "$@" "--threads=0" "--no-wpp"
actual_status="$?"
set -e
[ ${actual_status} -eq ${expected_status} ]
}