Bug 1967189 - Take non-recv tracks into account when figuring out unique payload types. a=RyanVM

Original Revision: https://phabricator.services.mozilla.com/D250057

Differential Revision: https://phabricator.services.mozilla.com/D250355
This commit is contained in:
Andreas Pehrson
2025-05-21 16:16:03 +00:00
committed by rvandermeulen@mozilla.com
parent 56c9eeac76
commit 178d08ce4d
2 changed files with 5 additions and 12 deletions

View File

@@ -907,9 +907,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);
@@ -1143,14 +1141,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

@@ -4976,9 +4976,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());