Merge "Enable tests using WebM files only if webm_io is enabled"

This commit is contained in:
Vignesh Venkatasubramanian 2014-04-23 23:44:08 -07:00 committed by Gerrit Code Review
commit 910136320c
4 changed files with 33 additions and 2 deletions

View File

@ -10,13 +10,16 @@
#include <string> #include <string>
#include "./vpx_config.h"
#include "test/codec_factory.h" #include "test/codec_factory.h"
#include "test/decode_test_driver.h" #include "test/decode_test_driver.h"
#include "test/ivf_video_source.h" #include "test/ivf_video_source.h"
#include "test/md5_helper.h" #include "test/md5_helper.h"
#include "test/test_vectors.h" #include "test/test_vectors.h"
#include "test/util.h" #include "test/util.h"
#if CONFIG_WEBM_IO
#include "test/webm_video_source.h" #include "test/webm_video_source.h"
#endif
namespace { namespace {
@ -267,6 +270,7 @@ class ExternalFrameBufferMD5Test
ExternalFrameBufferList fb_list_; ExternalFrameBufferList fb_list_;
}; };
#if CONFIG_WEBM_IO
// Class for testing passing in external frame buffers to libvpx. // Class for testing passing in external frame buffers to libvpx.
class ExternalFrameBufferTest : public ::testing::Test { class ExternalFrameBufferTest : public ::testing::Test {
protected: protected:
@ -340,6 +344,7 @@ class ExternalFrameBufferTest : public ::testing::Test {
int num_buffers_; int num_buffers_;
ExternalFrameBufferList fb_list_; ExternalFrameBufferList fb_list_;
}; };
#endif // CONFIG_WEBM_IO
// This test runs through the set of test vectors, and decodes them. // This test runs through the set of test vectors, and decodes them.
// Libvpx will call into the application to allocate a frame buffer when // Libvpx will call into the application to allocate a frame buffer when
@ -366,7 +371,13 @@ TEST_P(ExternalFrameBufferMD5Test, ExtFBMD5Match) {
if (filename.substr(filename.length() - 3, 3) == "ivf") { if (filename.substr(filename.length() - 3, 3) == "ivf") {
video = new libvpx_test::IVFVideoSource(filename); video = new libvpx_test::IVFVideoSource(filename);
} else { } else {
#if CONFIG_WEBM_IO
video = new libvpx_test::WebMVideoSource(filename); video = new libvpx_test::WebMVideoSource(filename);
#else
fprintf(stderr, "WebM IO is disabled, skipping test vector %s\n",
filename.c_str());
return;
#endif
} }
ASSERT_TRUE(video != NULL); ASSERT_TRUE(video != NULL);
video->Init(); video->Init();
@ -380,6 +391,7 @@ TEST_P(ExternalFrameBufferMD5Test, ExtFBMD5Match) {
delete video; delete video;
} }
#if CONFIG_WEBM_IO
TEST_F(ExternalFrameBufferTest, MinFrameBuffers) { TEST_F(ExternalFrameBufferTest, MinFrameBuffers) {
// Minimum number of external frame buffers for VP9 is // Minimum number of external frame buffers for VP9 is
// #VP9_MAXIMUM_REF_BUFFERS + #VPX_MAXIMUM_WORK_BUFFERS. // #VP9_MAXIMUM_REF_BUFFERS + #VPX_MAXIMUM_WORK_BUFFERS.
@ -460,6 +472,7 @@ TEST_F(ExternalFrameBufferTest, SetAfterDecode) {
SetFrameBufferFunctions( SetFrameBufferFunctions(
num_buffers, get_vp9_frame_buffer, release_vp9_frame_buffer)); num_buffers, get_vp9_frame_buffer, release_vp9_frame_buffer));
} }
#endif // CONFIG_WEBM_IO
VP9_INSTANTIATE_TEST_CASE(ExternalFrameBufferMD5Test, VP9_INSTANTIATE_TEST_CASE(ExternalFrameBufferMD5Test,
::testing::ValuesIn(libvpx_test::kVP9TestVectors, ::testing::ValuesIn(libvpx_test::kVP9TestVectors,

View File

@ -42,6 +42,7 @@ LIBVPX_TEST_SRCS-yes += encode_test_driver.cc
LIBVPX_TEST_SRCS-yes += encode_test_driver.h LIBVPX_TEST_SRCS-yes += encode_test_driver.h
## WebM Parsing ## WebM Parsing
ifeq ($(CONFIG_WEBM_IO), yes)
NESTEGG_SRCS += ../third_party/nestegg/halloc/halloc.h NESTEGG_SRCS += ../third_party/nestegg/halloc/halloc.h
NESTEGG_SRCS += ../third_party/nestegg/halloc/src/align.h NESTEGG_SRCS += ../third_party/nestegg/halloc/src/align.h
NESTEGG_SRCS += ../third_party/nestegg/halloc/src/halloc.c NESTEGG_SRCS += ../third_party/nestegg/halloc/src/halloc.c
@ -53,11 +54,14 @@ LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += ../tools_common.h
LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += ../webmdec.c LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += ../webmdec.c
LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += ../webmdec.h LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += ../webmdec.h
LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += webm_video_source.h LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += webm_video_source.h
endif
LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += test_vector_test.cc LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += test_vector_test.cc
# Currently we only support decoder perf tests for vp9 # Currently we only support decoder perf tests for vp9. Also they read from WebM
ifeq ($(CONFIG_DECODE_PERF_TESTS)$(CONFIG_VP9_DECODER), yesyes) # files, so WebM IO is required.
ifeq ($(CONFIG_DECODE_PERF_TESTS)$(CONFIG_VP9_DECODER)$(CONFIG_WEBM_IO), \
yesyesyes)
LIBVPX_TEST_SRCS-yes += decode_perf_test.cc LIBVPX_TEST_SRCS-yes += decode_perf_test.cc
endif endif

View File

@ -12,13 +12,16 @@
#include <cstdlib> #include <cstdlib>
#include <string> #include <string>
#include "third_party/googletest/src/include/gtest/gtest.h" #include "third_party/googletest/src/include/gtest/gtest.h"
#include "./vpx_config.h"
#include "test/codec_factory.h" #include "test/codec_factory.h"
#include "test/decode_test_driver.h" #include "test/decode_test_driver.h"
#include "test/ivf_video_source.h" #include "test/ivf_video_source.h"
#include "test/md5_helper.h" #include "test/md5_helper.h"
#include "test/test_vectors.h" #include "test/test_vectors.h"
#include "test/util.h" #include "test/util.h"
#if CONFIG_WEBM_IO
#include "test/webm_video_source.h" #include "test/webm_video_source.h"
#endif
#include "vpx_mem/vpx_mem.h" #include "vpx_mem/vpx_mem.h"
namespace { namespace {
@ -75,7 +78,13 @@ TEST_P(TestVectorTest, MD5Match) {
if (filename.substr(filename.length() - 3, 3) == "ivf") { if (filename.substr(filename.length() - 3, 3) == "ivf") {
video = new libvpx_test::IVFVideoSource(filename); video = new libvpx_test::IVFVideoSource(filename);
} else if (filename.substr(filename.length() - 4, 4) == "webm") { } else if (filename.substr(filename.length() - 4, 4) == "webm") {
#if CONFIG_WEBM_IO
video = new libvpx_test::WebMVideoSource(filename); video = new libvpx_test::WebMVideoSource(filename);
#else
fprintf(stderr, "WebM IO is disabled, skipping test vector %s\n",
filename.c_str());
return;
#endif
} }
video->Init(); video->Init();

View File

@ -11,10 +11,13 @@
#include <string> #include <string>
#include "third_party/googletest/src/include/gtest/gtest.h" #include "third_party/googletest/src/include/gtest/gtest.h"
#include "./vpx_config.h"
#include "test/codec_factory.h" #include "test/codec_factory.h"
#include "test/decode_test_driver.h" #include "test/decode_test_driver.h"
#include "test/md5_helper.h" #include "test/md5_helper.h"
#if CONFIG_WEBM_IO
#include "test/webm_video_source.h" #include "test/webm_video_source.h"
#endif
#include "vp9/decoder/vp9_thread.h" #include "vp9/decoder/vp9_thread.h"
namespace { namespace {
@ -97,6 +100,7 @@ TEST_P(VP9WorkerThreadTest, HookFailure) {
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// Multi-threaded decode tests // Multi-threaded decode tests
#if CONFIG_WEBM_IO
// Decodes |filename| with |num_threads|. Returns the md5 of the decoded frames. // Decodes |filename| with |num_threads|. Returns the md5 of the decoded frames.
string DecodeFile(const string& filename, int num_threads) { string DecodeFile(const string& filename, int num_threads) {
libvpx_test::WebMVideoSource video(filename); libvpx_test::WebMVideoSource video(filename);
@ -212,6 +216,7 @@ TEST(VP9DecodeMTTest, MTDecode3) {
} }
} }
} }
#endif // CONFIG_WEBM_IO
INSTANTIATE_TEST_CASE_P(Synchronous, VP9WorkerThreadTest, ::testing::Bool()); INSTANTIATE_TEST_CASE_P(Synchronous, VP9WorkerThreadTest, ::testing::Bool());