Bug 1967189 - Take non-recv tracks into account when figuring out unique payload types. r=dbaker,bwc

Differential Revision: https://phabricator.services.mozilla.com/D250057
This commit is contained in:
Andreas Pehrson
2025-05-20 21:26:52 +00:00
committed by pehrsons@gmail.com
parent 1e511bf3af
commit fb0934ee83
2 changed files with 5 additions and 12 deletions

View File

@@ -920,9 +920,7 @@ nsresult JsepSessionImpl::SetLocalDescriptionOffer(UniquePtr<Sdp> offer) {
std::vector<JsepTrack*> recvTracks;
recvTracks.reserve(mTransceivers.size());
for (auto& transceiver : mTransceivers) {
if (transceiver.mJsDirection & sdp::kRecv) {
recvTracks.push_back(&transceiver.mRecvTrack);
}
recvTracks.push_back(&transceiver.mRecvTrack);
}
JsepTrack::SetUniqueReceivePayloadTypes(recvTracks, true);
@@ -1156,14 +1154,9 @@ nsresult JsepSessionImpl::HandleNegotiatedSession(
CopyBundleTransports();
std::vector<JsepTrack*> receiveTracks;
receiveTracks.reserve(mTransceivers.size());
for (auto& transceiver : mTransceivers) {
// Do not count payload types for non-active recv tracks as duplicates. If
// we receive an RTP packet with a payload type that is used by both a
// sendrecv and a sendonly m-section, there is no ambiguity; it is for the
// sendrecv m-section.
if (transceiver.mRecvTrack.GetActive()) {
receiveTracks.push_back(&transceiver.mRecvTrack);
}
receiveTracks.push_back(&transceiver.mRecvTrack);
}
JsepTrack::SetUniqueReceivePayloadTypes(receiveTracks);

View File

@@ -4990,9 +4990,9 @@ TEST_F(JsepSessionTest, TestUniqueReceivePayloadTypes) {
ASSERT_FALSE(IsNull(offerTransceivers[2].mRecvTrack));
ASSERT_TRUE(offerTransceivers[2].mRecvTrack.GetNegotiatedDetails());
ASSERT_THAT(offerTransceivers[2].mRecvTrack.GetUniqueReceivePayloadTypes(),
UnorderedElementsAre(97, 99, 103, 105, 120, 121, 122, 123, 126));
ASSERT_THAT(offerTransceivers[2].mRecvTrack.GetDuplicateReceivePayloadTypes(),
UnorderedElementsAre());
ASSERT_THAT(offerTransceivers[2].mRecvTrack.GetDuplicateReceivePayloadTypes(),
UnorderedElementsAre(97, 99, 103, 105, 120, 121, 122, 123, 126));
ASSERT_TRUE(IsNull(offerTransceivers[3].mRecvTrack));
ASSERT_TRUE(offerTransceivers[3].mRecvTrack.GetNegotiatedDetails());