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
|
? stream.target_bitrate_bps
|
||||||
: DefaultVideoStreamFactory::kMaxBitratePerStream[i];
|
: DefaultVideoStreamFactory::kMaxBitratePerStream[i];
|
||||||
target_bitrate_bps = std::min(max_bitrate_bps, target_bitrate_bps);
|
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 {
|
} else {
|
||||||
max_bitrate_bps = std::min(
|
max_bitrate_bps = std::min(
|
||||||
bitrate_left_bps, DefaultVideoStreamFactory::kMaxBitratePerStream[i]);
|
bitrate_left_bps, DefaultVideoStreamFactory::kMaxBitratePerStream[i]);
|
||||||
|
@ -3672,6 +3672,39 @@ TEST_P(VideoSendStreamTest,
|
|||||||
TestRequestSourceRotateVideo(true);
|
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
|
// This test verifies that overhead is removed from the bandwidth estimate by
|
||||||
// testing that the maximum possible target payload rate is smaller than the
|
// testing that the maximum possible target payload rate is smaller than the
|
||||||
// maximum bandwidth estimate by the overhead rate.
|
// maximum bandwidth estimate by the overhead rate.
|
||||||
|
Reference in New Issue
Block a user