Skip to content

Commit 1cce1d7

Browse files
fippoWebRTC LUCI CQ
authored and
WebRTC LUCI CQ
committed
Make setCodecPreferences only look at receive codecs
which is what is noted in JSEP: https://www.rfc-editor.org/rfc/rfc8829.html#name-setcodecpreferences Some W3C spec modifications are required since the W3C specification currently takes into account send codecs as well. Spec issue: w3c/webrtc-pc#2888 Spec PR: w3c/webrtc-pc#2926 setCodecPreferences continues to modify the codecs in an offer. Also rename RtpSender::SetCodecPreferences to RtpSender::SetSendCodecs for consistent semantics. BUG=webrtc:15396 Change-Id: I1e8fbe77cb2670575578a777ed1336567a1e4031 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/328780 Reviewed-by: Henrik Boström <[email protected]> Commit-Queue: Philipp Hancke <[email protected]> Reviewed-by: Harald Alvestrand <[email protected]> Cr-Commit-Position: refs/heads/main@{#41719}
1 parent cd81d55 commit 1cce1d7

9 files changed

+117
-218
lines changed

media/base/media_engine.cc

+8-10
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,11 @@ std::vector<webrtc::RtpExtension> GetDefaultEnabledRtpHeaderExtensions(
6767

6868
webrtc::RTCError CheckScalabilityModeValues(
6969
const webrtc::RtpParameters& rtp_parameters,
70-
rtc::ArrayView<cricket::Codec> codec_preferences,
70+
rtc::ArrayView<cricket::Codec> send_codecs,
7171
absl::optional<cricket::Codec> send_codec) {
7272
using webrtc::RTCErrorType;
7373

74-
if (codec_preferences.empty()) {
74+
if (send_codecs.empty()) {
7575
// This is an audio sender or an extra check in the stack where the codec
7676
// list is not available and we can't check the scalability_mode values.
7777
return webrtc::RTCError::OK();
@@ -80,7 +80,7 @@ webrtc::RTCError CheckScalabilityModeValues(
8080
for (size_t i = 0; i < rtp_parameters.encodings.size(); ++i) {
8181
if (rtp_parameters.encodings[i].codec) {
8282
bool codecFound = false;
83-
for (const cricket::VideoCodec& codec : codec_preferences) {
83+
for (const cricket::Codec& codec : send_codecs) {
8484
if (codec.MatchesRtpCodec(*rtp_parameters.encodings[i].codec)) {
8585
codecFound = true;
8686
send_codec = codec;
@@ -97,7 +97,7 @@ webrtc::RTCError CheckScalabilityModeValues(
9797
if (rtp_parameters.encodings[i].scalability_mode) {
9898
if (!send_codec) {
9999
bool scalabilityModeFound = false;
100-
for (const cricket::VideoCodec& codec : codec_preferences) {
100+
for (const cricket::Codec& codec : send_codecs) {
101101
for (const auto& scalability_mode : codec.scalability_modes) {
102102
if (ScalabilityModeToString(scalability_mode) ==
103103
*rtp_parameters.encodings[i].scalability_mode) {
@@ -139,7 +139,7 @@ webrtc::RTCError CheckScalabilityModeValues(
139139

140140
webrtc::RTCError CheckRtpParametersValues(
141141
const webrtc::RtpParameters& rtp_parameters,
142-
rtc::ArrayView<cricket::Codec> codec_preferences,
142+
rtc::ArrayView<cricket::Codec> send_codecs,
143143
absl::optional<cricket::Codec> send_codec) {
144144
using webrtc::RTCErrorType;
145145

@@ -196,8 +196,7 @@ webrtc::RTCError CheckRtpParametersValues(
196196
}
197197
}
198198

199-
return CheckScalabilityModeValues(rtp_parameters, codec_preferences,
200-
send_codec);
199+
return CheckScalabilityModeValues(rtp_parameters, send_codecs, send_codec);
201200
}
202201

203202
webrtc::RTCError CheckRtpParametersInvalidModificationAndValues(
@@ -210,7 +209,7 @@ webrtc::RTCError CheckRtpParametersInvalidModificationAndValues(
210209
webrtc::RTCError CheckRtpParametersInvalidModificationAndValues(
211210
const webrtc::RtpParameters& old_rtp_parameters,
212211
const webrtc::RtpParameters& rtp_parameters,
213-
rtc::ArrayView<cricket::Codec> codec_preferences,
212+
rtc::ArrayView<cricket::Codec> send_codecs,
214213
absl::optional<cricket::Codec> send_codec) {
215214
using webrtc::RTCErrorType;
216215
if (rtp_parameters.encodings.size() != old_rtp_parameters.encodings.size()) {
@@ -246,8 +245,7 @@ webrtc::RTCError CheckRtpParametersInvalidModificationAndValues(
246245
"Attempted to set RtpParameters with modified SSRC");
247246
}
248247

249-
return CheckRtpParametersValues(rtp_parameters, codec_preferences,
250-
send_codec);
248+
return CheckRtpParametersValues(rtp_parameters, send_codecs, send_codec);
251249
}
252250

253251
CompositeMediaEngine::CompositeMediaEngine(

media/base/media_engine.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,22 @@ namespace cricket {
4242
// least one video codec of the list. If the list is empty, no check is done.
4343
webrtc::RTCError CheckScalabilityModeValues(
4444
const webrtc::RtpParameters& new_parameters,
45-
rtc::ArrayView<cricket::Codec> codec_preferences,
45+
rtc::ArrayView<cricket::Codec> send_codecs,
4646
absl::optional<cricket::Codec> send_codec);
4747

4848
// Checks the parameters have valid and supported values, and checks parameters
4949
// with CheckScalabilityModeValues().
5050
webrtc::RTCError CheckRtpParametersValues(
5151
const webrtc::RtpParameters& new_parameters,
52-
rtc::ArrayView<cricket::Codec> codec_preferences,
52+
rtc::ArrayView<cricket::Codec> send_codecs,
5353
absl::optional<cricket::Codec> send_codec);
5454

5555
// Checks that the immutable values have not changed in new_parameters and
5656
// checks all parameters with CheckRtpParametersValues().
5757
webrtc::RTCError CheckRtpParametersInvalidModificationAndValues(
5858
const webrtc::RtpParameters& old_parameters,
5959
const webrtc::RtpParameters& new_parameters,
60-
rtc::ArrayView<cricket::Codec> codec_preferences,
60+
rtc::ArrayView<cricket::Codec> send_codecs,
6161
absl::optional<cricket::Codec> send_codec);
6262

6363
// Checks that the immutable values have not changed in new_parameters and

0 commit comments

Comments
 (0)