blob: 0f9902a5620c769aa1d0514593a5a924a2dab1e2 [file] [log] [blame]
#!/system/bin/sh
# shellcheck disable=SC2039
# shellcheck disable=SC2086
# shellcheck disable=SC2181
# shellcheck disable=SC2155
# shellcheck disable=SC2166
# shellcheck disable=SC2320
# shellcheck disable=SC3006
# shellcheck disable=SC3010
# shellcheck disable=SC3018
# shellcheck disable=SC3037
# shellcheck disable=SC3057
# shellcheck disable=SC3060
#############################################################################
# Copyright (c) 2014 Linaro
# Copyright (c) 2025 Qualcomm Inc
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# Linaro <linaro-dev@lists.linaro.org>
# Milosz Wasilewski <milosz.wasilewski@oss.qualcomm.com>
#############################################################################
# Individual and batch test definitions
ALL_AUDIO_CODECS="audio_codec_aac audio_codec_flac audio_codec_mp3 \
audio_codec_tremolo"
ALL_SPEECH_CODECS="speech_codec_amrnb_dec speech_codec_amrnb_enc \
speech_codec_amrwb_dec speech_codec_amrwb_enc"
ALL_VIDEO_CODECS="video_codec_h264_dec video_codec_h264_enc \
video_codec_h263_dec video_codec_h263_enc"
ALL_CODECS="${ALL_AUDIO_CODECS} ${ALL_SPEECH_CODECS} ${ALL_VIDEO_CODECS}"
ALL_TESTS="${ALL_CODECS}"
# Script arguments for selecting tests to run
ALL_AUDIO_CODECS_OPT="all_audio_codecs"
ALL_SPEECH_CODECS_OPT="all_speech_codecs"
ALL_VIDEO_CODECS_OPT="all_video_codecs"
ALL_CODECS_OPT="all_codecs"
ALL_TESTS_OPT="all_tests"
func_md5(){
if [ -n "$(which md5)" ]; then
md5 "$@"
else
md5sum "$@"
fi
}
usage() {
echo
echo "Usage: $0 [-h] [-t TESTS] [-v]"
echo "Run all or specified Android userspace tests"
echo
printf " %-10s\t%s\n" "-h" "Print this help message"
printf " %-10s\t%s\n" "-t TESTS" "Run only specified TESTS from the following:"
printf " %-10s\t%s\n" "" "Individual tests:"
for CODEC in ${ALL_CODECS}; do
printf " %-10s\t\t%s\n" "" "${CODEC}"
done
printf " %-10s\t%s\n" "" "Batch tests:"
printf " %-10s\t\t%s\n" "" "${ALL_AUDIO_CODECS_OPT}"
printf " %-10s\t\t%s\n" "" "${ALL_SPEECH_CODECS_OPT}"
printf " %-10s\t\t%s\n" "" "${ALL_VIDEO_CODECS_OPT}"
printf " %-10s\t\t%s\n" "" "${ALL_CODECS_OPT}"
printf " %-10s\t\t%s\n" "" "${ALL_TESTS_OPT}"
printf " %-10s\t%s\n" "-v" "Turn on verbose output"
echo
echo "Example:"
printf "\t%s -t \"audio_codec_aac speech_codec_amrnb_dec\"\n" "$0"
}
run_audio_codec_aac()
{
local TEST_FILE="/data/linaro-android-userspace-test/audio-codec/Retribution.wav"
local OUT_FILE="/data/local/tmp/audio-codec-test.out"
local EXPECTED_MD5SUM="f35771514701eaf5055b1705a4c660b7"
echo
echo "Running AAC encoder test"
if [ ! -f ${TEST_FILE} ]; then
echo "ERROR: AAC encoder test file ${TEST_FILE} does not exist"
echo "AAC encoder test: FAILED"
echo "[audio_codec_aac]: test failed"
return 1
fi
if [ "${VERBOSE}" -eq "1" ]; then
libaacenc_test ${TEST_FILE} ${OUT_FILE}
else
libaacenc_test ${TEST_FILE} ${OUT_FILE} > /dev/null 2>&1
fi
if [ "$?" -ne "0" ]; then
echo "ERROR: AAC encoder test returned error"
echo "AAC encoder test: FAILED"
echo "[audio_codec_aac]: test failed"
return 1
fi
echo "Checking MD5SUM of output file"
local MD5SUM="$(func_md5 ${OUT_FILE})"
MD5SUM=${MD5SUM%% *}
rm ${OUT_FILE}
if [[ "${MD5SUM}" == "${EXPECTED_MD5SUM}" ]]; then
echo "AAC encoder test: PASSED"
echo "[audio_codec_aac]: test passed"
else
echo "ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
echo "AAC encoder test: FAILED"
echo "[audio_codec_aac]: test failed"
return 1
fi
}
run_audio_codec_flac()
{
echo
echo "Running FLAC encoder/decoder test"
if [ "${VERBOSE}" -eq "1" ]; then
libFLAC_test
else
libFLAC_test > /dev/null 2>&1
fi
if [ "$?" -eq "0" ]; then
echo "FLAC encoder/decoder test: PASSED"
echo "[audio_codec_flac]: test passed"
else
echo "ERROR: FLAC encoder/decoder test returned error"
echo "FLAC encoder/decoder test: FAILED"
echo "[audio_codec_flac]: test failed"
return 1
fi
}
run_audio_codec_mp3()
{
local TEST_FILE="/data/linaro-android-userspace-test/audio-codec/Retribution.mp3"
local OUT_FILE="/data/local/tmp/audio-codec-test.out"
local EXPECTED_MD5SUM="bf1456a93dfc53e474c30c9fca75c647"
echo
echo "Running MP3 decoder test"
if [ ! -f ${TEST_FILE} ]; then
echo "ERROR: MP3 test file ${TEST_FILE} does not exist"
echo "MP3 decoder test: FAILED"
echo "[audio_codec_mp3]: test failed"
return 1
fi
if [ "${VERBOSE}" -eq "1" ]; then
libstagefright_mp3dec_test ${TEST_FILE} ${OUT_FILE}
else
libstagefright_mp3dec_test ${TEST_FILE} ${OUT_FILE} > /dev/null 2>&1
fi
if [ "$?" -ne "0" ]; then
echo "ERROR: MP3 decoder test returned error"
echo "MP3 decoder test: FAILED"
echo "[audio_codec_mp3]: test failed"
return 1
fi
echo "Checking MD5SUM of output file"
local MD5SUM="$(func_md5 ${OUT_FILE})"
MD5SUM=${MD5SUM%% *}
rm ${OUT_FILE}
if [[ "${MD5SUM}" == "${EXPECTED_MD5SUM}" ]]; then
echo "MP3 decoder test: PASSED"
echo "[audio_codec_mp3]: test passed"
else
echo "ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
echo "MP3 decoder test: FAILED"
echo "[audio_codec_mp3]: test failed"
return 1
fi
}
run_audio_codec_tremolo()
{
local TEST_FILE="/data/linaro-android-userspace-test/audio-codec/Retribution.ogg"
local OUT_FILE="/data/local/tmp/audio-codec-test.out"
local EXPECTED_MD5SUM="49097459eb06bb624ff3d09f959d0423"
echo
echo "Running Tremolo decoder test"
if [ ! -f ${TEST_FILE} ]; then
echo "ERROR: Tremolo test file ${TEST_FILE} does not exist"
echo "Tremolo decoder test: FAILED"
echo "[audio_codec_tremolo]: test failed"
return 1
fi
if [ "${VERBOSE}" -eq "1" ]; then
libvorbisidec_test ${TEST_FILE} ${OUT_FILE}
else
libvorbisidec_test ${TEST_FILE} ${OUT_FILE} > /dev/null 2>&1
fi
if [ "$?" -ne "0" ]; then
echo "ERROR: Tremolo decoder test returned error"
echo "Tremolo decoder test: FAILED"
echo "[audio_codec_tremolo]: test failed"
return 1
fi
echo "Checking MD5SUM of output file"
local MD5SUM="$(func_md5 ${OUT_FILE})"
MD5SUM=${MD5SUM%% *}
rm ${OUT_FILE}
if [[ "${MD5SUM}" == "${EXPECTED_MD5SUM}" ]]; then
echo "Tremolo decoder test: PASSED"
echo "[audio_codec_tremolo]: test passed"
else
echo "ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
echo "Tremolo decoder test: FAILED"
echo "[audio_codec_tremolo]: test failed"
return 1
fi
}
run_speech_codec()
{
if [ "$#" -ne "6" ]; then
return 1
fi
local IS_ENCODE="${1}"
local TAG="${2}"
local NAME="${3}"
local DATA_DIR="${4}"
local MD5SUM_FILE="${5}"
local RUN="${6}"
local OUT_FILE="/data/local/tmp/speech-codec-test.out"
echo
echo "${TAG}: Running ${NAME}"
if [ ! -f ${MD5SUM_FILE} ]; then
echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
if [ "${IS_ENCODE}" -eq "1" ]; then
echo -n "${TAG}: Encoding and verifying output"
else
echo -n "${TAG}: Decoding and verifying output"
fi
while read -r LINE
do
if [[ "${LINE:0:1}" == "#" ]]; then
continue
fi
echo -n "."
TEST_FILE="${LINE%%['\t' ]*}"
if [ -z "${TEST_FILE}" ]; then
echo "${TAG}: ERROR: Invalid test file/MD5SUM pair"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
# Remove the test file, leaving the MD5SUMs
LINE="${LINE#"${TEST_FILE}"}"
TEST_FILE="${DATA_DIR}/${TEST_FILE}"
if [ ! -f ${TEST_FILE} ]; then
echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
local INDEX=0
local result=true
for EXPECTED_MD5SUM in ${LINE}; do
local cmd=""
if [ "${IS_ENCODE}" -eq "1" ]; then
cmd="${RUN} +M${INDEX} ${TEST_FILE} ${OUT_FILE}"
if [ "${VERBOSE}" -eq "1" ]; then
${cmd}
else
${cmd} > /dev/null 2>&1
fi
else
cmd="${RUN} ${TEST_FILE} ${OUT_FILE}"
if [ "${VERBOSE}" -eq "1" ]; then
${cmd}
else
${cmd} > /dev/null 2>&1
fi
fi
if [ "$?" -ne "0" ]; then
echo
echo "${TAG}: ${cmd}"
echo "${TAG}: ERROR: ${NAME} returned error"
result=false
continue
fi
local MD5SUM="$(func_md5 ${OUT_FILE})"
MD5SUM="${MD5SUM%% *}"
if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then
echo
echo "${TAG}: ${cmd}"
echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
result=false
continue
fi
((INDEX++))
done
done < ${MD5SUM_FILE}
echo "done"
if [ -f ${OUT_FILE} ]; then
rm ${OUT_FILE}
fi
if $result; then
echo "${TAG}: ${NAME}: PASSED"
echo "[${TAG}]: test passed"
else
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
fi
}
run_speech_codec_amrnb_dec()
{
local TAG="speech_codec_amrnb_dec"
local NAME="AMR NB decoder test"
local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrnb"
local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec"
run_speech_codec 0 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrnbdec_test"
return $?
}
run_speech_codec_amrnb_enc()
{
local TAG="speech_codec_amrnb_enc"
local NAME="AMR NB encoder test"
local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrnb"
local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc"
run_speech_codec 1 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrnbenc_test"
return $?
}
run_speech_codec_amrwb_dec()
{
local TAG="speech_codec_amrwb_dec"
local NAME="AMR WB decoder test"
local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrwb"
local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec"
run_speech_codec 0 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrwbdec_test"
return $?
}
run_speech_codec_amrwb_enc()
{
local TAG="speech_codec_amrwb_enc"
local NAME="AMR WB encoder test"
local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrwb"
local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc"
run_speech_codec 1 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrwbenc_test"
return $?
}
run_video_codec_h264_dec()
{
local TAG="video_codec_h264_dec"
local NAME="H.264 decoder test"
local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h264"
local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec"
local RUN="libstagefright_h264dec_test"
local OUT_FILE="/data/local/tmp/video-codec-test.out"
echo
echo "${TAG}: Running ${NAME}"
if [ ! -f ${MD5SUM_FILE} ]; then
echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
echo -n "${TAG}: Decoding and verifying output"
local TEST_FILE=""
local EXPECTED_MD5SUM=""
local LINE=0
while read -r TEST_FILE EXPECTED_MD5SUM
do
((LINE++))
# Skip comment or empty lines
if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then
continue
fi
echo -n "."
if [ -z "${EXPECTED_MD5SUM}" ]; then
echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
TEST_FILE="${DATA_DIR}/${TEST_FILE}"
if [ ! -f ${TEST_FILE} ]; then
echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
if [ "${VERBOSE}" -eq "1" ]; then
${RUN} -O${OUT_FILE} ${TEST_FILE}
else
${RUN} -O${OUT_FILE} ${TEST_FILE} > /dev/null 2>&1
fi
if [ "$?" -ne "0" ]; then
echo
echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
local MD5SUM="$(func_md5 ${OUT_FILE})"
MD5SUM="${MD5SUM%% *}"
if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then
echo
echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
done < ${MD5SUM_FILE}
echo "done"
if [ -f ${OUT_FILE} ]; then
rm ${OUT_FILE}
fi
echo "${TAG}: ${NAME}: PASSED"
echo "[${TAG}]: test passed"
return $?
}
run_video_codec_h264_enc()
{
local TAG="video_codec_h264_enc"
local NAME="H.264 encoder test"
local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h264"
local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc"
local RUN="libstagefright_h264enc_test"
local OUT_FILE="/data/local/tmp/video-codec-test.out"
echo
echo "${TAG}: Running ${NAME}"
if [ ! -f ${MD5SUM_FILE} ]; then
echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
echo -n "${TAG}: Encoding and verifying output"
local TEST_FILE=""
local OUT_WIDTH=""
local OUT_HEIGHT=""
local OUT_FRAMERATE=""
local OUT_BITRATE=""
local EXPECTED_MD5SUM=""
local LINE=0
local result=true
while read -r TEST_FILE OUT_WIDTH OUT_HEIGHT OUT_FRAMERATE OUT_BITRATE EXPECTED_MD5SUM
do
((LINE++))
# Skip comment or empty lines
if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then
continue
fi
echo -n "."
if [ -z "${OUT_WIDTH}" -o -z "${OUT_HEIGHT}" -o -z "${OUT_FRAMERATE}" -o -z "${OUT_BITRATE}" -o -z "${EXPECTED_MD5SUM}" ]; then
echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
TEST_FILE="${DATA_DIR}/${TEST_FILE}"
if [ ! -f ${TEST_FILE} ]; then
echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
local cmd="${RUN} ${TEST_FILE} ${OUT_FILE} ${OUT_WIDTH} ${OUT_HEIGHT} ${OUT_FRAMERATE} ${OUT_BITRATE}"
if [ "${VERBOSE}" -eq "1" ]; then
$cmd
else
${cmd} > /dev/null 2>&1
fi
if [ "$?" -ne "0" ]; then
echo
echo "${TAG}: ${cmd}"
echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}"
result=false
continue
fi
local MD5SUM="$(func_md5 ${OUT_FILE})"
MD5SUM="${MD5SUM%% *}"
if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then
echo
echo "${TAG}: ${cmd}"
echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
result=false
continue
fi
done < ${MD5SUM_FILE}
echo "done"
if [ -f ${OUT_FILE} ]; then
rm ${OUT_FILE}
fi
if ${result}; then
echo "${TAG}: ${NAME}: PASSED"
echo "[${TAG}]: test passed"
else
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
fi
return 0
}
run_video_codec_h263_dec()
{
local TAG="video_codec_h263_dec"
local NAME="H.263 decoder test"
local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h263"
local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec"
local RUN="libstagefright_m4vh263dec_test"
local OUT_FILE="/data/local/tmp/video-codec-test.out"
echo
echo "${TAG}: Running ${NAME}"
if [ ! -f ${MD5SUM_FILE} ]; then
echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
echo -n "${TAG}: Decoding and verifying output"
local TEST_FILE=""
local OUT_WIDTH=""
local OUT_HEIGHT=""
local EXPECTED_MD5SUM=""
local LINE=0
while read -r TEST_FILE OUT_WIDTH OUT_HEIGHT EXPECTED_MD5SUM
do
((LINE++))
# Skip comment or empty lines
if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then
continue
fi
echo -n "."
if [ -z "${OUT_WIDTH}" -o -z "${OUT_HEIGHT}" -o -z "${EXPECTED_MD5SUM}" ]; then
echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
TEST_FILE="${DATA_DIR}/${TEST_FILE}"
if [ ! -f ${TEST_FILE} ]; then
echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
if [ "${VERBOSE}" -eq "1" ]; then
${RUN} ${TEST_FILE} ${OUT_FILE} ${OUT_WIDTH} ${OUT_HEIGHT}
else
${RUN} ${TEST_FILE} ${OUT_FILE} ${OUT_WIDTH} ${OUT_HEIGHT} > /dev/null 2>&1
fi
if [ "$?" -ne "0" ]; then
echo
echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
local MD5SUM="$(func_md5 ${OUT_FILE})"
MD5SUM="${MD5SUM%% *}"
if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then
echo
echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
done < ${MD5SUM_FILE}
echo "done"
if [ -f ${OUT_FILE} ]; then
rm ${OUT_FILE}
fi
echo "${TAG}: ${NAME}: PASSED"
echo "[${TAG}]: test passed"
return $?
}
run_video_codec_h263_enc()
{
local TAG="video_codec_h263_enc"
local NAME="H.263 encoder test"
local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h263"
local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc"
local RUN="libstagefright_m4vh263enc_test"
local OUT_FILE="/data/local/tmp/video-codec-test.out"
echo
echo "${TAG}: Running ${NAME}"
if [ ! -f ${MD5SUM_FILE} ]; then
echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
echo -n "${TAG}: Encoding and verifying output"
local TEST_FILE=""
local OUT_WIDTH=""
local OUT_HEIGHT=""
local OUT_FRAMERATE=""
local OUT_BITRATE=""
local EXPECTED_MD5SUM=""
local LINE=0
while read -r TEST_FILE OUT_WIDTH OUT_HEIGHT OUT_FRAMERATE OUT_BITRATE EXPECTED_MD5SUM
do
((LINE++))
# Skip comment or empty lines
if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then
continue
fi
echo -n "."
if [ -z "${OUT_WIDTH}" -o -z "${OUT_HEIGHT}" -o -z "${OUT_FRAMERATE}" -o -z "${OUT_BITRATE}" -o -z "${EXPECTED_MD5SUM}" ]; then
echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
TEST_FILE="${DATA_DIR}/${TEST_FILE}"
if [ ! -f ${TEST_FILE} ]; then
echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
if [ "${VERBOSE}" -eq "1" ]; then
${RUN} ${TEST_FILE} ${OUT_FILE} mpeg4 ${OUT_WIDTH} ${OUT_HEIGHT} ${OUT_FRAMERATE} ${OUT_BITRATE}
else
${RUN} ${TEST_FILE} ${OUT_FILE} mpeg4 ${OUT_WIDTH} ${OUT_HEIGHT} ${OUT_FRAMERATE} ${OUT_BITRATE} > /dev/null 2>&1
fi
if [ "$?" -ne "0" ]; then
echo
echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
return 1
fi
local MD5SUM="$(func_md5 ${OUT_FILE})"
MD5SUM="${MD5SUM%% *}"
if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then
echo
echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')"
echo "${TAG}: ${NAME}: FAILED"
echo "[${TAG}]: test failed"
echo "${MD5SUM}" >> /sdcard/md5.txt
return 1
fi
done < ${MD5SUM_FILE}
echo "done"
if [ -f ${OUT_FILE} ]; then
rm ${OUT_FILE}
fi
echo "${TAG}: ${NAME}: PASSED"
echo "[${TAG}]: test passed"
return $?
}
run_tests() {
local RET=0
for TEST in $TESTS;
do
if [[ "${ALL_TESTS}" == *"${TEST}"* ]]; then
# Function names follow the naming convention of:
# run_<test_name>
run_${TEST}
RET=$(( RET + $? ))
else
echo
echo "Unrecognized test '${TEST}'"
usage
RET=$(( RET + 1 ))
break
fi
done
return ${RET}
}
# Terse output by default
VERBOSE=0
TESTS=""
while getopts "hvt:" OPT
do
case $OPT in
h)
usage
exit 1
;;
t)
TESTS=$OPTARG
;;
v)
VERBOSE=1
;;
*)
usage
exit
esac
done
if [ -z "${TESTS}" ]; then
# Run all tests by default
TESTS="${ALL_TESTS}"
echo "Running all tests"
else
# Expand out any batch tests
TESTS="${TESTS//${ALL_AUDIO_CODECS_OPT}/${ALL_AUDIO_CODECS}}"
TESTS="${TESTS//${ALL_SPEECH_CODECS_OPT}/${ALL_SPEECH_CODECS}}"
TESTS="${TESTS//${ALL_VIDEO_CODECS_OPT}/${ALL_VIDEO_CODECS}}"
TESTS="${TESTS//${ALL_CODECS_OPT}/${ALL_CODECS}}"
TESTS="${TESTS//${ALL_TESTS_OPT}/${ALL_TESTS}}"
fi
run_tests
return $?