Restore primary/rtx payload type assignment logic
Changes the order of payload type assignment to keep the rtx_pt = primary_pt+1 pattern (even if not required by the specification) On https://webrtc.github.io/samples/src/content/peerconnection/pc1/ this changes PTs as follows: M132: m=video 9 UDP/TLS/RTP/SAVPF 96 97 102 103 104 105 106 107 108 109 127 125 39 40 45 46 98 99 100 101 112 113 114 (121 more lines) mid=1 M134: m=video 9 UDP/TLS/RTP/SAVPF 96 109 99 118 100 119 101 120 103 121 104 122 37 123 40 127 97 114 98 115 107 44 108 (121 more lines) mid=1 M134 with this patch: m=video 9 UDP/TLS/RTP/SAVPF 96 97 107 108 109 114 115 116 117 118 119 120 37 121 40 124 98 99 100 101 127 42 43 (121 more lines) mid=1 Note that this pushes red and ulpfec into lower range but those codecs are not widely used and it is possible to get them back into the upper range e.g. by using setCodecPreferences to disable H264 (where ulpfec is not supported) BUG=chromium:391132280 Change-Id: I892f00a2f276728d16c37e8ba5f76d01f6322a7d No-Iwyu: single include missing, keep it more merge-able Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/375847 Reviewed-by: Artem Titov <titovartem@webrtc.org> Commit-Queue: Guido Urdaneta <guidou@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/main@{#43833}
This commit is contained in:
parent
c58a767a23
commit
f68df0b95c
@ -261,15 +261,28 @@ std::vector<Codec> GetPayloadTypesAndDefaultCodecs(
|
||||
// TODO: https://issues.webrtc.org/360058654 - stop assigning PTs here.
|
||||
webrtc::PayloadTypePicker pt_mapper;
|
||||
std::vector<Codec> output_codecs;
|
||||
for (const auto& supported_format : supported_formats) {
|
||||
webrtc::RTCErrorOr<std::vector<Codec>> result =
|
||||
AssignPayloadTypes(supported_formats, pt_mapper, trials);
|
||||
AssignPayloadTypes({supported_format}, pt_mapper, trials);
|
||||
RTC_DCHECK(result.ok());
|
||||
output_codecs = result.MoveValue();
|
||||
if (result.ok()) {
|
||||
for (const auto& codec : result.value()) {
|
||||
if (include_rtx) {
|
||||
webrtc::RTCErrorOr<std::vector<Codec>> result =
|
||||
AddRtx(output_codecs, pt_mapper);
|
||||
RTC_DCHECK(result.ok());
|
||||
return result.MoveValue();
|
||||
// This will return both primary and rtx if there is rtx.
|
||||
result = AddRtx({codec}, pt_mapper);
|
||||
if (result.ok()) {
|
||||
for (const auto& codec : result.value()) {
|
||||
output_codecs.push_back(codec);
|
||||
}
|
||||
} else {
|
||||
output_codecs.push_back(codec);
|
||||
}
|
||||
|
||||
} else {
|
||||
output_codecs.push_back(codec);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return output_codecs;
|
||||
}
|
||||
|
||||
@ -652,7 +652,8 @@ TEST_F(SdpOfferAnswerTest, SimulcastAnswerWithNoRidsIsRejected) {
|
||||
EXPECT_TRUE(pc->SetRemoteDescription(std::move(rejected_answer)));
|
||||
}
|
||||
|
||||
TEST_F(SdpOfferAnswerTest, SimulcastOfferWithMixedCodec) {
|
||||
// TODO: bugs.webrtc.org/362277533 - reenable before launch.
|
||||
TEST_F(SdpOfferAnswerTest, DISABLED_SimulcastOfferWithMixedCodec) {
|
||||
auto pc = CreatePeerConnection(
|
||||
FieldTrials::CreateNoGlobal("WebRTC-MixedCodecSimulcast/Enabled/"));
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user