webrtc/test/function_video_encoder_factory.h
Rasmus Brandt 0cedc054a2 Refactor SimulcastTestUtility into SimulcastTestFixture{,Impl}
This will allow exposing the interface to downstream users that
want to test VP8 simulcast. No functional changes to the tests
themselves are expected.

Bug: webrtc:9281
Change-Id: I4128b8f35a4412c5b330cf55c8dc0e173d4570da
Reviewed-on: https://webrtc-review.googlesource.com/77361
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23469}
2018-05-31 11:48:17 +00:00

61 lines
1.7 KiB
C++

/*
* Copyright (c) 2018 The WebRTC 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 TEST_FUNCTION_VIDEO_ENCODER_FACTORY_H_
#define TEST_FUNCTION_VIDEO_ENCODER_FACTORY_H_
#include <functional>
#include <memory>
#include <utility>
#include <vector>
#include "api/video_codecs/sdp_video_format.h"
#include "api/video_codecs/video_encoder_factory.h"
#include "rtc_base/checks.h"
namespace webrtc {
namespace test {
// An encoder factory producing encoders by calling a supplied create
// function.
class FunctionVideoEncoderFactory final : public VideoEncoderFactory {
public:
explicit FunctionVideoEncoderFactory(
std::function<std::unique_ptr<VideoEncoder>()> create)
: create_(std::move(create)) {
codec_info_.is_hardware_accelerated = false;
codec_info_.has_internal_source = false;
}
// Unused by tests.
std::vector<SdpVideoFormat> GetSupportedFormats() const override {
RTC_NOTREACHED();
return {};
}
CodecInfo QueryVideoEncoder(
const SdpVideoFormat& /* format */) const override {
return codec_info_;
}
std::unique_ptr<VideoEncoder> CreateVideoEncoder(
const SdpVideoFormat& /* format */) override {
return create_();
}
private:
const std::function<std::unique_ptr<VideoEncoder>()> create_;
CodecInfo codec_info_;
};
} // namespace test
} // namespace webrtc
#endif // TEST_FUNCTION_VIDEO_ENCODER_FACTORY_H_