Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Guillaume Martres
aom-rav1e
Commits
93ef0e0e
Commit
93ef0e0e
authored
Aug 08, 2014
by
Tom Finegan
Committed by
Gerrit Code Review
Aug 08, 2014
Browse files
Merge "test/vpxenc.sh: Convert vpxenc() to a simple wrapper."
parents
090574c0
8b83d15d
Changes
1
Hide whitespace changes
Inline
Side-by-side
test/vpxenc.sh
View file @
93ef0e0e
...
...
@@ -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 @@ vpxenc_can_encode_vp9() {
# 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
}
# 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
# 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
}
}
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_pipe
d
_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_pipe
d
_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
}
"
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment