Return InitEncode errors from simulcast adapter SimulcastEncoderAdapter::InitEncode stores the encoder InitEncode result separately from the earlier VerifyCodec result. Use that InitEncode result when logging and returning errors so callers see the actual encoder failure code. Bug: webrtc:514425860 Change-Id: I566476c299aa9c4fb691649d2347b19d781e38ea Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/473540 Commit-Queue: Boris Tsirkin <btsirkin@meta.com> Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Sam Zackrisson <saza@webrtc.org> Cr-Commit-Position: refs/heads/main@{#47743}
diff --git a/media/engine/simulcast_encoder_adapter.cc b/media/engine/simulcast_encoder_adapter.cc index 2edb6be..ea001c0 100644 --- a/media/engine/simulcast_encoder_adapter.cc +++ b/media/engine/simulcast_encoder_adapter.cc
@@ -467,11 +467,11 @@ encoded_complete_callback_); if (total_streams_count_ == 1) { RTC_LOG(LS_ERROR) << "[SEA] InitEncode: failed with error code: " - << WebRtcVideoCodecErrorToString(ret); - return ret; + << WebRtcVideoCodecErrorToString(result); + return result; } RTC_LOG(LS_WARNING) << "[SEA] InitEncode: failed with error code: " - << WebRtcVideoCodecErrorToString(ret) + << WebRtcVideoCodecErrorToString(result) << ". Falling back to multi-encoder mode."; } @@ -508,7 +508,7 @@ encoder_context.reset(); Release(); RTC_LOG(LS_ERROR) << "[SEA] InitEncode: failed with error code: " - << WebRtcVideoCodecErrorToString(ret); + << WebRtcVideoCodecErrorToString(result); return result; }
diff --git a/media/engine/simulcast_encoder_adapter_unittest.cc b/media/engine/simulcast_encoder_adapter_unittest.cc index 9a47a62..01958a3 100644 --- a/media/engine/simulcast_encoder_adapter_unittest.cc +++ b/media/engine/simulcast_encoder_adapter_unittest.cc
@@ -1925,6 +1925,23 @@ EXPECT_TRUE(helper_->factory()->encoders().empty()); } +TEST_F(TestSimulcastEncoderAdapterFake, + SingleStreamInitEncodeReturnsEncoderError) { + SimulcastTestFixtureImpl::DefaultSettings( + &codec_, static_cast<const int*>(kTestTemporalLayerProfile), + kVideoCodecVP8); + codec_.numberOfSimulcastStreams = 1; + + EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, adapter_->InitEncode(&codec_, kSettings)); + ASSERT_EQ(1u, helper_->factory()->encoders().size()); + + helper_->factory()->encoders()[0]->set_init_encode_return_value( + WEBRTC_VIDEO_CODEC_ENCODER_FAILURE); + + EXPECT_EQ(WEBRTC_VIDEO_CODEC_ENCODER_FAILURE, + adapter_->InitEncode(&codec_, kSettings)); +} + TEST_F(TestSimulcastEncoderAdapterFake, DoesNotAlterMaxQpForScreenshare) { const int kHighMaxQp = 56; const int kLowMaxQp = 46;