From: James Zern Date: Wed, 25 Jun 2014 17:44:36 +0000 (-0700) Subject: Merge "decode_test_driver: check HasFailure() in RunLoop" X-Git-Tag: v1.4.0~1337 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d9c37b08f8c9489eddf96cbc9037b09f61f2b7f4;p=libvpx Merge "decode_test_driver: check HasFailure() in RunLoop" --- d9c37b08f8c9489eddf96cbc9037b09f61f2b7f4 diff --cc test/decode_test_driver.cc index cd1a79569,12da25fd3..8bea4ccf9 --- a/test/decode_test_driver.cc +++ b/test/decode_test_driver.cc @@@ -43,32 -29,11 +43,33 @@@ void DecoderTest::RunLoop(CompressedVid 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()) { + for (video->Begin(); !::testing::Test::HasFailure() && 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))