Fix degradation_preference setting being ignored using RtpSender.SetParameters.
RtpSenderBase::SetParametersInternal stores init_parameters_ if media_channel_ does not exist. When RtpSenderBase::SetSsrc is called, init_parameters_ is used to set the initial encoding parameters and degradation_preference. However, if no encoding parameter is specified, degradation_preference will not be set. This CL modifies the RtpSender so that degradation_preference is not ignored even in this case. Bug: webrtc:14279 Change-Id: I7e95ecdf5fcb19037e4f118981d1314d78ffca5a Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/268960 Reviewed-by: Henrik Boström <hbos@webrtc.org> Commit-Queue: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com> Cr-Commit-Position: refs/heads/main@{#37574}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
714e3cbb48
commit
10a7d23be5
@ -3649,6 +3649,32 @@ TEST_P(PeerConnectionInterfaceTest, ExtmapAllowMixedIsConfigurable) {
|
||||
EXPECT_FALSE(offer->description()->extmap_allow_mixed());
|
||||
}
|
||||
|
||||
TEST_P(PeerConnectionInterfaceTest,
|
||||
RtpSenderSetDegradationPreferenceWithoutEncodings) {
|
||||
CreatePeerConnection();
|
||||
AddVideoTrack("video_label");
|
||||
|
||||
std::vector<rtc::scoped_refptr<RtpSenderInterface>> rtp_senders =
|
||||
pc_->GetSenders();
|
||||
ASSERT_EQ(rtp_senders.size(), 1u);
|
||||
ASSERT_EQ(rtp_senders[0]->media_type(), cricket::MEDIA_TYPE_VIDEO);
|
||||
rtc::scoped_refptr<RtpSenderInterface> video_rtp_sender = rtp_senders[0];
|
||||
RtpParameters parameters = video_rtp_sender->GetParameters();
|
||||
ASSERT_NE(parameters.degradation_preference,
|
||||
DegradationPreference::MAINTAIN_RESOLUTION);
|
||||
parameters.degradation_preference =
|
||||
DegradationPreference::MAINTAIN_RESOLUTION;
|
||||
ASSERT_TRUE(video_rtp_sender->SetParameters(parameters).ok());
|
||||
|
||||
std::unique_ptr<SessionDescriptionInterface> local_offer;
|
||||
ASSERT_TRUE(DoCreateOffer(&local_offer, nullptr));
|
||||
ASSERT_TRUE(DoSetLocalDescription(std::move(local_offer)));
|
||||
|
||||
RtpParameters parameters_new = video_rtp_sender->GetParameters();
|
||||
ASSERT_EQ(parameters_new.degradation_preference,
|
||||
DegradationPreference::MAINTAIN_RESOLUTION);
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(PeerConnectionInterfaceTest,
|
||||
PeerConnectionInterfaceTest,
|
||||
Values(SdpSemantics::kPlanB_DEPRECATED,
|
||||
|
||||
Reference in New Issue
Block a user