Add test that attempting HW is still possible after SW fallback.
Based on previous discussions I would have thought that this test would fail, but it turns out that it passes. See referenced bug for context. Bug: webrtc:15021 Change-Id: I845b48f688fb25942e3b770d50cafbf8a0bafe94 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/298562 Auto-Submit: Henrik Boström <hbos@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Evan Shrubsole <eshr@google.com> Commit-Queue: Henrik Boström <hbos@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#39625}
This commit is contained in:
parent
7efd372f02
commit
62dc65b537
@ -796,6 +796,37 @@ TEST(SoftwareFallbackEncoderTest, ReportsHardwareAccelerated) {
|
||||
EXPECT_FALSE(wrapper->GetEncoderInfo().is_hardware_accelerated);
|
||||
}
|
||||
|
||||
TEST(SoftwareFallbackEncoderTest, ConfigureHardwareOnSecondAttempt) {
|
||||
auto* sw_encoder = new ::testing::NiceMock<MockVideoEncoder>();
|
||||
auto* hw_encoder = new ::testing::NiceMock<MockVideoEncoder>();
|
||||
EXPECT_CALL(*sw_encoder, GetEncoderInfo())
|
||||
.WillRepeatedly(Return(GetEncoderInfoWithHardwareAccelerated(false)));
|
||||
EXPECT_CALL(*hw_encoder, GetEncoderInfo())
|
||||
.WillRepeatedly(Return(GetEncoderInfoWithHardwareAccelerated(true)));
|
||||
|
||||
std::unique_ptr<VideoEncoder> wrapper =
|
||||
CreateVideoEncoderSoftwareFallbackWrapper(
|
||||
std::unique_ptr<VideoEncoder>(sw_encoder),
|
||||
std::unique_ptr<VideoEncoder>(hw_encoder));
|
||||
EXPECT_TRUE(wrapper->GetEncoderInfo().is_hardware_accelerated);
|
||||
|
||||
// Initialize the encoder. When HW attempt fails we fallback to SW.
|
||||
VideoCodec codec_ = {};
|
||||
codec_.width = 100;
|
||||
codec_.height = 100;
|
||||
EXPECT_CALL(*hw_encoder, InitEncode(_, _))
|
||||
.WillOnce(Return(WEBRTC_VIDEO_CODEC_ERR_PARAMETER));
|
||||
EXPECT_CALL(*sw_encoder, InitEncode(_, _))
|
||||
.WillOnce(Return(WEBRTC_VIDEO_CODEC_OK));
|
||||
wrapper->InitEncode(&codec_, kSettings);
|
||||
|
||||
// When reconfiguring (Release+InitEncode) we should re-attempt HW.
|
||||
wrapper->Release();
|
||||
EXPECT_CALL(*hw_encoder, InitEncode(_, _))
|
||||
.WillOnce(Return(WEBRTC_VIDEO_CODEC_OK));
|
||||
wrapper->InitEncode(&codec_, kSettings);
|
||||
}
|
||||
|
||||
class PreferTemporalLayersFallbackTest : public ::testing::Test {
|
||||
public:
|
||||
PreferTemporalLayersFallbackTest() {}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user