/* * Copyright (c) 2012 The WebM project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef VPX_TEST_ENCODE_TEST_DRIVER_H_ #define VPX_TEST_ENCODE_TEST_DRIVER_H_ #include <string> #include <vector> #include "gtest/gtest.h" #include "./vpx_config.h" #if CONFIG_VP8_ENCODER || CONFIG_VP9_ENCODER #include "vpx/vp8cx.h" #endif #include "vpx/vpx_tpl.h" namespace libvpx_test { class CodecFactory; class VideoSource; enum TestMode { … }; #if CONFIG_REALTIME_ONLY #define ALL_TEST_MODES … #define ONE_PASS_TEST_MODES … #define ONE_OR_TWO_PASS_TEST_MODES … #else #define ALL_TEST_MODES … #define ONE_PASS_TEST_MODES … #define ONE_OR_TWO_PASS_TEST_MODES … #endif #define TWO_PASS_TEST_MODES … // Provides an object to handle the libvpx get_cx_data() iteration pattern class CxDataIterator { … }; // Implements an in-memory store for libvpx twopass statistics class TwopassStatsStore { … }; // Provides a simplified interface to manage one video encoding pass, given // a configuration and video source. // // TODO(jkoleszar): The exact services it provides and the appropriate // level of abstraction will be fleshed out as more tests are written. class Encoder { … }; // Common test functionality for all Encoder tests. // // This class is a mixin which provides the main loop common to all // encoder tests. It provides hooks which can be overridden by subclasses // to implement each test's specific behavior, while centralizing the bulk // of the boilerplate. Note that it doesn't inherit the gtest testing // classes directly, so that tests can be parameterized differently. class EncoderTest { … }; } // namespace libvpx_test #endif // VPX_TEST_ENCODE_TEST_DRIVER_H_