Bug 1646092 - Do not add ssrc-group to sdp on recvonly msections; r=bwc

Chrome will not accept sdp with ssrc-group:FID on recvonly msections, causing
calls to fail to be established between Firefox and Chrome when only a
microphone is present on the Firefox side.

Differential Revision: https://phabricator.services.mozilla.com/D80034
This commit is contained in:
Dan Minor 2020-06-22 12:32:16 +00:00
Родитель ebb721dcf8
Коммит 1116efcc34
3 изменённых файлов: 8 добавлений и 8 удалений

Просмотреть файл

@ -3085,11 +3085,7 @@ TEST_F(JsepSessionTest, OfferAnswerRecvOnlyLines) {
const auto& msection =
parsedOffer->GetMediaSection(transceiver->GetLevel());
const auto& ssrcs = msection.GetAttributeList().GetSsrc().mSsrcs;
if (msection.GetMediaType() == SdpMediaSection::kVideo) {
ASSERT_EQ(2U, ssrcs.size());
} else {
ASSERT_EQ(1U, ssrcs.size());
}
ASSERT_EQ(1U, ssrcs.size());
}
}

Просмотреть файл

@ -256,8 +256,8 @@ bool JsepTrack::IsRtxEnabled(
void JsepTrack::AddToMsection(const std::vector<JsConstraints>& constraintsList,
sdp::Direction direction,
SsrcGenerator& ssrcGenerator,
bool requireRtxSsrcs, SdpMediaSection* msection) {
SsrcGenerator& ssrcGenerator, bool rtxEnabled,
SdpMediaSection* msection) {
UniquePtr<SdpSimulcastAttribute> simulcast(new SdpSimulcastAttribute);
UniquePtr<SdpRidAttributeList> rids(new SdpRidAttributeList);
for (const JsConstraints& constraints : constraintsList) {
@ -283,6 +283,10 @@ void JsepTrack::AddToMsection(const std::vector<JsConstraints>& constraintsList,
msection->GetAttributeList().SetAttribute(rids.release());
}
bool requireRtxSsrcs =
rtxEnabled && msection->GetDirectionAttribute().mValue !=
SdpDirectionAttribute::Direction::kRecvonly;
if (mType != SdpMediaSection::kApplication && mDirection == sdp::kSend) {
UpdateSsrcs(ssrcGenerator, constraintsList.size());

Просмотреть файл

@ -277,7 +277,7 @@ class JsepTrack {
void AddToMsection(const std::vector<JsConstraints>& constraintsList,
sdp::Direction direction, SsrcGenerator& ssrcGenerator,
bool requireRtxSsrcs, SdpMediaSection* msection);
bool rtxEnabled, SdpMediaSection* msection);
// See Bug 1642419, this can be removed when all sites are working with RTX.
void SetRtxIsAllowed(bool aRtxIsAllowed) { mRtxIsAllowed = aRtxIsAllowed; }