vpx/test/decode_to_md5.sh
Jim Bankoski 0d730f95f0 decode_to_md5_test: fixes and runs quick encode and checks decode
This test checks if there's any basic change to the bitstream or default
encoder by running an encode and checking that the md5 from the decode
doesn't change.

Any change to the default encoder or bitstream should be accompanied by
a change to the md5 in this file.

Change-Id: Ibdd5a1442296fd3e946823ec1f43e8ac4e66dd34
2016-10-03 11:12:13 -07:00

68 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
## Copyright (c) 2016, Alliance for Open Media. All rights reserved
##
## This source code is subject to the terms of the BSD 2 Clause License and
## the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
## was not distributed with this source code in the LICENSE file, you can
## obtain it at www.aomedia.org/license/software. If the Alliance for Open
## Media Patent License 1.0 was not distributed with this source code in the
## PATENTS file, you can obtain it at www.aomedia.org/license/patent.
##
## This file tests the libaom decode_to_md5 example. To add new tests to this
## file, do the following:
## 1. Write a shell function (this is your test).
## 2. Add the function to decode_to_md5_tests (on a new line).
##
. $(dirname $0)/tools_common.sh
# Environment check: Make sure input is available:
# $AOM_IVF_FILE and $AV1_IVF_FILE are required.
decode_to_md5_verify_environment() {
if [ "$(av1_encode_available)" != "yes" ] && [ ! -e "${AV1_IVF_FILE}" ]; then
return 1
fi
}
# Runs decode_to_md5 on $1 and captures the md5 sum for the final frame. $2 is
# interpreted as codec name and used solely to name the output file. $3 is the
# expected md5 sum: It must match that of the final frame.
decode_to_md5() {
local decoder="${LIBAOM_BIN_PATH}/decode_to_md5${AOM_TEST_EXE_SUFFIX}"
local input_file="$1"
local codec="$2"
local expected_md5="$3"
local output_file="${AOM_TEST_OUTPUT_DIR}/decode_to_md5_${codec}"
if [ ! -x "${decoder}" ]; then
elog "${decoder} does not exist or is not executable."
return 1
fi
eval "${AOM_TEST_PREFIX}" "${decoder}" "${input_file}" "${output_file}" \
${devnull}
[ -e "${output_file}" ] || return 1
local md5_last_frame="$(tail -n1 "${output_file}" | awk '{print $1}')"
local actual_md5="$(echo "${md5_last_frame}" | awk '{print $1}')"
[ "${actual_md5}" = "${expected_md5}" ] || return 1
}
decode_to_md5_av1() {
# expected MD5 sum for the last frame.
local expected_md5="fef4c2a45fb89ef5f3a156d4a59aadc0"
local file="${AV1_IVF_FILE}"
if [ "$(av1_decode_available)" = "yes" ]; then
if [ ! -e "${AV1_IVF_FILE}" ]; then
file="${AOM_TEST_OUTPUT_DIR}/test_encode.ivf"
encode_yuv_raw_input_av1 "${file}" --ivf
fi
decode_to_md5 "${file}" "av1" "${expected_md5}"
fi
}
decode_to_md5_tests="decode_to_md5_av1"
run_tests decode_to_md5_verify_environment "${decode_to_md5_tests}"