ref: 93ef0e0e7856e03e607cf0bf8c8b8859b2ff9755
parent: 090574c0bee16d010741f34271137e926bf81e3d
parent: 8b83d15da345e32925ff1d527db706ac4f32900a
author: Tom Finegan <tomfinegan@google.com>
date: Fri Aug 8 15:19:03 EDT 2014
Merge "test/vpxenc.sh: Convert vpxenc() to a simple wrapper."
--- a/test/vpxenc.sh
+++ b/test/vpxenc.sh
@@ -15,7 +15,7 @@
##
. $(dirname $0)/tools_common.sh
-TEST_FRAMES=10
+readonly TEST_FRAMES=10
# Environment check: Make sure input is available.
vpxenc_verify_environment() {@@ -41,112 +41,168 @@
# Echoes yes to stdout when vpxenc exists according to vpx_tool_available().
vpxenc_available() {- [ -n $(vpx_tool_available vpxenc) ] && echo yes
+ [ -n "$(vpx_tool_available vpxenc)" ] && echo yes
}
-# Wrapper function for running vpxenc. Positional parameters are interpreted as
-# follows:
-# 1 - codec name
-# 2 - input width
-# 3 - input height
-# 4 - number of frames to encode
-# 5 - path to input file
-# 6 - path to output file
-# Note: The output file path must end in .ivf to output an IVF file.
-# 7 - extra flags
-# Note: Extra flags currently supports a special case: when set to "-"
-# input is piped to vpxenc via cat.
-vpxenc() {- local encoder="${LIBVPX_BIN_PATH}/vpxenc${VPX_TEST_EXE_SUFFIX}"- local codec="${1}"- local width=${2}- local height=${3}- local frames=${4}- local input=${5}- local output="${VPX_TEST_OUTPUT_DIR}/${6}"- local extra_flags=${7}+# Wrapper function for running vpxenc with pipe input. Requires that
+# LIBVPX_BIN_PATH points to the directory containing vpxenc. $1 is used as the
+# input file path and shifted away. All remaining parameters are passed through
+# to vpxenc.
+vpxenc_pipe() {+ local readonly encoder="${LIBVPX_BIN_PATH}/vpxenc${VPX_TEST_EXE_SUFFIX}"+ local readonly input="$1"
+ shift
+ cat "${input}" | eval "${VPX_TEST_PREFIX}" "${encoder}" - "$@" ${devnull}+}
- # Because --ivf must be within the command line to get IVF from vpxenc.
- if echo "${output}" | egrep -q 'ivf$'; then- use_ivf=--ivf
- else
- unset use_ivf
- fi
-
- if [ "${extra_flags}" = "-" ]; then- pipe_input=yes
- extra_flags=${8}- else
- unset pipe_input
- fi
-
- if [ -z "${pipe_input}" ]; then- eval "${VPX_TEST_PREFIX}" "${encoder}" --codec=${codec} --width=${width} \- --height=${height} --limit=${frames} ${use_ivf} ${extra_flags} \- --output="${output}" "${input}" ${devnull}- else
- cat "${input}" \- | eval "${VPX_TEST_PREFIX}" "${encoder}" --codec=${codec} \- --width=${width} --height=${height} --limit=${frames} ${use_ivf} \- ${extra_flags} --output="${output}" - ${devnull}- fi
-
- if [ ! -e "${output}" ]; then- # Return non-zero exit status: output file doesn't exist, so something
- # definitely went wrong.
- return 1
- fi
+# Wrapper function for running vpxenc. Requires that LIBVPX_BIN_PATH points to
+# the directory containing vpxenc. $1 one is used as the input file path and
+# shifted away. All remaining parameters are passed through to vpxenc.
+vpxenc() {+ local readonly encoder="${LIBVPX_BIN_PATH}/vpxenc${VPX_TEST_EXE_SUFFIX}"+ local readonly input="${1}"+ shift
+ eval "${VPX_TEST_PREFIX}" "${encoder}" "$input" "$@" ${devnull}}
vpxenc_vp8_ivf() {if [ "$(vpxenc_can_encode_vp8)" = "yes" ]; then
- vpxenc vp8 ${YUV_RAW_INPUT_WIDTH} ${YUV_RAW_INPUT_HEIGHT} ${TEST_FRAMES} \- "${YUV_RAW_INPUT}" vp8.ivf+ local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8.ivf"+ vpxenc --codec=vp8 \
+ --width="${YUV_RAW_INPUT_WIDTH}" \+ --height="${YUV_RAW_INPUT_HEIGHT}" \+ --limit="${TEST_FRAMES}" \+ --ivf \
+ --output="${output}" \+ "${YUV_RAW_INPUT}"+
+ if [ ! -e "${output}" ]; then+ elog "Output file does not exist."
+ return 1
+ fi
fi
}
-vpxenc_vp8_ivf_pipe_input() {+vpxenc_vp8_ivf_piped_input() {if [ "$(vpxenc_can_encode_vp8)" = "yes" ]; then
- vpxenc vp8 ${YUV_RAW_INPUT_WIDTH} ${YUV_RAW_INPUT_HEIGHT} ${TEST_FRAMES} \- "${YUV_RAW_INPUT}" vp8.ivf -+ local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8_piped_input.ivf"+ cat "${YUV_RAW_INPUT}" \+ | vpxenc --codec=vp8 \
+ --width="${YUV_RAW_INPUT_WIDTH}" \+ --height="${YUV_RAW_INPUT_HEIGHT}" \+ --limit="${TEST_FRAMES}" \+ --ivf \
+ --output="${output}" \+ -
+
+ if [ ! -e "${output}" ]; then+ elog "Output file does not exist."
+ return 1
+ fi
fi
}
vpxenc_vp8_webm() {- if [ "$(vpxenc_can_encode_vp8)" = "yes" ] &&
- [ "$(webm_io_available)" = "yes" ] ; then
- vpxenc vp8 ${YUV_RAW_INPUT_WIDTH} ${YUV_RAW_INPUT_HEIGHT} ${TEST_FRAMES} \- "${YUV_RAW_INPUT}" vp8.webm+ if [ "$(vpxenc_can_encode_vp8)" = "yes" ] && \
+ [ "$(webm_io_available)" = "yes" ]; then
+ local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8.webm"+ vpxenc --codec=vp8 \
+ --width="${YUV_RAW_INPUT_WIDTH}" \+ --height="${YUV_RAW_INPUT_HEIGHT}" \+ --limit="${TEST_FRAMES}" \+ --output="${output}" \+ "${YUV_RAW_INPUT}"+
+ if [ ! -e "${output}" ]; then+ elog "Output file does not exist."
+ return 1
+ fi
fi
}
vpxenc_vp9_ivf() {if [ "$(vpxenc_can_encode_vp9)" = "yes" ]; then
- vpxenc vp9 ${YUV_RAW_INPUT_WIDTH} ${YUV_RAW_INPUT_HEIGHT} ${TEST_FRAMES} \- "${YUV_RAW_INPUT}" vp9.ivf+ local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9.ivf"+ vpxenc --codec=vp9 \
+ --width="${YUV_RAW_INPUT_WIDTH}" \+ --height="${YUV_RAW_INPUT_HEIGHT}" \+ --limit="${TEST_FRAMES}" \+ --ivf \
+ --output="${output}" \+ "${YUV_RAW_INPUT}"+
+ if [ ! -e "${output}" ]; then+ elog "Output file does not exist."
+ return 1
+ fi
fi
}
vpxenc_vp9_webm() {- if [ "$(vpxenc_can_encode_vp9)" = "yes" ] &&
- [ "$(webm_io_available)" = "yes" ] ; then
- vpxenc vp9 ${YUV_RAW_INPUT_WIDTH} ${YUV_RAW_INPUT_HEIGHT} ${TEST_FRAMES} \- "${YUV_RAW_INPUT}" vp9.webm+ if [ "$(vpxenc_can_encode_vp9)" = "yes" ] && \
+ [ "$(webm_io_available)" = "yes" ]; then
+ local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9.webm"+ vpxenc --codec=vp9 \
+ --width="${YUV_RAW_INPUT_WIDTH}" \+ --height="${YUV_RAW_INPUT_HEIGHT}" \+ --limit="${TEST_FRAMES}" \+ --output="${output}" \+ "${YUV_RAW_INPUT}"+
+ if [ ! -e "${output}" ]; then+ elog "Output file does not exist."
+ return 1
+ fi
fi
}
vpxenc_vp9_ivf_lossless() {if [ "$(vpxenc_can_encode_vp9)" = "yes" ]; then
- vpxenc vp9 ${YUV_RAW_INPUT_WIDTH} ${YUV_RAW_INPUT_HEIGHT} ${TEST_FRAMES} \- "${YUV_RAW_INPUT}" vp9_lossless.ivf --lossless=1+ local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9_lossless.ivf"+ vpxenc --codec=vp9 \
+ --width="${YUV_RAW_INPUT_WIDTH}" \+ --height="${YUV_RAW_INPUT_HEIGHT}" \+ --limit="${TEST_FRAMES}" \+ --ivf \
+ --output="${output}" \+ --lossless=1 \
+ --test-decode=fatal \
+ "${YUV_RAW_INPUT}"+
+ if [ ! -e "${output}" ]; then+ elog "Output file does not exist."
+ return 1
+ fi
fi
}
+vpxenc_vp9_ivf_minq0_maxq0() {+ if [ "$(vpxenc_can_encode_vp9)" = "yes" ]; then
+ local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9_lossless_minq0_maxq0.ivf"+ vpxenc --codec=vp9 \
+ --width="${YUV_RAW_INPUT_WIDTH}" \+ --height="${YUV_RAW_INPUT_HEIGHT}" \+ --limit="${TEST_FRAMES}" \+ --ivf \
+ --output="${output}" \+ --min-q=0 \
+ --max-q=0 \
+ --test-decode=fatal \
+ "${YUV_RAW_INPUT}"+
+ if [ ! -e "${output}" ]; then+ elog "Output file does not exist."
+ return 1
+ fi
+ fi
+}
+
vpxenc_tests="vpxenc_vp8_ivf
vpxenc_vp8_webm
- vpxenc_vp8_ivf_pipe_input
+ vpxenc_vp8_ivf_piped_input
vpxenc_vp9_ivf
vpxenc_vp9_webm
- vpxenc_vp9_ivf_lossless"
+ vpxenc_vp9_ivf_lossless
+ vpxenc_vp9_ivf_minq0_maxq0"
run_tests vpxenc_verify_environment "${vpxenc_tests}"--
⑨