Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: source/libvpx/test/decode_test_driver.cc

Issue 394353005: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « source/libvpx/test/decode_test_driver.h ('k') | source/libvpx/test/encode_test_driver.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 #include "test/codec_factory.h" 10 #include "test/codec_factory.h"
(...skipping 21 matching lines...) Expand all
32 void *user_priv) { 32 void *user_priv) {
33 vpx_codec_err_t res_dec; 33 vpx_codec_err_t res_dec;
34 InitOnce(); 34 InitOnce();
35 API_REGISTER_STATE_CHECK( 35 API_REGISTER_STATE_CHECK(
36 res_dec = vpx_codec_decode(&decoder_, 36 res_dec = vpx_codec_decode(&decoder_,
37 cxdata, static_cast<unsigned int>(size), 37 cxdata, static_cast<unsigned int>(size),
38 user_priv, 0)); 38 user_priv, 0));
39 return res_dec; 39 return res_dec;
40 } 40 }
41 41
42 bool Decoder::IsVP8() const {
43 const char *codec_name = GetDecoderName();
44 return strncmp(kVP8Name, codec_name, sizeof(kVP8Name) - 1) == 0;
45 }
46
47 void DecoderTest::HandlePeekResult(Decoder *const decoder,
48 CompressedVideoSource *video,
49 const vpx_codec_err_t res_peek) {
50 const bool is_vp8 = decoder->IsVP8();
51 if (is_vp8) {
52 /* Vp8's implementation of PeekStream returns an error if the frame you
53 * pass it is not a keyframe, so we only expect VPX_CODEC_OK on the first
54 * frame, which must be a keyframe. */
55 if (video->frame_number() == 0)
56 ASSERT_EQ(VPX_CODEC_OK, res_peek) << "Peek return failed: "
57 << vpx_codec_err_to_string(res_peek);
58 } else {
59 /* The Vp9 implementation of PeekStream returns an error only if the
60 * data passed to it isn't a valid Vp9 chunk. */
61 ASSERT_EQ(VPX_CODEC_OK, res_peek) << "Peek return failed: "
62 << vpx_codec_err_to_string(res_peek);
63 }
64 }
65
42 void DecoderTest::RunLoop(CompressedVideoSource *video, 66 void DecoderTest::RunLoop(CompressedVideoSource *video,
43 const vpx_codec_dec_cfg_t &dec_cfg) { 67 const vpx_codec_dec_cfg_t &dec_cfg) {
44 Decoder* const decoder = codec_->CreateDecoder(dec_cfg, 0); 68 Decoder* const decoder = codec_->CreateDecoder(dec_cfg, 0);
45 ASSERT_TRUE(decoder != NULL); 69 ASSERT_TRUE(decoder != NULL);
46 const char *codec_name = decoder->GetDecoderName();
47 const bool is_vp8 = strncmp(kVP8Name, codec_name, sizeof(kVP8Name) - 1) == 0;
48 70
49 // Decode frames. 71 // Decode frames.
50 for (video->Begin(); !::testing::Test::HasFailure() && video->cxdata(); 72 for (video->Begin(); !::testing::Test::HasFailure() && video->cxdata();
51 video->Next()) { 73 video->Next()) {
52 PreDecodeFrameHook(*video, decoder); 74 PreDecodeFrameHook(*video, decoder);
53 75
54 vpx_codec_stream_info_t stream_info; 76 vpx_codec_stream_info_t stream_info;
55 stream_info.sz = sizeof(stream_info); 77 stream_info.sz = sizeof(stream_info);
56 const vpx_codec_err_t res_peek = decoder->PeekStream(video->cxdata(), 78 const vpx_codec_err_t res_peek = decoder->PeekStream(video->cxdata(),
57 video->frame_size(), 79 video->frame_size(),
58 &stream_info); 80 &stream_info);
59 if (is_vp8) { 81 HandlePeekResult(decoder, video, res_peek);
60 /* Vp8's implementation of PeekStream returns an error if the frame you 82 ASSERT_FALSE(::testing::Test::HasFailure());
61 * pass it is not a keyframe, so we only expect VPX_CODEC_OK on the first
62 * frame, which must be a keyframe. */
63 if (video->frame_number() == 0)
64 ASSERT_EQ(VPX_CODEC_OK, res_peek) << "Peek return failed: "
65 << vpx_codec_err_to_string(res_peek);
66 } else {
67 /* The Vp9 implementation of PeekStream returns an error only if the
68 * data passed to it isn't a valid Vp9 chunk. */
69 ASSERT_EQ(VPX_CODEC_OK, res_peek) << "Peek return failed: "
70 << vpx_codec_err_to_string(res_peek);
71 }
72 83
73 vpx_codec_err_t res_dec = decoder->DecodeFrame(video->cxdata(), 84 vpx_codec_err_t res_dec = decoder->DecodeFrame(video->cxdata(),
74 video->frame_size()); 85 video->frame_size());
75 if (!HandleDecodeResult(res_dec, *video, decoder)) 86 if (!HandleDecodeResult(res_dec, *video, decoder))
76 break; 87 break;
77 88
78 DxDataIterator dec_iter = decoder->GetDxData(); 89 DxDataIterator dec_iter = decoder->GetDxData();
79 const vpx_image_t *img = NULL; 90 const vpx_image_t *img = NULL;
80 91
81 // Get decompressed data 92 // Get decompressed data
82 while ((img = dec_iter.Next())) 93 while ((img = dec_iter.Next()))
83 DecompressedFrameHook(*img, video->frame_number()); 94 DecompressedFrameHook(*img, video->frame_number());
84 } 95 }
85 delete decoder; 96 delete decoder;
86 } 97 }
87 98
88 void DecoderTest::RunLoop(CompressedVideoSource *video) { 99 void DecoderTest::RunLoop(CompressedVideoSource *video) {
89 vpx_codec_dec_cfg_t dec_cfg = {0}; 100 vpx_codec_dec_cfg_t dec_cfg = {0};
90 RunLoop(video, dec_cfg); 101 RunLoop(video, dec_cfg);
91 } 102 }
92 103
93 } // namespace libvpx_test 104 } // namespace libvpx_test
OLDNEW
« no previous file with comments | « source/libvpx/test/decode_test_driver.h ('k') | source/libvpx/test/encode_test_driver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698