Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
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
97d0cb58
Commit
97d0cb58
authored
Jun 23, 2014
by
Jim Bankoski
Committed by
Gerrit Code Review
Jun 23, 2014
Browse files
Merge "Add Check for Peek Stream validity to decoder test."
parents
6118dcfe
96727b95
Changes
2
Hide whitespace changes
Inline
Side-by-side
test/decode_test_driver.cc
View file @
97d0cb58
...
...
@@ -15,6 +15,14 @@
namespace
libvpx_test
{
const
char
kVP8Name
[]
=
"WebM Project VP8"
;
vpx_codec_err_t
Decoder
::
PeekStream
(
const
uint8_t
*
cxdata
,
size_t
size
,
vpx_codec_stream_info_t
*
stream_info
)
{
return
vpx_codec_peek_stream_info
(
CodecInterface
(),
cxdata
,
size
,
stream_info
);
}
vpx_codec_err_t
Decoder
::
DecodeFrame
(
const
uint8_t
*
cxdata
,
size_t
size
)
{
vpx_codec_err_t
res_dec
;
InitOnce
();
...
...
@@ -29,10 +37,32 @@ void DecoderTest::RunLoop(CompressedVideoSource *video) {
vpx_codec_dec_cfg_t
dec_cfg
=
{
0
};
Decoder
*
const
decoder
=
codec_
->
CreateDecoder
(
dec_cfg
,
0
);
ASSERT_TRUE
(
decoder
!=
NULL
);
const
char
*
codec_name
=
decoder
->
GetDecoderName
();
const
bool
is_vp8
=
strncmp
(
kVP8Name
,
codec_name
,
sizeof
(
kVP8Name
)
-
1
)
==
0
;
// Decode frames.
for
(
video
->
Begin
();
video
->
cxdata
();
video
->
Next
())
{
PreDecodeFrameHook
(
*
video
,
decoder
);
vpx_codec_stream_info_t
stream_info
;
stream_info
.
sz
=
sizeof
(
stream_info
);
const
vpx_codec_err_t
res_peek
=
decoder
->
PeekStream
(
video
->
cxdata
(),
video
->
frame_size
(),
&
stream_info
);
if
(
is_vp8
)
{
/* Vp8's implementation of PeekStream returns an error if the frame you
* pass it is not a keyframe, so we only expect VPX_CODEC_OK on the first
* frame, which must be a keyframe. */
if
(
video
->
frame_number
()
==
0
)
ASSERT_EQ
(
VPX_CODEC_OK
,
res_peek
)
<<
"Peek return failed: "
<<
vpx_codec_err_to_string
(
res_peek
);
}
else
{
/* The Vp9 implementation of PeekStream returns an error only if the
* data passed to it isn't a valid Vp9 chunk. */
ASSERT_EQ
(
VPX_CODEC_OK
,
res_peek
)
<<
"Peek return failed: "
<<
vpx_codec_err_to_string
(
res_peek
);
}
vpx_codec_err_t
res_dec
=
decoder
->
DecodeFrame
(
video
->
cxdata
(),
video
->
frame_size
());
if
(
!
HandleDecodeResult
(
res_dec
,
*
video
,
decoder
))
...
...
test/decode_test_driver.h
View file @
97d0cb58
...
...
@@ -49,6 +49,9 @@ class Decoder {
vpx_codec_destroy
(
&
decoder_
);
}
vpx_codec_err_t
PeekStream
(
const
uint8_t
*
cxdata
,
size_t
size
,
vpx_codec_stream_info_t
*
stream_info
);
vpx_codec_err_t
DecodeFrame
(
const
uint8_t
*
cxdata
,
size_t
size
);
DxDataIterator
GetDxData
()
{
...
...
@@ -85,6 +88,10 @@ class Decoder {
&
decoder_
,
cb_get
,
cb_release
,
user_priv
);
}
const
char
*
GetDecoderName
()
{
return
vpx_codec_iface_name
(
CodecInterface
());
}
protected:
virtual
vpx_codec_iface_t
*
CodecInterface
()
const
=
0
;
...
...
Write
Preview
Markdown
is supported
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