Add injectable video encoder and decoder to video quality test.
Bug: webrtc:10738 Change-Id: Ia5180cf0252ecd1c58a2080e3954fcb886b066e3 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141667 Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> Reviewed-by: Åsa Persson <asapersson@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Commit-Queue: Rasmus Brandt <brandtr@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28263}
This commit is contained in:
parent
54374a07ef
commit
3c396e52da
@ -22,7 +22,9 @@
|
||||
#include "api/network_state_predictor.h"
|
||||
#include "api/test/simulated_network.h"
|
||||
#include "api/transport/network_control.h"
|
||||
#include "api/video_codecs/video_decoder_factory.h"
|
||||
#include "api/video_codecs/video_encoder_config.h"
|
||||
#include "api/video_codecs/video_encoder_factory.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -122,6 +124,8 @@ class VideoQualityTestFixtureInterface {
|
||||
std::unique_ptr<NetworkBehaviorInterface> receiver_network;
|
||||
|
||||
std::unique_ptr<FecControllerFactoryInterface> fec_controller_factory;
|
||||
std::unique_ptr<VideoEncoderFactory> video_encoder_factory;
|
||||
std::unique_ptr<VideoDecoderFactory> video_decoder_factory;
|
||||
std::unique_ptr<NetworkStatePredictorFactoryInterface>
|
||||
network_state_predictor_factory;
|
||||
std::unique_ptr<NetworkControllerFactoryInterface>
|
||||
|
||||
@ -268,11 +268,11 @@ std::unique_ptr<VideoDecoder> VideoQualityTest::CreateVideoDecoder(
|
||||
std::unique_ptr<VideoDecoder> decoder;
|
||||
if (format.name == "multiplex") {
|
||||
decoder = absl::make_unique<MultiplexDecoderAdapter>(
|
||||
&internal_decoder_factory_, SdpVideoFormat(cricket::kVp9CodecName));
|
||||
decoder_factory_.get(), SdpVideoFormat(cricket::kVp9CodecName));
|
||||
} else if (format.name == "FakeCodec") {
|
||||
decoder = webrtc::FakeVideoDecoderFactory::CreateVideoDecoder();
|
||||
} else {
|
||||
decoder = internal_decoder_factory_.CreateVideoDecoder(format);
|
||||
decoder = decoder_factory_->CreateVideoDecoder(format);
|
||||
}
|
||||
if (!params_.logging.encoded_frame_base_path.empty()) {
|
||||
rtc::StringBuilder str;
|
||||
@ -290,15 +290,15 @@ std::unique_ptr<VideoEncoder> VideoQualityTest::CreateVideoEncoder(
|
||||
VideoAnalyzer* analyzer) {
|
||||
std::unique_ptr<VideoEncoder> encoder;
|
||||
if (format.name == "VP8") {
|
||||
encoder = absl::make_unique<EncoderSimulcastProxy>(
|
||||
&internal_encoder_factory_, format);
|
||||
encoder = absl::make_unique<EncoderSimulcastProxy>(encoder_factory_.get(),
|
||||
format);
|
||||
} else if (format.name == "multiplex") {
|
||||
encoder = absl::make_unique<MultiplexEncoderAdapter>(
|
||||
&internal_encoder_factory_, SdpVideoFormat(cricket::kVp9CodecName));
|
||||
encoder_factory_.get(), SdpVideoFormat(cricket::kVp9CodecName));
|
||||
} else if (format.name == "FakeCodec") {
|
||||
encoder = webrtc::FakeVideoEncoderFactory::CreateVideoEncoder();
|
||||
} else {
|
||||
encoder = internal_encoder_factory_.CreateVideoEncoder(format);
|
||||
encoder = encoder_factory_->CreateVideoEncoder(format);
|
||||
}
|
||||
|
||||
std::vector<FileWrapper> encoded_frame_dump_files;
|
||||
@ -365,6 +365,16 @@ VideoQualityTest::VideoQualityTest(
|
||||
if (injection_components_ == nullptr) {
|
||||
injection_components_ = absl::make_unique<InjectionComponents>();
|
||||
}
|
||||
if (injection_components_->video_decoder_factory != nullptr) {
|
||||
decoder_factory_ = std::move(injection_components_->video_decoder_factory);
|
||||
} else {
|
||||
decoder_factory_ = absl::make_unique<InternalDecoderFactory>();
|
||||
}
|
||||
if (injection_components_->video_encoder_factory != nullptr) {
|
||||
encoder_factory_ = std::move(injection_components_->video_encoder_factory);
|
||||
} else {
|
||||
encoder_factory_ = absl::make_unique<InternalEncoderFactory>();
|
||||
}
|
||||
|
||||
payload_type_map_ = test::CallTest::payload_type_map_;
|
||||
RTC_DCHECK(payload_type_map_.find(kPayloadTypeH264) ==
|
||||
|
||||
@ -106,12 +106,12 @@ class VideoQualityTest :
|
||||
RtcEventLogFactory rtc_event_log_factory_;
|
||||
|
||||
test::FunctionVideoDecoderFactory video_decoder_factory_;
|
||||
InternalDecoderFactory internal_decoder_factory_;
|
||||
std::unique_ptr<VideoDecoderFactory> decoder_factory_;
|
||||
test::FunctionVideoEncoderFactory video_encoder_factory_;
|
||||
test::FunctionVideoEncoderFactory video_encoder_factory_with_analyzer_;
|
||||
std::unique_ptr<VideoBitrateAllocatorFactory>
|
||||
video_bitrate_allocator_factory_;
|
||||
InternalEncoderFactory internal_encoder_factory_;
|
||||
std::unique_ptr<VideoEncoderFactory> encoder_factory_;
|
||||
std::vector<VideoSendStream::Config> thumbnail_send_configs_;
|
||||
std::vector<VideoEncoderConfig> thumbnail_encoder_configs_;
|
||||
std::vector<VideoSendStream*> thumbnail_send_streams_;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user