aom_multi_resolution_encoder.sh 2.54 KB
Newer Older
Adrian Grange's avatar
Adrian Grange committed
1 2 3 4 5 6 7 8 9 10
#!/bin/sh
##
##  Copyright (c) 2014 The WebM project authors. All Rights Reserved.
##
##  Use of this source code is governed by a BSD-style license
##  that can be found in the LICENSE file in the root of the source
##  tree. An additional intellectual property rights grant can be found
##  in the file PATENTS.  All contributing project authors may
##  be found in the AUTHORS file in the root of the source tree.
##
11
##  This file tests the libaom aom_multi_resolution_encoder example. To add new
Adrian Grange's avatar
Adrian Grange committed
12 13
##  tests to this file, do the following:
##    1. Write a shell function (this is your test).
14
##    2. Add the function to aom_mre_tests (on a new line).
Adrian Grange's avatar
Adrian Grange committed
15 16 17 18
##
. $(dirname $0)/tools_common.sh

# Environment check: $YUV_RAW_INPUT is required.
19
aom_multi_resolution_encoder_verify_environment() {
Adrian Grange's avatar
Adrian Grange committed
20 21 22 23 24
  if [ "$(aom_config_option_enabled CONFIG_MULTI_RES_ENCODING)" = "yes" ]; then
    if [ ! -e "${YUV_RAW_INPUT}" ]; then
      elog "Libaom test data must exist in LIBAOM_TEST_DATA_PATH."
      return 1
    fi
25
    local readonly app="aom_multi_resolution_encoder"
Adrian Grange's avatar
Adrian Grange committed
26 27 28 29 30 31 32
    if [ -z "$(aom_tool_path "${app}")" ]; then
      elog "${app} not found. It must exist in LIBAOM_BIN_PATH or its parent."
      return 1
    fi
  fi
}

33 34 35 36
# Runs aom_multi_resolution_encoder. Simply forwards all arguments to
# aom_multi_resolution_encoder after building path to the executable.
aom_mre() {
  local readonly encoder="$(aom_tool_path aom_multi_resolution_encoder)"
Adrian Grange's avatar
Adrian Grange committed
37 38 39 40 41 42 43 44
  if [ ! -x "${encoder}" ]; then
    elog "${encoder} does not exist or is not executable."
    return 1
  fi

  eval "${AOM_TEST_PREFIX}" "${encoder}" "$@" ${devnull}
}

45 46 47 48
aom_multi_resolution_encoder_three_formats() {
  local readonly output_files="${AOM_TEST_OUTPUT_DIR}/aom_mre_0.ivf
                               ${AOM_TEST_OUTPUT_DIR}/aom_mre_1.ivf
                               ${AOM_TEST_OUTPUT_DIR}/aom_mre_2.ivf"
Adrian Grange's avatar
Adrian Grange committed
49 50

  if [ "$(aom_config_option_enabled CONFIG_MULTI_RES_ENCODING)" = "yes" ]; then
51
    if [ "$(aom_encode_available)" = "yes" ]; then
Adrian Grange's avatar
Adrian Grange committed
52 53 54 55 56 57
      # Param order:
      #  Input width
      #  Input height
      #  Input file path
      #  Output file names
      #  Output PSNR
58
      aom_mre "${YUV_RAW_INPUT_WIDTH}" \
Adrian Grange's avatar
Adrian Grange committed
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
        "${YUV_RAW_INPUT_HEIGHT}" \
        "${YUV_RAW_INPUT}" \
        ${output_files} \
        0

      for output_file in ${output_files}; do
        if [ ! -e "${output_file}" ]; then
          elog "Missing output file: ${output_file}"
          return 1
        fi
      done
    fi
  fi
}

74 75
aom_mre_tests="aom_multi_resolution_encoder_three_formats"
run_tests aom_multi_resolution_encoder_verify_environment "${aom_mre_tests}"