Add support for max/min encode bitrate to peer connection quality test
Bug: webrtc:10975 Change-Id: I9be551040936d2e9b5e41dd1bbaea2ad4afd36ed Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153481 Reviewed-by: Artem Titov <titovartem@webrtc.org> Commit-Queue: Johannes Kron <kron@webrtc.org> Cr-Commit-Position: refs/heads/master@{#29240}
This commit is contained in:
parent
6a092637f0
commit
ac315b283c
@ -282,5 +282,57 @@ TEST_F(PeerConnectionE2EQualityTestSmokeTest, MAYBE_Svc) {
|
||||
});
|
||||
}
|
||||
|
||||
// IOS debug builds can be quite slow, disabling to avoid issues with timeouts.
|
||||
#if defined(WEBRTC_IOS) && defined(WEBRTC_ARCH_ARM64) && !defined(NDEBUG)
|
||||
#define MAYBE_HighBitrate DISABLED_HighBitrate
|
||||
#else
|
||||
#define MAYBE_HighBitrate HighBitrate
|
||||
#endif
|
||||
TEST_F(PeerConnectionE2EQualityTestSmokeTest, MAYBE_HighBitrate) {
|
||||
RunParams run_params(TimeDelta::seconds(7));
|
||||
run_params.video_codec_name = cricket::kVp9CodecName;
|
||||
run_params.video_codec_required_params = {{"profile-id", "0"}};
|
||||
|
||||
RunTest(
|
||||
"smoke", run_params,
|
||||
[](PeerConfigurer* alice) {
|
||||
PeerConnectionInterface::BitrateParameters bitrate_params;
|
||||
bitrate_params.current_bitrate_bps = 4000000;
|
||||
bitrate_params.max_bitrate_bps = 8000000;
|
||||
alice->SetBitrateParameters(bitrate_params);
|
||||
VideoConfig video(1920, 1080, 30);
|
||||
video.stream_label = "alice-video";
|
||||
video.min_encode_bitrate_bps = 3000000;
|
||||
video.max_encode_bitrate_bps = 6000000;
|
||||
alice->AddVideoConfig(std::move(video));
|
||||
|
||||
AudioConfig audio;
|
||||
audio.stream_label = "alice-audio";
|
||||
audio.mode = AudioConfig::Mode::kFile;
|
||||
audio.input_file_name =
|
||||
test::ResourcePath("pc_quality_smoke_test_alice_source", "wav");
|
||||
audio.sampling_frequency_in_hz = 48000;
|
||||
alice->SetAudioConfig(std::move(audio));
|
||||
},
|
||||
[](PeerConfigurer* bob) {
|
||||
PeerConnectionInterface::BitrateParameters bitrate_params;
|
||||
bitrate_params.current_bitrate_bps = 4000000;
|
||||
bitrate_params.max_bitrate_bps = 8000000;
|
||||
bob->SetBitrateParameters(bitrate_params);
|
||||
VideoConfig video(1920, 1080, 30);
|
||||
video.stream_label = "bob-video";
|
||||
video.min_encode_bitrate_bps = 3000000;
|
||||
video.max_encode_bitrate_bps = 6000000;
|
||||
bob->AddVideoConfig(std::move(video));
|
||||
|
||||
AudioConfig audio;
|
||||
audio.stream_label = "bob-audio";
|
||||
audio.mode = AudioConfig::Mode::kFile;
|
||||
audio.input_file_name =
|
||||
test::ResourcePath("pc_quality_smoke_test_bob_source", "wav");
|
||||
bob->SetAudioConfig(std::move(audio));
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace webrtc_pc_e2e
|
||||
} // namespace webrtc
|
||||
|
||||
@ -528,6 +528,10 @@ void PeerConnectionE2EQualityTest::ValidateParams(const RunParams& run_params,
|
||||
// We support simulcast only from caller.
|
||||
RTC_CHECK_EQ(i, 0)
|
||||
<< "Only simulcast stream from first peer is supported";
|
||||
RTC_CHECK(!video_config.max_encode_bitrate_bps)
|
||||
<< "Setting max encode bitrate is not implemented for simulcast.";
|
||||
RTC_CHECK(!video_config.min_encode_bitrate_bps)
|
||||
<< "Setting min encode bitrate is not implemented for simulcast.";
|
||||
}
|
||||
}
|
||||
if (p->audio_config) {
|
||||
@ -615,9 +619,10 @@ void PeerConnectionE2EQualityTest::SetupCallOnSignalingThread(
|
||||
alice_transceivers_counter++;
|
||||
}
|
||||
|
||||
size_t alice_video_transceivers_non_simulcast_counter = 0;
|
||||
for (auto& video_config : alice_->params()->video_configs) {
|
||||
RtpTransceiverInit transceiver_params;
|
||||
if (video_config.simulcast_config) {
|
||||
RtpTransceiverInit transceiver_params;
|
||||
transceiver_params.direction = RtpTransceiverDirection::kSendOnly;
|
||||
if (run_params.video_codec_name == cricket::kVp8CodecName) {
|
||||
// For Vp8 simulcast we need to add as many RtpEncodingParameters to the
|
||||
@ -631,20 +636,34 @@ void PeerConnectionE2EQualityTest::SetupCallOnSignalingThread(
|
||||
transceiver_params.send_encodings.push_back(enc_params);
|
||||
}
|
||||
}
|
||||
RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> result =
|
||||
alice_->AddTransceiver(cricket::MediaType::MEDIA_TYPE_VIDEO,
|
||||
transceiver_params);
|
||||
RTC_CHECK(result.ok());
|
||||
alice_transceivers_counter++;
|
||||
} else {
|
||||
transceiver_params.direction = RtpTransceiverDirection::kSendRecv;
|
||||
RtpEncodingParameters enc_params;
|
||||
enc_params.max_bitrate_bps = video_config.max_encode_bitrate_bps;
|
||||
enc_params.min_bitrate_bps = video_config.min_encode_bitrate_bps;
|
||||
transceiver_params.send_encodings.push_back(enc_params);
|
||||
|
||||
alice_video_transceivers_non_simulcast_counter++;
|
||||
}
|
||||
RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> result =
|
||||
alice_->AddTransceiver(cricket::MediaType::MEDIA_TYPE_VIDEO,
|
||||
transceiver_params);
|
||||
RTC_CHECK(result.ok());
|
||||
|
||||
alice_transceivers_counter++;
|
||||
}
|
||||
for (size_t i = 0; i < bob_->params()->video_configs.size(); ++i) {
|
||||
|
||||
// Add receive only transceivers in case Bob has more video_configs than
|
||||
// Alice.
|
||||
for (size_t i = alice_video_transceivers_non_simulcast_counter;
|
||||
i < bob_->params()->video_configs.size(); ++i) {
|
||||
RTCErrorOr<rtc::scoped_refptr<RtpTransceiverInterface>> result =
|
||||
alice_->AddTransceiver(cricket::MediaType::MEDIA_TYPE_VIDEO,
|
||||
receive_only_transceiver_init);
|
||||
RTC_CHECK(result.ok());
|
||||
alice_transceivers_counter++;
|
||||
}
|
||||
|
||||
// Then add media for Alice and Bob
|
||||
alice_video_sources_ = MaybeAddMedia(alice_.get());
|
||||
bob_video_sources_ = MaybeAddMedia(bob_.get());
|
||||
@ -990,7 +1009,7 @@ PeerConnectionE2EQualityTest::ScheduledActivity::ScheduledActivity(
|
||||
absl::optional<TimeDelta> interval,
|
||||
std::function<void(TimeDelta)> func)
|
||||
: initial_delay_since_start(initial_delay_since_start),
|
||||
interval(std::move(interval)),
|
||||
interval(interval),
|
||||
func(std::move(func)) {}
|
||||
|
||||
} // namespace webrtc_pc_e2e
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user