From 0817380a56a627c8ea24d5dedcab5708f64bc27a Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Tue, 23 Jan 2024 13:02:46 +0100 Subject: [PATCH] Pass Environment when creating VideoDecoder in VideoReceiveStream2 Bug: webrtc:15791 Change-Id: Ic646d6303bab1d28057258707aaa3c3e75ac9454 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/335820 Reviewed-by: Philip Eliasson Commit-Queue: Danil Chapovalov Cr-Commit-Position: refs/heads/main@{#41613} --- video/video_receive_stream2.cc | 2 +- video/video_receive_stream2_unittest.cc | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/video/video_receive_stream2.cc b/video/video_receive_stream2.cc index 9e095064ba..7d307c6d2c 100644 --- a/video/video_receive_stream2.cc +++ b/video/video_receive_stream2.cc @@ -519,7 +519,7 @@ void VideoReceiveStream2::CreateAndRegisterExternalDecoder( TRACE_EVENT0("webrtc", "VideoReceiveStream2::CreateAndRegisterExternalDecoder"); std::unique_ptr video_decoder = - config_.decoder_factory->CreateVideoDecoder(decoder.video_format); + config_.decoder_factory->Create(env_, decoder.video_format); // If we still have no valid decoder, we have to create a "Null" decoder // that ignores all calls. The reason we can get into this state is that the // old decoder factory interface doesn't have a way to query supported diff --git a/video/video_receive_stream2_unittest.cc b/video/video_receive_stream2_unittest.cc index 50e00aa31b..221d17b5be 100644 --- a/video/video_receive_stream2_unittest.cc +++ b/video/video_receive_stream2_unittest.cc @@ -205,10 +205,9 @@ class VideoReceiveStream2Test : public ::testing::TestWithParam { time_controller_.GetMainThread()), h264_decoder_factory_(&mock_decoder_) { // By default, mock decoder factory is backed by VideoDecoderProxyFactory. - ON_CALL(mock_h264_decoder_factory_, CreateVideoDecoder) - .WillByDefault( - Invoke(&h264_decoder_factory_, - &test::VideoDecoderProxyFactory::CreateVideoDecoder)); + ON_CALL(mock_h264_decoder_factory_, Create) + .WillByDefault(Invoke(&h264_decoder_factory_, + &test::VideoDecoderProxyFactory::Create)); // By default, mock decode will wrap the fake decoder. ON_CALL(mock_decoder_, Configure) @@ -459,7 +458,7 @@ TEST_P(VideoReceiveStream2Test, LazyDecoderCreation) { rtppacket.SetTimestamp(0); // No decoders are created by default. - EXPECT_CALL(mock_h264_decoder_factory_, CreateVideoDecoder(_)).Times(0); + EXPECT_CALL(mock_h264_decoder_factory_, Create).Times(0); video_receive_stream_->Start(); time_controller_.AdvanceTime(TimeDelta::Zero()); @@ -467,9 +466,8 @@ TEST_P(VideoReceiveStream2Test, LazyDecoderCreation) { testing::Mock::VerifyAndClearExpectations(&mock_h264_decoder_factory_)); // Verify that the decoder is created when we receive payload data and tries // to decode a frame. - EXPECT_CALL( - mock_h264_decoder_factory_, - CreateVideoDecoder(Field(&SdpVideoFormat::name, testing::Eq("H264")))); + EXPECT_CALL(mock_h264_decoder_factory_, + Create(_, Field(&SdpVideoFormat::name, Eq("H264")))); EXPECT_CALL(mock_decoder_, Configure); EXPECT_CALL(mock_decoder_, RegisterDecodeCompleteCallback); EXPECT_CALL(mock_decoder_, Decode(_, _));