Index: source/libvpx/test/decode_test_driver.cc |
=================================================================== |
--- source/libvpx/test/decode_test_driver.cc (revision 290053) |
+++ source/libvpx/test/decode_test_driver.cc (working copy) |
@@ -67,25 +67,34 @@ |
const vpx_codec_dec_cfg_t &dec_cfg) { |
Decoder* const decoder = codec_->CreateDecoder(dec_cfg, 0); |
ASSERT_TRUE(decoder != NULL); |
+ bool end_of_file = false; |
// Decode frames. |
- for (video->Begin(); !::testing::Test::HasFailure() && video->cxdata(); |
+ for (video->Begin(); !::testing::Test::HasFailure() && !end_of_file; |
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); |
- HandlePeekResult(decoder, video, res_peek); |
- ASSERT_FALSE(::testing::Test::HasFailure()); |
- vpx_codec_err_t res_dec = decoder->DecodeFrame(video->cxdata(), |
- video->frame_size()); |
- if (!HandleDecodeResult(res_dec, *video, decoder)) |
- break; |
+ if (video->cxdata() != NULL) { |
+ const vpx_codec_err_t res_peek = decoder->PeekStream(video->cxdata(), |
+ video->frame_size(), |
+ &stream_info); |
+ HandlePeekResult(decoder, video, res_peek); |
+ ASSERT_FALSE(::testing::Test::HasFailure()); |
+ vpx_codec_err_t res_dec = decoder->DecodeFrame(video->cxdata(), |
+ video->frame_size()); |
+ if (!HandleDecodeResult(res_dec, *video, decoder)) |
+ break; |
+ } else { |
+ // Signal end of the file to the decoder. |
+ const vpx_codec_err_t res_dec = decoder->DecodeFrame(NULL, 0); |
+ ASSERT_EQ(VPX_CODEC_OK, res_dec) << decoder->DecodeError(); |
+ end_of_file = true; |
+ } |
+ |
DxDataIterator dec_iter = decoder->GetDxData(); |
const vpx_image_t *img = NULL; |