17765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org#!/bin/sh 27765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## 37765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## Copyright (c) 2014 The WebM project authors. All Rights Reserved. 47765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## 57765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## Use of this source code is governed by a BSD-style license 67765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## that can be found in the LICENSE file in the root of the source 77765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## tree. An additional intellectual property rights grant can be found 87765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## in the file PATENTS. All contributing project authors may 97765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## be found in the AUTHORS file in the root of the source tree. 107765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## 117765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## This file tests the libvpx twopass_encoder example. To add new tests to this 127765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## file, do the following: 137765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## 1. Write a shell function (this is your test). 147765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## 2. Add the function to twopass_encoder_tests (on a new line). 157765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org## 167765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org. $(dirname $0)/tools_common.sh 177765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org 187765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org# Environment check: $YUV_RAW_INPUT is required. 197765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.orgtwopass_encoder_verify_environment() { 207765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org if [ ! -e "${YUV_RAW_INPUT}" ]; then 217765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org echo "Libvpx test data must exist in LIBVPX_TEST_DATA_PATH." 227765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org return 1 237765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org fi 247765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org} 257765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org 267765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org# Runs twopass_encoder using the codec specified by $1. 277765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.orgtwopass_encoder() { 287765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org local encoder="${LIBVPX_BIN_PATH}/twopass_encoder${VPX_TEST_EXE_SUFFIX}" 297765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org local codec="$1" 307765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org local output_file="${VPX_TEST_OUTPUT_DIR}/twopass_encoder_${codec}.ivf" 317765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org 3288b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org if [ ! -x "${encoder}" ]; then 3388b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org elog "${encoder} does not exist or is not executable." 3488b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org return 1 3588b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org fi 367765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org 3795aa45d73048f952dcaad0037429cc6751b34f2fjohannkoenig@google.com eval "${VPX_TEST_PREFIX}" "${encoder}" "${codec}" "${YUV_RAW_INPUT_WIDTH}" \ 387765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org "${YUV_RAW_INPUT_HEIGHT}" "${YUV_RAW_INPUT}" "${output_file}" \ 397765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org ${devnull} 407765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org 417765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org [ -e "${output_file}" ] || return 1 427765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org} 437765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org 447765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.orgtwopass_encoder_vp8() { 457765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org if [ "$(vp8_encode_available)" = "yes" ]; then 467765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org twopass_encoder vp8 || return 1 477765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org fi 487765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org} 497765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org 507765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org# TODO(tomfinegan): Add a frame limit param to twopass_encoder and enable this 517765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org# test. VP9 is just too slow right now: This test takes 31m16s+ on a fast 527765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org# machine. 537765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.orgDISABLED_twopass_encoder_vp9() { 547765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org if [ "$(vp9_encode_available)" = "yes" ]; then 557765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org twopass_encoder vp9 || return 1 567765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org fi 577765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org} 587765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org 597765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.orgtwopass_encoder_tests="twopass_encoder_vp8 607765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org DISABLED_twopass_encoder_vp9" 617765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org 627765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.orgrun_tests twopass_encoder_verify_environment "${twopass_encoder_tests}" 63