From 68ff368d19e8de7c7250d4d6d76c1fb6889655ca Mon Sep 17 00:00:00 2001 From: Vignesh Venkatasubramanian Date: Fri, 18 Apr 2014 11:24:02 -0700 Subject: [PATCH] Enable tests using WebM files only if webm_io is enabled There are a few tests which read/write directly to/from WebM files. They should be disabled when --disable-webm-io is passed. Change-Id: Ibac4732e27c66da33082151ba6e6993eaa9a1efd --- test/external_frame_buffer_test.cc | 13 +++++++++++++ test/test.mk | 8 ++++++-- test/test_vector_test.cc | 9 +++++++++ test/vp9_thread_test.cc | 5 +++++ 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/test/external_frame_buffer_test.cc b/test/external_frame_buffer_test.cc index 54c79e903..fb0449deb 100644 --- a/test/external_frame_buffer_test.cc +++ b/test/external_frame_buffer_test.cc @@ -10,13 +10,16 @@ #include +#include "./vpx_config.h" #include "test/codec_factory.h" #include "test/decode_test_driver.h" #include "test/ivf_video_source.h" #include "test/md5_helper.h" #include "test/test_vectors.h" #include "test/util.h" +#if CONFIG_WEBM_IO #include "test/webm_video_source.h" +#endif namespace { @@ -267,6 +270,7 @@ class ExternalFrameBufferMD5Test ExternalFrameBufferList fb_list_; }; +#if CONFIG_WEBM_IO // Class for testing passing in external frame buffers to libvpx. class ExternalFrameBufferTest : public ::testing::Test { protected: @@ -340,6 +344,7 @@ class ExternalFrameBufferTest : public ::testing::Test { int num_buffers_; ExternalFrameBufferList fb_list_; }; +#endif // CONFIG_WEBM_IO // This test runs through the set of test vectors, and decodes them. // 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") { video = new libvpx_test::IVFVideoSource(filename); } else { +#if CONFIG_WEBM_IO 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); video->Init(); @@ -380,6 +391,7 @@ TEST_P(ExternalFrameBufferMD5Test, ExtFBMD5Match) { delete video; } +#if CONFIG_WEBM_IO TEST_F(ExternalFrameBufferTest, MinFrameBuffers) { // Minimum number of external frame buffers for VP9 is // #VP9_MAXIMUM_REF_BUFFERS + #VPX_MAXIMUM_WORK_BUFFERS. @@ -460,6 +472,7 @@ TEST_F(ExternalFrameBufferTest, SetAfterDecode) { SetFrameBufferFunctions( num_buffers, get_vp9_frame_buffer, release_vp9_frame_buffer)); } +#endif // CONFIG_WEBM_IO VP9_INSTANTIATE_TEST_CASE(ExternalFrameBufferMD5Test, ::testing::ValuesIn(libvpx_test::kVP9TestVectors, diff --git a/test/test.mk b/test/test.mk index f1a8ed9a0..a489e631c 100644 --- a/test/test.mk +++ b/test/test.mk @@ -42,6 +42,7 @@ LIBVPX_TEST_SRCS-yes += encode_test_driver.cc LIBVPX_TEST_SRCS-yes += encode_test_driver.h ## WebM Parsing +ifeq ($(CONFIG_WEBM_IO), yes) NESTEGG_SRCS += ../third_party/nestegg/halloc/halloc.h NESTEGG_SRCS += ../third_party/nestegg/halloc/src/align.h 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.h LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += webm_video_source.h +endif LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += test_vector_test.cc -# Currently we only support decoder perf tests for vp9 -ifeq ($(CONFIG_DECODE_PERF_TESTS)$(CONFIG_VP9_DECODER), yesyes) +# Currently we only support decoder perf tests for vp9. Also they read from WebM +# 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 endif diff --git a/test/test_vector_test.cc b/test/test_vector_test.cc index 9ba18daef..1f294f20b 100644 --- a/test/test_vector_test.cc +++ b/test/test_vector_test.cc @@ -12,13 +12,16 @@ #include #include #include "third_party/googletest/src/include/gtest/gtest.h" +#include "./vpx_config.h" #include "test/codec_factory.h" #include "test/decode_test_driver.h" #include "test/ivf_video_source.h" #include "test/md5_helper.h" #include "test/test_vectors.h" #include "test/util.h" +#if CONFIG_WEBM_IO #include "test/webm_video_source.h" +#endif #include "vpx_mem/vpx_mem.h" namespace { @@ -75,7 +78,13 @@ TEST_P(TestVectorTest, MD5Match) { if (filename.substr(filename.length() - 3, 3) == "ivf") { video = new libvpx_test::IVFVideoSource(filename); } else if (filename.substr(filename.length() - 4, 4) == "webm") { +#if CONFIG_WEBM_IO 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(); diff --git a/test/vp9_thread_test.cc b/test/vp9_thread_test.cc index 5523f2024..0c9f71bc5 100644 --- a/test/vp9_thread_test.cc +++ b/test/vp9_thread_test.cc @@ -11,10 +11,13 @@ #include #include "third_party/googletest/src/include/gtest/gtest.h" +#include "./vpx_config.h" #include "test/codec_factory.h" #include "test/decode_test_driver.h" #include "test/md5_helper.h" +#if CONFIG_WEBM_IO #include "test/webm_video_source.h" +#endif #include "vp9/decoder/vp9_thread.h" namespace { @@ -97,6 +100,7 @@ TEST_P(VP9WorkerThreadTest, HookFailure) { // ----------------------------------------------------------------------------- // Multi-threaded decode tests +#if CONFIG_WEBM_IO // Decodes |filename| with |num_threads|. Returns the md5 of the decoded frames. string DecodeFile(const string& filename, int num_threads) { libvpx_test::WebMVideoSource video(filename); @@ -212,6 +216,7 @@ TEST(VP9DecodeMTTest, MTDecode3) { } } } +#endif // CONFIG_WEBM_IO INSTANTIATE_TEST_CASE_P(Synchronous, VP9WorkerThreadTest, ::testing::Bool());