blob: 214755f216aed4e6ba0d2973199f99bcd9b41805 [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:
Tom Finegan8ab44142018-04-27 14:57:52 -070019# $AV1_IVF_FILE is 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() {
Tom Finegan8ab44142018-04-27 14:57:52 -070030 local decoder="$(aom_tool_path decode_to_md5)"
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}" \
James Zernbb987892020-04-28 18:33:02 -070042 ${devnull} || return 1
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}')"
Urvang Joshi4f91a132018-02-06 13:00:03 -080048 if [ "${actual_md5}" = "${expected_md5}" ]; then
49 return 0
50 else
51 elog "MD5 mismatch:"
52 elog "Expected: ${expected_md5}"
53 elog "Actual: ${actual_md5}"
54 return 1
55 fi
Tom Finegancee7b942014-04-24 14:28:45 -070056}
57
Tom Finegan8ab44142018-04-27 14:57:52 -070058DISABLED_decode_to_md5_av1() {
Tom Finegancee7b942014-04-24 14:28:45 -070059 # expected MD5 sum for the last frame.
Sebastien Alaiwancb29f642018-03-05 12:50:21 +010060 local expected_md5="567dd6d4b7a7170edddbf58bbcc3aff1"
Jim Bankoski0d730f92016-06-13 07:16:38 -070061 local file="${AV1_IVF_FILE}"
Tom Finegancee7b942014-04-24 14:28:45 -070062
Urvang Joshi774c8da2018-02-16 17:02:52 -080063 # TODO(urvang): Check in the encoded file (like libvpx does) to avoid
64 # encoding every time.
Yaowu Xuf883b422016-08-30 14:01:10 -070065 if [ "$(av1_decode_available)" = "yes" ]; then
Jim Bankoski0d730f92016-06-13 07:16:38 -070066 if [ ! -e "${AV1_IVF_FILE}" ]; then
67 file="${AOM_TEST_OUTPUT_DIR}/test_encode.ivf"
James Zernbb987892020-04-28 18:33:02 -070068 encode_yuv_raw_input_av1 "${file}" --ivf || return 1
Jim Bankoski0d730f92016-06-13 07:16:38 -070069 fi
70 decode_to_md5 "${file}" "av1" "${expected_md5}"
Tom Finegancee7b942014-04-24 14:28:45 -070071 fi
72}
73
Tom Finegan8ab44142018-04-27 14:57:52 -070074# TODO(tomfinegan): Enable when the bitstream stabilizes.
75decode_to_md5_tests="DISABLED_decode_to_md5_av1"
Tom Finegancee7b942014-04-24 14:28:45 -070076
77run_tests decode_to_md5_verify_environment "${decode_to_md5_tests}"