Skip to content
This repository was archived by the owner on Oct 25, 2024. It is now read-only.

Commit 1710706

Browse files
Åsa PerssonCommit Bot
authored andcommitted
Configure framerate/temporal layers via VideoEncoderConfig.
Bug: none Change-Id: Ia8d350a8a71ce21691eba38db71248c10a7728a7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/186663 Commit-Queue: Åsa Persson <[email protected]> Reviewed-by: Rasmus Brandt <[email protected]> Cr-Commit-Position: refs/heads/master@{#32350}
1 parent b647785 commit 1710706

File tree

1 file changed

+17
-55
lines changed

1 file changed

+17
-55
lines changed

video/video_stream_encoder_unittest.cc

Lines changed: 17 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -417,33 +417,6 @@ class VideoStreamEncoderUnderTest : public VideoStreamEncoder {
417417
FakeAdaptationConstraint fake_adaptation_constraint_;
418418
};
419419

420-
class VideoStreamFactory
421-
: public VideoEncoderConfig::VideoStreamFactoryInterface {
422-
public:
423-
explicit VideoStreamFactory(size_t num_temporal_layers, int framerate)
424-
: num_temporal_layers_(num_temporal_layers), framerate_(framerate) {
425-
EXPECT_GT(num_temporal_layers, 0u);
426-
EXPECT_GT(framerate, 0);
427-
}
428-
429-
private:
430-
std::vector<VideoStream> CreateEncoderStreams(
431-
int width,
432-
int height,
433-
const VideoEncoderConfig& encoder_config) override {
434-
std::vector<VideoStream> streams =
435-
test::CreateVideoStreams(width, height, encoder_config);
436-
for (VideoStream& stream : streams) {
437-
stream.num_temporal_layers = num_temporal_layers_;
438-
stream.max_framerate = framerate_;
439-
}
440-
return streams;
441-
}
442-
443-
const size_t num_temporal_layers_;
444-
const int framerate_;
445-
};
446-
447420
// Simulates simulcast behavior and makes highest stream resolutions divisible
448421
// by 4.
449422
class CroppingVideoStreamFactory
@@ -651,16 +624,11 @@ class VideoStreamEncoderTest : public ::testing::Test {
651624

652625
VideoEncoderConfig video_encoder_config;
653626
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
654-
video_encoder_config.video_stream_factory =
655-
new rtc::RefCountedObject<VideoStreamFactory>(1, max_framerate_);
627+
EXPECT_EQ(1u, video_encoder_config.simulcast_layers.size());
628+
video_encoder_config.simulcast_layers[0].num_temporal_layers = 1;
629+
video_encoder_config.simulcast_layers[0].max_framerate = max_framerate_;
656630
video_encoder_config_ = video_encoder_config.Copy();
657631

658-
// Framerate limit is specified by the VideoStreamFactory.
659-
std::vector<VideoStream> streams =
660-
video_encoder_config.video_stream_factory->CreateEncoderStreams(
661-
codec_width_, codec_height_, video_encoder_config);
662-
max_framerate_ = streams[0].max_framerate;
663-
664632
ConfigureEncoder(std::move(video_encoder_config));
665633
}
666634

@@ -693,13 +661,14 @@ class VideoStreamEncoderTest : public ::testing::Test {
693661
video_send_config_.encoder_settings.allocation_cb_type = allocation_cb_type;
694662

695663
VideoEncoderConfig video_encoder_config;
696-
video_encoder_config.codec_type = PayloadStringToCodecType(payload_name);
697-
video_encoder_config.number_of_streams = num_streams;
664+
test::FillEncoderConfiguration(PayloadStringToCodecType(payload_name),
665+
num_streams, &video_encoder_config);
666+
for (auto& layer : video_encoder_config.simulcast_layers) {
667+
layer.num_temporal_layers = num_temporal_layers;
668+
layer.max_framerate = kDefaultFramerate;
669+
}
698670
video_encoder_config.max_bitrate_bps =
699671
num_streams == 1 ? kTargetBitrateBps : kSimulcastTargetBitrateBps;
700-
video_encoder_config.video_stream_factory =
701-
new rtc::RefCountedObject<VideoStreamFactory>(num_temporal_layers,
702-
kDefaultFramerate);
703672
video_encoder_config.content_type =
704673
screenshare ? VideoEncoderConfig::ContentType::kScreen
705674
: VideoEncoderConfig::ContentType::kRealtimeVideo;
@@ -4074,11 +4043,9 @@ TEST_F(VideoStreamEncoderTest, OveruseDetectorUpdatedOnReconfigureAndAdaption) {
40744043

40754044
// Trigger reconfigure encoder (without resetting the entire instance).
40764045
VideoEncoderConfig video_encoder_config;
4077-
video_encoder_config.codec_type = kVideoCodecVP8;
4046+
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
4047+
video_encoder_config.simulcast_layers[0].max_framerate = kFramerate;
40784048
video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
4079-
video_encoder_config.number_of_streams = 1;
4080-
video_encoder_config.video_stream_factory =
4081-
new rtc::RefCountedObject<VideoStreamFactory>(1, kFramerate);
40824049
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
40834050
kMaxPayloadLength);
40844051
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
@@ -4129,13 +4096,11 @@ TEST_F(VideoStreamEncoderTest,
41294096

41304097
// Trigger initial configuration.
41314098
VideoEncoderConfig video_encoder_config;
4132-
video_encoder_config.codec_type = kVideoCodecVP8;
4099+
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
4100+
video_encoder_config.simulcast_layers[0].max_framerate = kLowFramerate;
41334101
video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
4134-
video_encoder_config.number_of_streams = 1;
4135-
video_encoder_config.video_stream_factory =
4136-
new rtc::RefCountedObject<VideoStreamFactory>(1, kLowFramerate);
41374102
source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
4138-
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
4103+
video_stream_encoder_->ConfigureEncoder(video_encoder_config.Copy(),
41394104
kMaxPayloadLength);
41404105
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
41414106

@@ -4155,8 +4120,7 @@ TEST_F(VideoStreamEncoderTest,
41554120

41564121
// Reconfigure the encoder with a new (higher max framerate), max fps should
41574122
// still respect the adaptation.
4158-
video_encoder_config.video_stream_factory =
4159-
new rtc::RefCountedObject<VideoStreamFactory>(1, kHighFramerate);
4123+
video_encoder_config.simulcast_layers[0].max_framerate = kHighFramerate;
41604124
source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
41614125
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
41624126
kMaxPayloadLength);
@@ -4195,11 +4159,9 @@ TEST_F(VideoStreamEncoderTest,
41954159

41964160
// Trigger initial configuration.
41974161
VideoEncoderConfig video_encoder_config;
4198-
video_encoder_config.codec_type = kVideoCodecVP8;
4162+
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
4163+
video_encoder_config.simulcast_layers[0].max_framerate = kFramerate;
41994164
video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
4200-
video_encoder_config.number_of_streams = 1;
4201-
video_encoder_config.video_stream_factory =
4202-
new rtc::RefCountedObject<VideoStreamFactory>(1, kFramerate);
42034165
source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
42044166
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
42054167
kMaxPayloadLength);

0 commit comments

Comments
 (0)