Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 1 | #!/bin/sh |
Yaowu Xu | 9c01aa1 | 2016-09-01 14:32:49 -0700 | [diff] [blame] | 2 | ## Copyright (c) 2016, Alliance for Open Media. All rights reserved |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 3 | ## |
Yaowu Xu | 9c01aa1 | 2016-09-01 14:32:49 -0700 | [diff] [blame] | 4 | ## 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. |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 10 | ## |
Yaowu Xu | 9c01aa1 | 2016-09-01 14:32:49 -0700 | [diff] [blame] | 11 | ## This file tests aomdec. To add new tests to this file, do the following: |
| 12 | ## 1. Write a shell function (this is your test). |
| 13 | ## 2. Add the function to aomdec_tests (on a new line). |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 14 | ## |
| 15 | . $(dirname $0)/tools_common.sh |
| 16 | |
| 17 | # Environment check: Make sure input is available. |
| 18 | aomdec_verify_environment() { |
Jim Bankoski | f7f0437 | 2016-05-27 14:31:29 -0700 | [diff] [blame] | 19 | if [ "$(av1_encode_available)" != "yes" ] ; then |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 20 | if [ ! -e "${AV1_IVF_FILE}" ] || \ |
| 21 | [ ! -e "${AV1_OBU_ANNEXB_FILE}" ] || \ |
| 22 | [ ! -e "${AV1_OBU_SEC5_FILE}" ] || \ |
| 23 | [ ! -e "${AV1_WEBM_FILE}" ]; then |
| 24 | elog "Libaom test data must exist before running this test script when " \ |
| 25 | " encoding is disabled. " |
Jim Bankoski | f7f0437 | 2016-05-27 14:31:29 -0700 | [diff] [blame] | 26 | return 1 |
| 27 | fi |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 28 | fi |
| 29 | if [ -z "$(aom_tool_path aomdec)" ]; then |
| 30 | elog "aomdec not found. It must exist in LIBAOM_BIN_PATH or its parent." |
| 31 | return 1 |
| 32 | fi |
| 33 | } |
| 34 | |
| 35 | # Wrapper function for running aomdec with pipe input. Requires that |
| 36 | # LIBAOM_BIN_PATH points to the directory containing aomdec. $1 is used as the |
| 37 | # input file path and shifted away. All remaining parameters are passed through |
| 38 | # to aomdec. |
| 39 | aomdec_pipe() { |
Tom Finegan | ef64ee8 | 2018-07-10 11:35:40 -0700 | [diff] [blame] | 40 | local input="$1" |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 41 | shift |
Jim Bankoski | f7f0437 | 2016-05-27 14:31:29 -0700 | [diff] [blame] | 42 | if [ ! -e "${input}" ]; then |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 43 | elog "Input file ($input) missing in aomdec_pipe()" |
| 44 | return 1 |
Jim Bankoski | f7f0437 | 2016-05-27 14:31:29 -0700 | [diff] [blame] | 45 | fi |
| 46 | cat "${file}" | aomdec - "$@" ${devnull} |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 47 | } |
| 48 | |
Jim Bankoski | f7f0437 | 2016-05-27 14:31:29 -0700 | [diff] [blame] | 49 | |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 50 | # Wrapper function for running aomdec. Requires that LIBAOM_BIN_PATH points to |
| 51 | # the directory containing aomdec. $1 one is used as the input file path and |
| 52 | # shifted away. All remaining parameters are passed through to aomdec. |
| 53 | aomdec() { |
Tom Finegan | ef64ee8 | 2018-07-10 11:35:40 -0700 | [diff] [blame] | 54 | local decoder="$(aom_tool_path aomdec)" |
| 55 | local input="$1" |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 56 | shift |
| 57 | eval "${AOM_TEST_PREFIX}" "${decoder}" "$input" "$@" ${devnull} |
| 58 | } |
| 59 | |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 60 | aomdec_can_decode_av1() { |
| 61 | if [ "$(av1_decode_available)" = "yes" ]; then |
| 62 | echo yes |
| 63 | fi |
| 64 | } |
| 65 | |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 66 | aomdec_av1_ivf() { |
Jim Bankoski | f7f0437 | 2016-05-27 14:31:29 -0700 | [diff] [blame] | 67 | if [ "$(aomdec_can_decode_av1)" = "yes" ]; then |
Tom Finegan | ef64ee8 | 2018-07-10 11:35:40 -0700 | [diff] [blame] | 68 | local file="${AV1_IVF_FILE}" |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 69 | if [ ! -e "${file}" ]; then |
James Zern | bb98789 | 2020-04-28 18:33:02 -0700 | [diff] [blame] | 70 | encode_yuv_raw_input_av1 "${file}" --ivf || return 1 |
Jim Bankoski | f7f0437 | 2016-05-27 14:31:29 -0700 | [diff] [blame] | 71 | fi |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 72 | aomdec "${AV1_IVF_FILE}" --summary --noblit |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 73 | fi |
| 74 | } |
| 75 | |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 76 | aomdec_av1_ivf_error_resilient() { |
| 77 | if [ "$(aomdec_can_decode_av1)" = "yes" ]; then |
Tom Finegan | ef64ee8 | 2018-07-10 11:35:40 -0700 | [diff] [blame] | 78 | local file="av1.error-resilient.ivf" |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 79 | if [ ! -e "${file}" ]; then |
James Zern | bb98789 | 2020-04-28 18:33:02 -0700 | [diff] [blame] | 80 | encode_yuv_raw_input_av1 "${file}" --ivf --error-resilient=1 || return 1 |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 81 | fi |
| 82 | aomdec "${file}" --summary --noblit |
| 83 | fi |
| 84 | } |
| 85 | |
James Zern | eda52bb | 2020-11-06 14:57:11 -0800 | [diff] [blame] | 86 | ivf_multithread() { |
| 87 | local row_mt="$1" |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 88 | if [ "$(aomdec_can_decode_av1)" = "yes" ]; then |
Tom Finegan | ef64ee8 | 2018-07-10 11:35:40 -0700 | [diff] [blame] | 89 | local file="${AV1_IVF_FILE}" |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 90 | if [ ! -e "${file}" ]; then |
James Zern | bb98789 | 2020-04-28 18:33:02 -0700 | [diff] [blame] | 91 | encode_yuv_raw_input_av1 "${file}" --ivf || return 1 |
Jim Bankoski | f7f0437 | 2016-05-27 14:31:29 -0700 | [diff] [blame] | 92 | fi |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 93 | for threads in 2 3 4 5 6 7 8; do |
James Zern | eda52bb | 2020-11-06 14:57:11 -0800 | [diff] [blame] | 94 | aomdec "${file}" --summary --noblit --threads=$threads --row-mt=$row_mt \ |
| 95 | || return 1 |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 96 | done |
| 97 | fi |
| 98 | } |
| 99 | |
James Zern | eda52bb | 2020-11-06 14:57:11 -0800 | [diff] [blame] | 100 | aomdec_av1_ivf_multithread() { |
| 101 | ivf_multithread 0 # --row-mt=0 |
| 102 | } |
| 103 | |
| 104 | aomdec_av1_ivf_multithread_row_mt() { |
| 105 | ivf_multithread 1 # --row-mt=1 |
| 106 | } |
| 107 | |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 108 | aomdec_aom_ivf_pipe_input() { |
| 109 | if [ "$(aomdec_can_decode_av1)" = "yes" ]; then |
Tom Finegan | ef64ee8 | 2018-07-10 11:35:40 -0700 | [diff] [blame] | 110 | local file="${AV1_IVF_FILE}" |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 111 | if [ ! -e "${file}" ]; then |
James Zern | bb98789 | 2020-04-28 18:33:02 -0700 | [diff] [blame] | 112 | encode_yuv_raw_input_av1 "${file}" --ivf || return 1 |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 113 | fi |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 114 | aomdec_pipe "${AV1_IVF_FILE}" --summary --noblit |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 115 | fi |
| 116 | } |
| 117 | |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 118 | aomdec_av1_obu_annexb() { |
| 119 | if [ "$(aomdec_can_decode_av1)" = "yes" ]; then |
Tom Finegan | ef64ee8 | 2018-07-10 11:35:40 -0700 | [diff] [blame] | 120 | local file="${AV1_OBU_ANNEXB_FILE}" |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 121 | if [ ! -e "${file}" ]; then |
James Zern | bb98789 | 2020-04-28 18:33:02 -0700 | [diff] [blame] | 122 | encode_yuv_raw_input_av1 "${file}" --obu --annexb=1 || return 1 |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 123 | fi |
| 124 | aomdec "${file}" --summary --noblit --annexb |
| 125 | fi |
| 126 | } |
| 127 | |
| 128 | aomdec_av1_obu_section5() { |
| 129 | if [ "$(aomdec_can_decode_av1)" = "yes" ]; then |
Tom Finegan | ef64ee8 | 2018-07-10 11:35:40 -0700 | [diff] [blame] | 130 | local file="${AV1_OBU_SEC5_FILE}" |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 131 | if [ ! -e "${file}" ]; then |
James Zern | bb98789 | 2020-04-28 18:33:02 -0700 | [diff] [blame] | 132 | encode_yuv_raw_input_av1 "${file}" --obu || return 1 |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 133 | fi |
| 134 | aomdec "${file}" --summary --noblit |
| 135 | fi |
| 136 | } |
| 137 | |
| 138 | aomdec_av1_webm() { |
| 139 | if [ "$(aomdec_can_decode_av1)" = "yes" ] && \ |
| 140 | [ "$(webm_io_available)" = "yes" ]; then |
Tom Finegan | ef64ee8 | 2018-07-10 11:35:40 -0700 | [diff] [blame] | 141 | local file="${AV1_WEBM_FILE}" |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 142 | if [ ! -e "${file}" ]; then |
James Zern | bb98789 | 2020-04-28 18:33:02 -0700 | [diff] [blame] | 143 | encode_yuv_raw_input_av1 "${file}" || return 1 |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 144 | fi |
| 145 | aomdec "${AV1_WEBM_FILE}" --summary --noblit |
| 146 | fi |
| 147 | } |
| 148 | |
| 149 | aomdec_tests="aomdec_av1_ivf |
Tom Finegan | 8ab4414 | 2018-04-27 14:57:52 -0700 | [diff] [blame] | 150 | aomdec_av1_ivf_multithread |
James Zern | eda52bb | 2020-11-06 14:57:11 -0800 | [diff] [blame] | 151 | aomdec_av1_ivf_multithread_row_mt |
Jerome Jiang | 0438f48 | 2021-04-15 17:41:59 -0700 | [diff] [blame] | 152 | aomdec_aom_ivf_pipe_input" |
| 153 | |
| 154 | if [ ! "$(realtime_only_build)" = "yes" ]; then |
| 155 | aomdec_tests="${aomdec_tests} |
| 156 | aomdec_av1_ivf_error_resilient |
| 157 | aomdec_av1_obu_annexb |
| 158 | aomdec_av1_obu_section5 |
| 159 | aomdec_av1_webm" |
| 160 | fi |
Yaowu Xu | f883b42 | 2016-08-30 14:01:10 -0700 | [diff] [blame] | 161 | |
| 162 | run_tests aomdec_verify_environment "${aomdec_tests}" |