chromium/third_party/libvpx/source/libvpx/test/encode_test_driver.h

/*
 *  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_