diff --git a/api/test/video_codec_tester.h b/api/test/video_codec_tester.h index b2ce88c340..83408e6c1d 100644 --- a/api/test/video_codec_tester.h +++ b/api/test/video_codec_tester.h @@ -106,25 +106,25 @@ class VideoCodecTester { // Returns `VideoCodecTestStats` object that contains collected per-frame // metrics. virtual std::unique_ptr RunDecodeTest( - std::unique_ptr video_source, - std::unique_ptr decoder, + CodedVideoSource* video_source, + Decoder* decoder, const DecoderSettings& decoder_settings) = 0; // Pulls raw video frames from `video_source` and passes them to `encoder`. // Returns `VideoCodecTestStats` object that contains collected per-frame // metrics. virtual std::unique_ptr RunEncodeTest( - std::unique_ptr video_source, - std::unique_ptr encoder, + RawVideoSource* video_source, + Encoder* encoder, const EncoderSettings& encoder_settings) = 0; // Pulls raw video frames from `video_source`, passes them to `encoder` and // then passes encoded frames to `decoder`. Returns `VideoCodecTestStats` // object that contains collected per-frame metrics. virtual std::unique_ptr RunEncodeDecodeTest( - std::unique_ptr video_source, - std::unique_ptr encoder, - std::unique_ptr decoder, + RawVideoSource* video_source, + Encoder* encoder, + Decoder* decoder, const EncoderSettings& encoder_settings, const DecoderSettings& decoder_settings) = 0; }; diff --git a/modules/video_coding/codecs/test/video_codec_test.cc b/modules/video_coding/codecs/test/video_codec_test.cc index d2ad7431ef..ce7f4e7955 100644 --- a/modules/video_coding/codecs/test/video_codec_test.cc +++ b/modules/video_coding/codecs/test/video_codec_test.cc @@ -423,7 +423,7 @@ class EncodeDecodeTest TEST_P(EncodeDecodeTest, DISABLED_TestEncodeDecode) { std::unique_ptr stats = tester_->RunEncodeDecodeTest( - std::move(video_source_), std::move(encoder_), std::move(decoder_), + video_source_.get(), encoder_.get(), decoder_.get(), test_params_.encoder_settings, test_params_.decoder_settings); const auto& frame_settings = test_params_.encoding_settings.frame_settings; diff --git a/modules/video_coding/codecs/test/video_codec_tester_impl.cc b/modules/video_coding/codecs/test/video_codec_tester_impl.cc index 09c5978cfc..3655c3061d 100644 --- a/modules/video_coding/codecs/test/video_codec_tester_impl.cc +++ b/modules/video_coding/codecs/test/video_codec_tester_impl.cc @@ -45,8 +45,8 @@ constexpr Frequency k90kHz = Frequency::Hertz(90000); // that reads reference frames from a separate thread. class SyncRawVideoSource : public VideoCodecAnalyzer::ReferenceVideoSource { public: - explicit SyncRawVideoSource(std::unique_ptr video_source) - : video_source_(std::move(video_source)) {} + explicit SyncRawVideoSource(RawVideoSource* video_source) + : video_source_(video_source) {} absl::optional PullFrame() { MutexLock lock(&mutex_); @@ -59,7 +59,7 @@ class SyncRawVideoSource : public VideoCodecAnalyzer::ReferenceVideoSource { } protected: - std::unique_ptr video_source_ RTC_GUARDED_BY(mutex_); + RawVideoSource* const video_source_ RTC_GUARDED_BY(mutex_); Mutex mutex_; }; @@ -153,11 +153,11 @@ class LimitedTaskQueue { class TesterDecoder { public: - TesterDecoder(std::unique_ptr decoder, + TesterDecoder(Decoder* decoder, VideoCodecAnalyzer* analyzer, const DecoderSettings& settings, rtc::TaskQueue& task_queue) - : decoder_(std::move(decoder)), + : decoder_(decoder), analyzer_(analyzer), settings_(settings), pacer_(settings.pacing), @@ -183,7 +183,7 @@ class TesterDecoder { void Flush() { task_queue_.WaitForPreviouslyPostedTasks(); } protected: - std::unique_ptr decoder_; + Decoder* const decoder_; VideoCodecAnalyzer* const analyzer_; const DecoderSettings& settings_; Pacer pacer_; @@ -192,12 +192,12 @@ class TesterDecoder { class TesterEncoder { public: - TesterEncoder(std::unique_ptr encoder, + TesterEncoder(Encoder* encoder, TesterDecoder* decoder, VideoCodecAnalyzer* analyzer, const EncoderSettings& settings, rtc::TaskQueue& task_queue) - : encoder_(std::move(encoder)), + : encoder_(encoder), decoder_(decoder), analyzer_(analyzer), settings_(settings), @@ -225,7 +225,7 @@ class TesterEncoder { void Flush() { task_queue_.WaitForPreviouslyPostedTasks(); } protected: - std::unique_ptr encoder_; + Encoder* const encoder_; TesterDecoder* const decoder_; VideoCodecAnalyzer* const analyzer_; const EncoderSettings& settings_; @@ -247,8 +247,8 @@ VideoCodecTesterImpl::VideoCodecTesterImpl(TaskQueueFactory* task_queue_factory) } std::unique_ptr VideoCodecTesterImpl::RunDecodeTest( - std::unique_ptr video_source, - std::unique_ptr decoder, + CodedVideoSource* video_source, + Decoder* decoder, const DecoderSettings& decoder_settings) { rtc::TaskQueue analyser_task_queue(task_queue_factory_->CreateTaskQueue( "Analyzer", TaskQueueFactory::Priority::NORMAL)); @@ -256,8 +256,8 @@ std::unique_ptr VideoCodecTesterImpl::RunDecodeTest( "Decoder", TaskQueueFactory::Priority::NORMAL)); VideoCodecAnalyzer perf_analyzer(analyser_task_queue); - TesterDecoder tester_decoder(std::move(decoder), &perf_analyzer, - decoder_settings, decoder_task_queue); + TesterDecoder tester_decoder(decoder, &perf_analyzer, decoder_settings, + decoder_task_queue); while (auto frame = video_source->PullFrame()) { tester_decoder.Decode(*frame); @@ -269,19 +269,18 @@ std::unique_ptr VideoCodecTesterImpl::RunDecodeTest( } std::unique_ptr VideoCodecTesterImpl::RunEncodeTest( - std::unique_ptr video_source, - std::unique_ptr encoder, + RawVideoSource* video_source, + Encoder* encoder, const EncoderSettings& encoder_settings) { rtc::TaskQueue analyser_task_queue(task_queue_factory_->CreateTaskQueue( "Analyzer", TaskQueueFactory::Priority::NORMAL)); rtc::TaskQueue encoder_task_queue(task_queue_factory_->CreateTaskQueue( "Encoder", TaskQueueFactory::Priority::NORMAL)); - SyncRawVideoSource sync_source(std::move(video_source)); + SyncRawVideoSource sync_source(video_source); VideoCodecAnalyzer perf_analyzer(analyser_task_queue); - TesterEncoder tester_encoder(std::move(encoder), /*decoder=*/nullptr, - &perf_analyzer, encoder_settings, - encoder_task_queue); + TesterEncoder tester_encoder(encoder, /*decoder=*/nullptr, &perf_analyzer, + encoder_settings, encoder_task_queue); while (auto frame = sync_source.PullFrame()) { tester_encoder.Encode(*frame); @@ -293,9 +292,9 @@ std::unique_ptr VideoCodecTesterImpl::RunEncodeTest( } std::unique_ptr VideoCodecTesterImpl::RunEncodeDecodeTest( - std::unique_ptr video_source, - std::unique_ptr encoder, - std::unique_ptr decoder, + RawVideoSource* video_source, + Encoder* encoder, + Decoder* decoder, const EncoderSettings& encoder_settings, const DecoderSettings& decoder_settings) { rtc::TaskQueue analyser_task_queue(task_queue_factory_->CreateTaskQueue( @@ -305,13 +304,12 @@ std::unique_ptr VideoCodecTesterImpl::RunEncodeDecodeTest( rtc::TaskQueue encoder_task_queue(task_queue_factory_->CreateTaskQueue( "Encoder", TaskQueueFactory::Priority::NORMAL)); - SyncRawVideoSource sync_source(std::move(video_source)); + SyncRawVideoSource sync_source(video_source); VideoCodecAnalyzer perf_analyzer(analyser_task_queue, &sync_source); - TesterDecoder tester_decoder(std::move(decoder), &perf_analyzer, - decoder_settings, decoder_task_queue); - TesterEncoder tester_encoder(std::move(encoder), &tester_decoder, - &perf_analyzer, encoder_settings, - encoder_task_queue); + TesterDecoder tester_decoder(decoder, &perf_analyzer, decoder_settings, + decoder_task_queue); + TesterEncoder tester_encoder(encoder, &tester_decoder, &perf_analyzer, + encoder_settings, encoder_task_queue); while (auto frame = sync_source.PullFrame()) { tester_encoder.Encode(*frame); diff --git a/modules/video_coding/codecs/test/video_codec_tester_impl.h b/modules/video_coding/codecs/test/video_codec_tester_impl.h index 4ac61eef56..bb8ee72502 100644 --- a/modules/video_coding/codecs/test/video_codec_tester_impl.h +++ b/modules/video_coding/codecs/test/video_codec_tester_impl.h @@ -26,19 +26,19 @@ class VideoCodecTesterImpl : public VideoCodecTester { explicit VideoCodecTesterImpl(TaskQueueFactory* task_queue_factory); std::unique_ptr RunDecodeTest( - std::unique_ptr video_source, - std::unique_ptr decoder, + CodedVideoSource* video_source, + Decoder* decoder, const DecoderSettings& decoder_settings) override; std::unique_ptr RunEncodeTest( - std::unique_ptr video_source, - std::unique_ptr encoder, + RawVideoSource* video_source, + Encoder* encoder, const EncoderSettings& encoder_settings) override; std::unique_ptr RunEncodeDecodeTest( - std::unique_ptr video_source, - std::unique_ptr encoder, - std::unique_ptr decoder, + RawVideoSource* video_source, + Encoder* encoder, + Decoder* decoder, const EncoderSettings& encoder_settings, const DecoderSettings& decoder_settings) override; diff --git a/modules/video_coding/codecs/test/video_codec_tester_impl_unittest.cc b/modules/video_coding/codecs/test/video_codec_tester_impl_unittest.cc index 409e813e90..c1195a7f3d 100644 --- a/modules/video_coding/codecs/test/video_codec_tester_impl_unittest.cc +++ b/modules/video_coding/codecs/test/video_codec_tester_impl_unittest.cc @@ -149,10 +149,10 @@ class VideoCodecTesterImplPacingTest }; TEST_P(VideoCodecTesterImplPacingTest, PaceEncode) { - auto video_source = std::make_unique(); + MockRawVideoSource video_source; size_t frame_num = 0; - EXPECT_CALL(*video_source, PullFrame).WillRepeatedly(Invoke([&]() mutable { + EXPECT_CALL(video_source, PullFrame).WillRepeatedly(Invoke([&]() mutable { if (frame_num >= num_frames_) { return absl::optional(); } @@ -164,15 +164,13 @@ TEST_P(VideoCodecTesterImplPacingTest, PaceEncode) { return absl::optional(CreateVideoFrame(timestamp_rtp)); })); - auto encoder = std::make_unique(); + MockEncoder encoder; EncoderSettings encoder_settings; encoder_settings.pacing = pacing_settings_; VideoCodecTesterImpl tester(&task_queue_factory_); - auto fs = tester - .RunEncodeTest(std::move(video_source), std::move(encoder), - encoder_settings) - ->Slice(); + auto fs = + tester.RunEncodeTest(&video_source, &encoder, encoder_settings)->Slice(); ASSERT_EQ(fs.size(), num_frames_); for (size_t i = 0; i < fs.size(); ++i) { @@ -182,10 +180,10 @@ TEST_P(VideoCodecTesterImplPacingTest, PaceEncode) { } TEST_P(VideoCodecTesterImplPacingTest, PaceDecode) { - auto video_source = std::make_unique(); + MockCodedVideoSource video_source; size_t frame_num = 0; - EXPECT_CALL(*video_source, PullFrame).WillRepeatedly(Invoke([&]() mutable { + EXPECT_CALL(video_source, PullFrame).WillRepeatedly(Invoke([&]() mutable { if (frame_num >= num_frames_) { return absl::optional(); } @@ -197,15 +195,13 @@ TEST_P(VideoCodecTesterImplPacingTest, PaceDecode) { return absl::optional(CreateEncodedImage(timestamp_rtp)); })); - auto decoder = std::make_unique(); + MockDecoder decoder; DecoderSettings decoder_settings; decoder_settings.pacing = pacing_settings_; VideoCodecTesterImpl tester(&task_queue_factory_); - auto fs = tester - .RunDecodeTest(std::move(video_source), std::move(decoder), - decoder_settings) - ->Slice(); + auto fs = + tester.RunDecodeTest(&video_source, &decoder, decoder_settings)->Slice(); ASSERT_EQ(fs.size(), num_frames_); for (size_t i = 0; i < fs.size(); ++i) {