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:
Byoungchan Lee
2022-07-20 21:49:17 +09:00
committed by WebRTC LUCI CQ
parent 714e3cbb48
commit 10a7d23be5
2 changed files with 29 additions and 1 deletions

View File

@ -305,7 +305,8 @@ void RtpSenderBase::SetSsrc(uint32_t ssrc) {
SetSend();
AddTrackToStats();
}
if (!init_parameters_.encodings.empty()) {
if (!init_parameters_.encodings.empty() ||
init_parameters_.degradation_preference.has_value()) {
worker_thread_->Invoke<void>(RTC_FROM_HERE, [&] {
RTC_DCHECK(media_channel_);
// Get the current parameters, which are constructed from the SDP.
@ -328,6 +329,7 @@ void RtpSenderBase::SetSsrc(uint32_t ssrc) {
init_parameters_.degradation_preference;
media_channel_->SetRtpSendParameters(ssrc_, current_parameters);
init_parameters_.encodings.clear();
init_parameters_.degradation_preference = absl::nullopt;
});
}
// Attempt to attach the frame decryptor to the current media channel.