]> granicus.if.org Git - libvpx/commitdiff
Merge "decode_test_driver: check HasFailure() in RunLoop"
authorJames Zern <jzern@google.com>
Wed, 25 Jun 2014 17:44:36 +0000 (10:44 -0700)
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>
Wed, 25 Jun 2014 17:44:36 +0000 (10:44 -0700)
1  2 
test/decode_test_driver.cc

index cd1a795696068b6e0f443dcffa32a90aada46235,12da25fd3c0a0661bf422d9bfb29ee20f8d5d863..8bea4ccf9b19875a548b0139278bb76addfeb359
@@@ -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))