Using FunctionVideoEncoderFactory in VideoQualityTest.
This reduces code duplication. FunctionVideoEncoderFactory is modified to allow providing a function that takes an argument for the format. Bug: webrtc:9510 Change-Id: I67fee84af4968a51326b52db35f3eb0c65848735 Reviewed-on: https://webrtc-review.googlesource.com/88222 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Sebastian Jansson <srte@webrtc.org> Cr-Commit-Position: refs/heads/master@{#23965}
This commit is contained in:
parent
8e6602fade
commit
e6d7c3e32a
@ -29,10 +29,11 @@ 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;
|
||||
}
|
||||
: create_([create](const SdpVideoFormat&) { return create(); }) {}
|
||||
explicit FunctionVideoEncoderFactory(
|
||||
std::function<std::unique_ptr<VideoEncoder>(const SdpVideoFormat&)>
|
||||
create)
|
||||
: create_(std::move(create)) {}
|
||||
|
||||
// Unused by tests.
|
||||
std::vector<SdpVideoFormat> GetSupportedFormats() const override {
|
||||
@ -42,17 +43,20 @@ class FunctionVideoEncoderFactory final : public VideoEncoderFactory {
|
||||
|
||||
CodecInfo QueryVideoEncoder(
|
||||
const SdpVideoFormat& /* format */) const override {
|
||||
return codec_info_;
|
||||
CodecInfo codec_info;
|
||||
codec_info.is_hardware_accelerated = false;
|
||||
codec_info.has_internal_source = false;
|
||||
return codec_info;
|
||||
}
|
||||
|
||||
std::unique_ptr<VideoEncoder> CreateVideoEncoder(
|
||||
const SdpVideoFormat& /* format */) override {
|
||||
return create_();
|
||||
const SdpVideoFormat& format) override {
|
||||
return create_(format);
|
||||
}
|
||||
|
||||
private:
|
||||
const std::function<std::unique_ptr<VideoEncoder>()> create_;
|
||||
CodecInfo codec_info_;
|
||||
const std::function<std::unique_ptr<VideoEncoder>(const SdpVideoFormat&)>
|
||||
create_;
|
||||
};
|
||||
|
||||
} // namespace test
|
||||
|
||||
@ -67,24 +67,7 @@ class VideoStreamFactory
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
// Not used by these tests.
|
||||
std::vector<SdpVideoFormat>
|
||||
VideoQualityTest::TestVideoEncoderFactory::GetSupportedFormats() const {
|
||||
RTC_NOTREACHED();
|
||||
return {};
|
||||
}
|
||||
|
||||
VideoEncoderFactory::CodecInfo
|
||||
VideoQualityTest::TestVideoEncoderFactory::QueryVideoEncoder(
|
||||
const SdpVideoFormat& format) const {
|
||||
CodecInfo codec_info;
|
||||
codec_info.is_hardware_accelerated = false;
|
||||
codec_info.has_internal_source = false;
|
||||
return codec_info;
|
||||
}
|
||||
|
||||
std::unique_ptr<VideoEncoder>
|
||||
VideoQualityTest::TestVideoEncoderFactory::CreateVideoEncoder(
|
||||
std::unique_ptr<VideoEncoder> VideoQualityTest::CreateVideoEncoder(
|
||||
const SdpVideoFormat& format) {
|
||||
if (format.name == "VP8") {
|
||||
return absl::make_unique<VP8EncoderSimulcastProxy>(
|
||||
@ -99,7 +82,12 @@ VideoQualityTest::TestVideoEncoderFactory::CreateVideoEncoder(
|
||||
|
||||
VideoQualityTest::VideoQualityTest(
|
||||
std::unique_ptr<FecControllerFactoryInterface> fec_controller_factory)
|
||||
: clock_(Clock::GetRealTimeClock()), receive_logs_(0), send_logs_(0) {
|
||||
: clock_(Clock::GetRealTimeClock()),
|
||||
video_encoder_factory_([this](const SdpVideoFormat& format) {
|
||||
return this->CreateVideoEncoder(format);
|
||||
}),
|
||||
receive_logs_(0),
|
||||
send_logs_(0) {
|
||||
payload_type_map_ = test::CallTest::payload_type_map_;
|
||||
RTC_DCHECK(payload_type_map_.find(kPayloadTypeH264) ==
|
||||
payload_type_map_.end());
|
||||
|
||||
@ -55,18 +55,6 @@ class VideoQualityTest :
|
||||
static std::vector<int> ParseCSV(const std::string& str);
|
||||
|
||||
protected:
|
||||
class TestVideoEncoderFactory : public VideoEncoderFactory {
|
||||
std::vector<SdpVideoFormat> GetSupportedFormats() const override;
|
||||
|
||||
CodecInfo QueryVideoEncoder(const SdpVideoFormat& format) const override;
|
||||
|
||||
std::unique_ptr<VideoEncoder> CreateVideoEncoder(
|
||||
const SdpVideoFormat& format) override;
|
||||
|
||||
private:
|
||||
InternalEncoderFactory internal_encoder_factory_;
|
||||
};
|
||||
|
||||
std::map<uint8_t, webrtc::MediaType> payload_type_map_;
|
||||
std::unique_ptr<FecControllerFactoryInterface> fec_controller_factory_;
|
||||
|
||||
@ -84,6 +72,8 @@ class VideoQualityTest :
|
||||
void CreateCapturers();
|
||||
std::unique_ptr<test::FrameGenerator> CreateFrameGenerator(size_t video_idx);
|
||||
void SetupThumbnailCapturers(size_t num_thumbnail_streams);
|
||||
std::unique_ptr<VideoEncoder> CreateVideoEncoder(
|
||||
const SdpVideoFormat& format);
|
||||
void SetupVideo(Transport* send_transport, Transport* recv_transport);
|
||||
void SetupThumbnails(Transport* send_transport, Transport* recv_transport);
|
||||
void DestroyThumbnailStreams();
|
||||
@ -98,8 +88,10 @@ class VideoQualityTest :
|
||||
|
||||
std::vector<std::unique_ptr<test::VideoCapturer>> video_capturers_;
|
||||
std::vector<std::unique_ptr<test::VideoCapturer>> thumbnail_capturers_;
|
||||
TestVideoEncoderFactory video_encoder_factory_;
|
||||
Clock* const clock_;
|
||||
|
||||
test::FunctionVideoEncoderFactory video_encoder_factory_;
|
||||
InternalEncoderFactory internal_encoder_factory_;
|
||||
std::vector<VideoSendStream::Config> thumbnail_send_configs_;
|
||||
std::vector<VideoEncoderConfig> thumbnail_encoder_configs_;
|
||||
std::vector<VideoSendStream*> thumbnail_send_streams_;
|
||||
@ -109,9 +101,6 @@ class VideoQualityTest :
|
||||
std::vector<VideoSendStream::Config> video_send_configs_;
|
||||
std::vector<VideoEncoderConfig> video_encoder_configs_;
|
||||
std::vector<VideoSendStream*> video_send_streams_;
|
||||
|
||||
Clock* const clock_;
|
||||
|
||||
int receive_logs_;
|
||||
int send_logs_;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user