blob: 62c02e10b56ce1abaeef3a6eede5779d247a455f [file] [log] [blame]
Tom Finegancee7b942014-04-24 14:28:45 -07001#!/bin/sh
Yaowu Xu2ab7ff02016-09-02 12:04:54 -07002## Copyright (c) 2016, Alliance for Open Media. All rights reserved
Tom Finegancee7b942014-04-24 14:28:45 -07003##
Yaowu Xu2ab7ff02016-09-02 12:04:54 -07004## This source code is subject to the terms of the BSD 2 Clause License and
5## the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6## was not distributed with this source code in the LICENSE file, you can
7## obtain it at www.aomedia.org/license/software. If the Alliance for Open
8## Media Patent License 1.0 was not distributed with this source code in the
9## PATENTS file, you can obtain it at www.aomedia.org/license/patent.
Tom Finegancee7b942014-04-24 14:28:45 -070010##
Yaowu Xu2ab7ff02016-09-02 12:04:54 -070011## This file tests the libaom decode_to_md5 example. To add new tests to this
12## file, do the following:
13## 1. Write a shell function (this is your test).
14## 2. Add the function to decode_to_md5_tests (on a new line).
Tom Finegancee7b942014-04-24 14:28:45 -070015##
16. $(dirname $0)/tools_common.sh
17
18# Environment check: Make sure input is available:
Yaowu Xu8982e202016-10-03 10:54:02 -070019# $AOM_IVF_FILE and $AV1_IVF_FILE are required.
Tom Finegancee7b942014-04-24 14:28:45 -070020decode_to_md5_verify_environment() {
Jim Bankoski0d730f92016-06-13 07:16:38 -070021 if [ "$(av1_encode_available)" != "yes" ] && [ ! -e "${AV1_IVF_FILE}" ]; then
Tom Finegancee7b942014-04-24 14:28:45 -070022 return 1
23 fi
24}
25
Tom Finegan1d29ce52014-04-30 11:03:15 -070026# Runs decode_to_md5 on $1 and captures the md5 sum for the final frame. $2 is
27# interpreted as codec name and used solely to name the output file. $3 is the
28# expected md5 sum: It must match that of the final frame.
Tom Finegancee7b942014-04-24 14:28:45 -070029decode_to_md5() {
Yaowu Xuf883b422016-08-30 14:01:10 -070030 local decoder="${LIBAOM_BIN_PATH}/decode_to_md5${AOM_TEST_EXE_SUFFIX}"
Tom Finegancee7b942014-04-24 14:28:45 -070031 local input_file="$1"
32 local codec="$2"
Tom Finegan1d29ce52014-04-30 11:03:15 -070033 local expected_md5="$3"
Yaowu Xuf883b422016-08-30 14:01:10 -070034 local output_file="${AOM_TEST_OUTPUT_DIR}/decode_to_md5_${codec}"
Tom Finegancee7b942014-04-24 14:28:45 -070035
Tom Finegan12672c22014-06-16 10:57:00 -070036 if [ ! -x "${decoder}" ]; then
37 elog "${decoder} does not exist or is not executable."
38 return 1
39 fi
Tom Finegancee7b942014-04-24 14:28:45 -070040
Yaowu Xuf883b422016-08-30 14:01:10 -070041 eval "${AOM_TEST_PREFIX}" "${decoder}" "${input_file}" "${output_file}" \
Tom Finegan926a6f62014-07-10 15:17:05 -070042 ${devnull}
Tom Finegancee7b942014-04-24 14:28:45 -070043
44 [ -e "${output_file}" ] || return 1
45
James Zernc0348212014-07-30 10:50:01 -070046 local md5_last_frame="$(tail -n1 "${output_file}" | awk '{print $1}')"
47 local actual_md5="$(echo "${md5_last_frame}" | awk '{print $1}')"
Tom Finegan1d29ce52014-04-30 11:03:15 -070048 [ "${actual_md5}" = "${expected_md5}" ] || return 1
Tom Finegancee7b942014-04-24 14:28:45 -070049}
50
Yaowu Xuf883b422016-08-30 14:01:10 -070051decode_to_md5_av1() {
Tom Finegancee7b942014-04-24 14:28:45 -070052 # expected MD5 sum for the last frame.
Urvang Joshi32604802017-03-10 13:59:34 -080053 local expected_md5="07d80669e56d7019f8b9372ea66ef7ae"
Jim Bankoski0d730f92016-06-13 07:16:38 -070054 local file="${AV1_IVF_FILE}"
Tom Finegancee7b942014-04-24 14:28:45 -070055
Yaowu Xuf883b422016-08-30 14:01:10 -070056 if [ "$(av1_decode_available)" = "yes" ]; then
Jim Bankoski0d730f92016-06-13 07:16:38 -070057 if [ ! -e "${AV1_IVF_FILE}" ]; then
58 file="${AOM_TEST_OUTPUT_DIR}/test_encode.ivf"
59 encode_yuv_raw_input_av1 "${file}" --ivf
60 fi
61 decode_to_md5 "${file}" "av1" "${expected_md5}"
Tom Finegancee7b942014-04-24 14:28:45 -070062 fi
63}
64
Jim Bankoski0d730f92016-06-13 07:16:38 -070065decode_to_md5_tests="decode_to_md5_av1"
Tom Finegancee7b942014-04-24 14:28:45 -070066
67run_tests decode_to_md5_verify_environment "${decode_to_md5_tests}"