Index: source/libvpx/test/vpxenc.sh |
=================================================================== |
--- source/libvpx/test/vpxenc.sh (revision 291857) |
+++ source/libvpx/test/vpxenc.sh (working copy) |
@@ -41,6 +41,40 @@ |
fi |
} |
+# Echo vpxenc command line parameters allowing use of |
+# hantro_collage_w352h288.yuv as input. |
+yuv_input_hantro_collage() { |
+ echo ""${YUV_RAW_INPUT}" |
+ --width="${YUV_RAW_INPUT_WIDTH}" |
+ --height="${YUV_RAW_INPUT_HEIGHT}"" |
+} |
+ |
+# Echo default vpxenc real time encoding params. $1 is the codec, which defaults |
+# to vp8 if unspecified. |
+vpxenc_rt_params() { |
+ local readonly codec="${1:-vp8}" |
+ echo "--codec=${codec} |
+ --buf-initial-sz=500 |
+ --buf-optimal-sz=600 |
+ --buf-sz=1000 |
+ --cpu-used=-5 |
+ --end-usage=cbr |
+ --error-resilient=1 |
+ --kf-max-dist=90000 |
+ --lag-in-frames=0 |
+ --max-intra-rate=300 |
+ --max-q=56 |
+ --min-q=2 |
+ --noise-sensitivity=0 |
+ --overshoot-pct=50 |
+ --passes=1 |
+ --profile=0 |
+ --resize-allowed=0 |
+ --rt |
+ --static-thresh=0 |
+ --undershoot-pct=50" |
+} |
+ |
# 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 |
@@ -59,9 +93,9 @@ |
# shifted away. All remaining parameters are passed through to vpxenc. |
vpxenc() { |
local readonly encoder="$(vpx_tool_path vpxenc)" |
- local readonly input="${1}" |
+ local readonly input="$1" |
shift |
- eval "${VPX_TEST_PREFIX}" "${encoder}" "$input" \ |
+ eval "${VPX_TEST_PREFIX}" "${encoder}" "${input}" \ |
--test-decode=fatal \ |
"$@" ${devnull} |
} |
@@ -69,13 +103,11 @@ |
vpxenc_vp8_ivf() { |
if [ "$(vpxenc_can_encode_vp8)" = "yes" ]; then |
local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8.ivf" |
- vpxenc --codec=vp8 \ |
- --width="${YUV_RAW_INPUT_WIDTH}" \ |
- --height="${YUV_RAW_INPUT_HEIGHT}" \ |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ --codec=vp8 \ |
--limit="${TEST_FRAMES}" \ |
--ivf \ |
- --output="${output}" \ |
- "${YUV_RAW_INPUT}" |
+ --output="${output}" |
if [ ! -e "${output}" ]; then |
elog "Output file does not exist." |
@@ -88,12 +120,10 @@ |
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}" \ |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ --codec=vp8 \ |
--limit="${TEST_FRAMES}" \ |
- --output="${output}" \ |
- "${YUV_RAW_INPUT}" |
+ --output="${output}" |
if [ ! -e "${output}" ]; then |
elog "Output file does not exist." |
@@ -102,17 +132,29 @@ |
fi |
} |
+vpxenc_vp8_webm_rt() { |
+ if [ "$(vpxenc_can_encode_vp8)" = "yes" ] && \ |
+ [ "$(webm_io_available)" = "yes" ]; then |
+ local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8_rt.webm" |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ $(vpxenc_rt_params vp8) \ |
+ --output="${output}" |
+ if [ ! -e "${output}" ]; then |
+ elog "Output file does not exist." |
+ return 1 |
+ fi |
+ fi |
+} |
+ |
vpxenc_vp8_webm_2pass() { |
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}" \ |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ --codec=vp8 \ |
--limit="${TEST_FRAMES}" \ |
--output="${output}" \ |
- --passes=2 \ |
- "${YUV_RAW_INPUT}" |
+ --passes=2 |
if [ ! -e "${output}" ]; then |
elog "Output file does not exist." |
@@ -127,15 +169,13 @@ |
local readonly lag_total_frames=20 |
local readonly lag_frames=10 |
local readonly output="${VPX_TEST_OUTPUT_DIR}/vp8_lag10_frames20.webm" |
- vpxenc --codec=vp8 \ |
- --width="${YUV_RAW_INPUT_WIDTH}" \ |
- --height="${YUV_RAW_INPUT_HEIGHT}" \ |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ --codec=vp8 \ |
--limit="${lag_total_frames}" \ |
--lag-in-frames="${lag_frames}" \ |
--output="${output}" \ |
--auto-alt-ref=1 \ |
- --passes=2 \ |
- "${YUV_RAW_INPUT}" |
+ --passes=2 |
if [ ! -e "${output}" ]; then |
elog "Output file does not exist." |
@@ -147,14 +187,11 @@ |
vpxenc_vp8_ivf_piped_input() { |
if [ "$(vpxenc_can_encode_vp8)" = "yes" ]; then |
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}" \ |
- - |
+ vpxenc_pipe $(yuv_input_hantro_collage) \ |
+ --codec=vp8 \ |
+ --limit="${TEST_FRAMES}" \ |
+ --ivf \ |
+ --output="${output}" |
if [ ! -e "${output}" ]; then |
elog "Output file does not exist." |
@@ -166,13 +203,11 @@ |
vpxenc_vp9_ivf() { |
if [ "$(vpxenc_can_encode_vp9)" = "yes" ]; then |
local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9.ivf" |
- vpxenc --codec=vp9 \ |
- --width="${YUV_RAW_INPUT_WIDTH}" \ |
- --height="${YUV_RAW_INPUT_HEIGHT}" \ |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ --codec=vp9 \ |
--limit="${TEST_FRAMES}" \ |
--ivf \ |
- --output="${output}" \ |
- "${YUV_RAW_INPUT}" |
+ --output="${output}" |
if [ ! -e "${output}" ]; then |
elog "Output file does not exist." |
@@ -185,12 +220,10 @@ |
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}" \ |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ --codec=vp9 \ |
--limit="${TEST_FRAMES}" \ |
- --output="${output}" \ |
- "${YUV_RAW_INPUT}" |
+ --output="${output}" |
if [ ! -e "${output}" ]; then |
elog "Output file does not exist." |
@@ -199,18 +232,30 @@ |
fi |
} |
+vpxenc_vp9_webm_rt() { |
+ if [ "$(vpxenc_can_encode_vp9)" = "yes" ] && \ |
+ [ "$(webm_io_available)" = "yes" ]; then |
+ local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9_rt.webm" |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ $(vpxenc_rt_params vp9) \ |
+ --output="${output}" |
+ |
+ if [ ! -e "${output}" ]; then |
+ elog "Output file does not exist." |
+ return 1 |
+ fi |
+ fi |
+} |
+ |
vpxenc_vp9_webm_2pass() { |
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}" \ |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ --codec=vp9 \ |
--limit="${TEST_FRAMES}" \ |
- --test-decode=fatal \ |
--output="${output}" \ |
- --passes=2 \ |
- "${YUV_RAW_INPUT}" |
+ --passes=2 |
if [ ! -e "${output}" ]; then |
elog "Output file does not exist." |
@@ -222,14 +267,12 @@ |
vpxenc_vp9_ivf_lossless() { |
if [ "$(vpxenc_can_encode_vp9)" = "yes" ]; then |
local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9_lossless.ivf" |
- vpxenc --codec=vp9 \ |
- --width="${YUV_RAW_INPUT_WIDTH}" \ |
- --height="${YUV_RAW_INPUT_HEIGHT}" \ |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ --codec=vp9 \ |
--limit="${TEST_FRAMES}" \ |
--ivf \ |
--output="${output}" \ |
- --lossless=1 \ |
- "${YUV_RAW_INPUT}" |
+ --lossless=1 |
if [ ! -e "${output}" ]; then |
elog "Output file does not exist." |
@@ -241,15 +284,13 @@ |
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}" \ |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ --codec=vp9 \ |
--limit="${TEST_FRAMES}" \ |
--ivf \ |
--output="${output}" \ |
--min-q=0 \ |
- --max-q=0 \ |
- "${YUV_RAW_INPUT}" |
+ --max-q=0 |
if [ ! -e "${output}" ]; then |
elog "Output file does not exist." |
@@ -264,16 +305,13 @@ |
local readonly lag_total_frames=20 |
local readonly lag_frames=10 |
local readonly output="${VPX_TEST_OUTPUT_DIR}/vp9_lag10_frames20.webm" |
- vpxenc --codec=vp9 \ |
- --width="${YUV_RAW_INPUT_WIDTH}" \ |
- --height="${YUV_RAW_INPUT_HEIGHT}" \ |
+ vpxenc $(yuv_input_hantro_collage) \ |
+ --codec=vp9 \ |
--limit="${lag_total_frames}" \ |
--lag-in-frames="${lag_frames}" \ |
--output="${output}" \ |
- --test-decode=fatal \ |
--passes=2 \ |
- --auto-alt-ref=1 \ |
- "${YUV_RAW_INPUT}" |
+ --auto-alt-ref=1 |
if [ ! -e "${output}" ]; then |
elog "Output file does not exist." |
@@ -284,11 +322,13 @@ |
vpxenc_tests="vpxenc_vp8_ivf |
vpxenc_vp8_webm |
+ vpxenc_vp8_webm_rt |
vpxenc_vp8_webm_2pass |
vpxenc_vp8_webm_lag10_frames20 |
vpxenc_vp8_ivf_piped_input |
vpxenc_vp9_ivf |
vpxenc_vp9_webm |
+ vpxenc_vp9_webm_rt |
vpxenc_vp9_webm_2pass |
vpxenc_vp9_ivf_lossless |
vpxenc_vp9_ivf_minq0_maxq0 |