Add test that verifies that VideoEncoderConfig max_framerate is reported to source.
Update test::CreateVideoStreams to use the configured framerate if set. Bug: webrtc:9597 Change-Id: I3c49dbf38e6c4935e864c4168be1d7e19a054a2c Reviewed-on: https://webrtc-review.googlesource.com/c/105621 Commit-Queue: Åsa Persson <asapersson@webrtc.org> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25195}
This commit is contained in:
@ -61,6 +61,11 @@ std::vector<VideoStream> CreateVideoStreams(
|
||||
? stream.target_bitrate_bps
|
||||
: DefaultVideoStreamFactory::kMaxBitratePerStream[i];
|
||||
target_bitrate_bps = std::min(max_bitrate_bps, target_bitrate_bps);
|
||||
|
||||
// Used configured framerate if set.
|
||||
if (stream.max_framerate > 0) {
|
||||
stream_settings[i].max_framerate = stream.max_framerate;
|
||||
}
|
||||
} else {
|
||||
max_bitrate_bps = std::min(
|
||||
bitrate_left_bps, DefaultVideoStreamFactory::kMaxBitratePerStream[i]);
|
||||
|
@ -3672,6 +3672,39 @@ TEST_P(VideoSendStreamTest,
|
||||
TestRequestSourceRotateVideo(true);
|
||||
}
|
||||
|
||||
TEST_P(VideoSendStreamTest, EncoderConfigMaxFramerateReportedToSource) {
|
||||
static const int kMaxFps = 22;
|
||||
class FpsObserver : public test::SendTest,
|
||||
public test::FrameGeneratorCapturer::SinkWantsObserver {
|
||||
public:
|
||||
FpsObserver() : SendTest(kDefaultTimeoutMs) {}
|
||||
|
||||
void OnFrameGeneratorCapturerCreated(
|
||||
test::FrameGeneratorCapturer* frame_generator_capturer) override {
|
||||
frame_generator_capturer->SetSinkWantsObserver(this);
|
||||
}
|
||||
|
||||
void OnSinkWantsChanged(rtc::VideoSinkInterface<VideoFrame>* sink,
|
||||
const rtc::VideoSinkWants& wants) override {
|
||||
if (wants.max_framerate_fps == kMaxFps)
|
||||
observation_complete_.Set();
|
||||
}
|
||||
|
||||
void ModifyVideoConfigs(
|
||||
VideoSendStream::Config* send_config,
|
||||
std::vector<VideoReceiveStream::Config>* receive_configs,
|
||||
VideoEncoderConfig* encoder_config) override {
|
||||
encoder_config->simulcast_layers[0].max_framerate = kMaxFps;
|
||||
}
|
||||
|
||||
void PerformTest() override {
|
||||
EXPECT_TRUE(Wait()) << "Timed out while waiting for fps to be reported.";
|
||||
}
|
||||
} test;
|
||||
|
||||
RunBaseTest(&test);
|
||||
}
|
||||
|
||||
// This test verifies that overhead is removed from the bandwidth estimate by
|
||||
// testing that the maximum possible target payload rate is smaller than the
|
||||
// maximum bandwidth estimate by the overhead rate.
|
||||
|
Reference in New Issue
Block a user