193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org#!/bin/sh
293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##
393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##  Copyright (c) 2014 The WebM project authors. All Rights Reserved.
493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##
593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##  Use of this source code is governed by a BSD-style license
693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##  that can be found in the LICENSE file in the root of the source
793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##  tree. An additional intellectual property rights grant can be found
893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##  in the file PATENTS.  All contributing project authors may
993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##  be found in the AUTHORS file in the root of the source tree.
1093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##
1193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##  This file tests vpxenc using hantro_collage_w352h288.yuv as input. To add
1293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##  new tests to this file, do the following:
1393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##    1. Write a shell function (this is your test).
1493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##    2. Add the function to vpxenc_tests (on a new line).
1593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org##
1693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org. $(dirname $0)/tools_common.sh
1793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
1841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgreadonly TEST_FRAMES=10
1993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
2093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# Environment check: Make sure input is available.
2193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgvpxenc_verify_environment() {
2293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  if [ ! -e "${YUV_RAW_INPUT}" ]; then
23ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    elog "The file ${YUV_RAW_INPUT##*/} must exist in LIBVPX_TEST_DATA_PATH."
2493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    return 1
2593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  fi
2641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  if [ -z "$(vpx_tool_path vpxenc)" ]; then
2741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    elog "vpxenc not found. It must exist in LIBVPX_BIN_PATH or its parent."
2841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    return 1
2941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  fi
3093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org}
3193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
3293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgvpxenc_can_encode_vp8() {
3341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  if [ "$(vp8_encode_available)" = "yes" ]; then
3493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    echo yes
3593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  fi
3693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org}
3793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
3893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgvpxenc_can_encode_vp9() {
3941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  if [ "$(vp9_encode_available)" = "yes" ]; then
4093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    echo yes
4193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  fi
4293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org}
4393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
44d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org# Echo vpxenc command line parameters allowing use of
45d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org# hantro_collage_w352h288.yuv as input.
46d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgyuv_input_hantro_collage() {
47d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org  echo ""${YUV_RAW_INPUT}"
48d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org       --width="${YUV_RAW_INPUT_WIDTH}"
49d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org       --height="${YUV_RAW_INPUT_HEIGHT}""
50d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org}
51d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org
52d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org# Echo default vpxenc real time encoding params. $1 is the codec, which defaults
53d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org# to vp8 if unspecified.
54d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgvpxenc_rt_params() {
55d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org  local readonly codec="${1:-vp8}"
56d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org  echo "--codec=${codec}
57d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --buf-initial-sz=500
58d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --buf-optimal-sz=600
59d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --buf-sz=1000
60d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --cpu-used=-5
61d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --end-usage=cbr
62d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --error-resilient=1
63d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --kf-max-dist=90000
64d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --lag-in-frames=0
65d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --max-intra-rate=300
66d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --max-q=56
67d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --min-q=2
68d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --noise-sensitivity=0
69d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --overshoot-pct=50
70d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --passes=1
71d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --profile=0
72d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --resize-allowed=0
73d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --rt
74d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --static-thresh=0
75d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    --undershoot-pct=50"
76d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org}
77d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org
7841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org# Wrapper function for running vpxenc with pipe input. Requires that
7941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org# LIBVPX_BIN_PATH points to the directory containing vpxenc. $1 is used as the
8041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org# input file path and shifted away. All remaining parameters are passed through
8141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org# to vpxenc.
8241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgvpxenc_pipe() {
8341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  local readonly encoder="$(vpx_tool_path vpxenc)"
8441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  local readonly input="$1"
8541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  shift
86ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org  cat "${input}" | eval "${VPX_TEST_PREFIX}" "${encoder}" - \
87ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    --test-decode=fatal \
88ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    "$@" ${devnull}
8941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org}
9041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
9141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org# Wrapper function for running vpxenc. Requires that LIBVPX_BIN_PATH points to
9241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org# the directory containing vpxenc. $1 one is used as the input file path and
9341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org# shifted away. All remaining parameters are passed through to vpxenc.
9441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgvpxenc() {
9541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  local readonly encoder="$(vpx_tool_path vpxenc)"
96d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org  local readonly input="$1"
9741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  shift
98d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org  eval "${VPX_TEST_PREFIX}" "${encoder}" "${input}" \
99ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    --test-decode=fatal \
100ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    "$@" ${devnull}
10141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org}
10241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
10393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgvpxenc_vp8_ivf() {
10493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp8)" = "yes" ]; then
10541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8.ivf"
106d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
107d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --codec=vp8 \
10841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --limit="${TEST_FRAMES}" \
10941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --ivf \
110d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --output="${output}"
11141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
11241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    if [ ! -e "${output}" ]; then
11341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      elog "Output file does not exist."
11441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      return 1
11541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    fi
11693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  fi
11793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org}
11893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
119ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgvpxenc_vp8_webm() {
120ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp8)" = "yes" ] && \
121ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org     [ "$(webm_io_available)" = "yes" ]; then
122ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8.webm"
123d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
124d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --codec=vp8 \
125ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --limit="${TEST_FRAMES}" \
126d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --output="${output}"
127ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org
128ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    if [ ! -e "${output}" ]; then
129ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      elog "Output file does not exist."
130ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      return 1
131ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    fi
132ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org  fi
133ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org}
134ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org
135d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgvpxenc_vp8_webm_rt() {
136d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp8)" = "yes" ] && \
137d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org     [ "$(webm_io_available)" = "yes" ]; then
138d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8_rt.webm"
139d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
140d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      $(vpxenc_rt_params vp8) \
141d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --output="${output}"
142d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    if [ ! -e "${output}" ]; then
143d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      elog "Output file does not exist."
144d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      return 1
145d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    fi
146d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org  fi
147d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org}
148d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org
149ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgvpxenc_vp8_webm_2pass() {
150ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp8)" = "yes" ] && \
151ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org     [ "$(webm_io_available)" = "yes" ]; then
152ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8.webm"
153d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
154d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --codec=vp8 \
155ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --limit="${TEST_FRAMES}" \
156ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --output="${output}" \
157d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --passes=2
158ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org
159ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    if [ ! -e "${output}" ]; then
160ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      elog "Output file does not exist."
161ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      return 1
162ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    fi
163ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org  fi
164ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org}
165ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org
166ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgvpxenc_vp8_webm_lag10_frames20() {
167ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp8)" = "yes" ] && \
168ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org     [ "$(webm_io_available)" = "yes" ]; then
169ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    local readonly lag_total_frames=20
170ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    local readonly lag_frames=10
171ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8_lag10_frames20.webm"
172d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
173d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --codec=vp8 \
174ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --limit="${lag_total_frames}" \
175ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --lag-in-frames="${lag_frames}" \
176ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --output="${output}" \
177ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --auto-alt-ref=1 \
178d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --passes=2
179ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org
180ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    if [ ! -e "${output}" ]; then
181ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      elog "Output file does not exist."
182ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      return 1
183ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    fi
184ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org  fi
185ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org}
186ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org
18741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgvpxenc_vp8_ivf_piped_input() {
18893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp8)" = "yes" ]; then
18941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8_piped_input.ivf"
190d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc_pipe $(yuv_input_hantro_collage) \
191d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --codec=vp8 \
192d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --limit="${TEST_FRAMES}" \
193d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --ivf \
194d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --output="${output}"
19541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
19641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    if [ ! -e "${output}" ]; then
19741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      elog "Output file does not exist."
19841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      return 1
19941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    fi
20093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  fi
20193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org}
20293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
203ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgvpxenc_vp9_ivf() {
204ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp9)" = "yes" ]; then
205ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9.ivf"
206d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
207d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --codec=vp9 \
20841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --limit="${TEST_FRAMES}" \
209ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --ivf \
210d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --output="${output}"
21141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
21241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    if [ ! -e "${output}" ]; then
21341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      elog "Output file does not exist."
21441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      return 1
21541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    fi
21693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  fi
21793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org}
21893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
219ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgvpxenc_vp9_webm() {
220ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp9)" = "yes" ] && \
221ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org     [ "$(webm_io_available)" = "yes" ]; then
222ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9.webm"
223d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
224d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --codec=vp9 \
22541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --limit="${TEST_FRAMES}" \
226d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --output="${output}"
227d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org
228d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    if [ ! -e "${output}" ]; then
229d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      elog "Output file does not exist."
230d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      return 1
231d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    fi
232d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org  fi
233d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org}
234d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org
235d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.orgvpxenc_vp9_webm_rt() {
236d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp9)" = "yes" ] && \
237d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org     [ "$(webm_io_available)" = "yes" ]; then
238d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9_rt.webm"
239d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
240d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      $(vpxenc_rt_params vp9) \
241d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --output="${output}"
24241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
24341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    if [ ! -e "${output}" ]; then
24441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      elog "Output file does not exist."
24541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      return 1
24641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    fi
24793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  fi
24893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org}
24993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
250ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgvpxenc_vp9_webm_2pass() {
25141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp9)" = "yes" ] && \
25241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org     [ "$(webm_io_available)" = "yes" ]; then
25341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9.webm"
254d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
255d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --codec=vp9 \
25641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --limit="${TEST_FRAMES}" \
25741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --output="${output}" \
258d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --passes=2
25941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
26041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    if [ ! -e "${output}" ]; then
26141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      elog "Output file does not exist."
26241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      return 1
26341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    fi
26441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  fi
26541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org}
26641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
26741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgvpxenc_vp9_ivf_lossless() {
26841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp9)" = "yes" ]; then
26941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9_lossless.ivf"
270d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
271d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --codec=vp9 \
27241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --limit="${TEST_FRAMES}" \
27341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --ivf \
27441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --output="${output}" \
275d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --lossless=1
27641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
27741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    if [ ! -e "${output}" ]; then
27841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      elog "Output file does not exist."
27941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      return 1
28041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    fi
28193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  fi
28293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org}
28393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
28441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgvpxenc_vp9_ivf_minq0_maxq0() {
28593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp9)" = "yes" ]; then
28641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9_lossless_minq0_maxq0.ivf"
287d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
288d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --codec=vp9 \
28941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --limit="${TEST_FRAMES}" \
29041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --ivf \
29141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --output="${output}" \
29241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      --min-q=0 \
293d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --max-q=0
294ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org
295ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    if [ ! -e "${output}" ]; then
296ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      elog "Output file does not exist."
297ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      return 1
298ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    fi
299ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org  fi
300ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org}
301ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org
302ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgvpxenc_vp9_webm_lag10_frames20() {
303ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org  if [ "$(vpxenc_can_encode_vp9)" = "yes" ] && \
304ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org     [ "$(webm_io_available)" = "yes" ]; then
305ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    local readonly lag_total_frames=20
306ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    local readonly lag_frames=10
307ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org    local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9_lag10_frames20.webm"
308d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org    vpxenc $(yuv_input_hantro_collage) \
309d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --codec=vp9 \
310ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --limit="${lag_total_frames}" \
311ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --lag-in-frames="${lag_frames}" \
312ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --output="${output}" \
313ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org      --passes=2 \
314d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org      --auto-alt-ref=1
31541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
31641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    if [ ! -e "${output}" ]; then
31741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      elog "Output file does not exist."
31841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org      return 1
31941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org    fi
32093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org  fi
32193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org}
32293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
32393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgvpxenc_tests="vpxenc_vp8_ivf
32493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org              vpxenc_vp8_webm
325d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org              vpxenc_vp8_webm_rt
326ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org              vpxenc_vp8_webm_2pass
327ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org              vpxenc_vp8_webm_lag10_frames20
32841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org              vpxenc_vp8_ivf_piped_input
32993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org              vpxenc_vp9_ivf
33093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org              vpxenc_vp9_webm
331d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org              vpxenc_vp9_webm_rt
332ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org              vpxenc_vp9_webm_2pass
33341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org              vpxenc_vp9_ivf_lossless
334ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org              vpxenc_vp9_ivf_minq0_maxq0
335ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org              vpxenc_vp9_webm_lag10_frames20"
33693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
33793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgrun_tests vpxenc_verify_environment "${vpxenc_tests}"
338