diff options
author | Alex Converse <aconverse@google.com> | 2016-07-21 11:36:41 -0700 |
---|---|---|
committer | Alex Converse <aconverse@google.com> | 2016-07-21 11:39:47 -0700 |
commit | 92e91bd3a17696df45b1eca3ffeff0520c68d3e4 (patch) | |
tree | 5bdb1266d906a51da87c53373b2f90c9a5ce0994 /test | |
parent | 16e069b8bb4d523007bf84be7c0a1bdde58539c4 (diff) | |
download | libvpx-92e91bd3a17696df45b1eca3ffeff0520c68d3e4.tar libvpx-92e91bd3a17696df45b1eca3ffeff0520c68d3e4.tar.gz libvpx-92e91bd3a17696df45b1eca3ffeff0520c68d3e4.tar.bz2 libvpx-92e91bd3a17696df45b1eca3ffeff0520c68d3e4.zip |
Make test encoder test driver less likely to leak on failure.
Individual tests still need to be updated.
Change-Id: Ic433d0f742e13560b136f136b72b2a9973970d78
Diffstat (limited to 'test')
-rw-r--r-- | test/encode_test_driver.cc | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/test/encode_test_driver.cc b/test/encode_test_driver.cc index b8c737187..e189d8f04 100644 --- a/test/encode_test_driver.cc +++ b/test/encode_test_driver.cc @@ -180,11 +180,11 @@ void EncoderTest::RunLoop(VideoSource *video) { cfg_.g_pass = VPX_RC_LAST_PASS; BeginPassHook(pass); - Encoder* const encoder = codec_->CreateEncoder(cfg_, deadline_, init_flags_, - &stats_); - ASSERT_TRUE(encoder != NULL); + testing::internal::scoped_ptr<Encoder> encoder( + codec_->CreateEncoder(cfg_, deadline_, init_flags_, &stats_)); + ASSERT_TRUE(encoder.get() != NULL); - video->Begin(); + ASSERT_NO_FATAL_FAILURE(video->Begin()); encoder->InitEncoder(video); ASSERT_FALSE(::testing::Test::HasFatalFailure()); @@ -193,13 +193,14 @@ void EncoderTest::RunLoop(VideoSource *video) { // NOTE: fragment decoder and partition encoder are only supported by VP8. if (init_flags_ & VPX_CODEC_USE_OUTPUT_PARTITION) dec_init_flags |= VPX_CODEC_USE_INPUT_FRAGMENTS; - Decoder* const decoder = codec_->CreateDecoder(dec_cfg, dec_init_flags, 0); + testing::internal::scoped_ptr<Decoder> decoder( + codec_->CreateDecoder(dec_cfg, dec_init_flags, 0)); bool again; for (again = true; again; video->Next()) { again = (video->img() != NULL); PreEncodeFrameHook(video); - PreEncodeFrameHook(video, encoder); + PreEncodeFrameHook(video, encoder.get()); encoder->EncodeFrame(video, frame_flags_); CxDataIterator iter = encoder->GetCxData(); @@ -212,11 +213,11 @@ void EncoderTest::RunLoop(VideoSource *video) { switch (pkt->kind) { case VPX_CODEC_CX_FRAME_PKT: has_cxdata = true; - if (decoder && DoDecode()) { + if (decoder.get() != NULL && DoDecode()) { vpx_codec_err_t res_dec = decoder->DecodeFrame( (const uint8_t*)pkt->data.frame.buf, pkt->data.frame.sz); - if (!HandleDecodeResult(res_dec, *video, decoder)) + if (!HandleDecodeResult(res_dec, *video, decoder.get())) break; has_dxdata = true; @@ -238,7 +239,7 @@ void EncoderTest::RunLoop(VideoSource *video) { // Flush the decoder when there are no more fragments. if ((init_flags_ & VPX_CODEC_USE_OUTPUT_PARTITION) && has_dxdata) { const vpx_codec_err_t res_dec = decoder->DecodeFrame(NULL, 0); - if (!HandleDecodeResult(res_dec, *video, decoder)) + if (!HandleDecodeResult(res_dec, *video, decoder.get())) break; } @@ -261,10 +262,6 @@ void EncoderTest::RunLoop(VideoSource *video) { EndPassHook(); - if (decoder) - delete decoder; - delete encoder; - if (!Continue()) break; } |