count plan-b/unified-plan usage in SDP answers

the UMA stats currently do not count services like Hangouts that
have "complex" SDP with multiple tracks only in the answer, not in the
offer. Note that this changes the definition of the existing metric.

BUG=chromium:857004

Change-Id: Ib4520a82f7d94cdd4a307d32846e2d26a5f03b90
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/186701
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <philipp.hancke@googlemail.com>
Cr-Commit-Position: refs/heads/master@{#32355}
This commit is contained in:
Philipp Hancke 2020-10-07 12:47:10 +02:00 committed by Commit Bot
parent 441dbf9a56
commit b8ca2a18a5
3 changed files with 31 additions and 4 deletions

View File

@ -3009,8 +3009,21 @@ void PeerConnection::ReportSdpFormatReceived(
} else if (num_audio_tracks > 0 || num_video_tracks > 0) {
format = kSdpFormatReceivedSimple;
}
RTC_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.SdpFormatReceived", format,
kSdpFormatReceivedMax);
switch (remote_offer.GetType()) {
case SdpType::kOffer:
// Historically only offers were counted.
RTC_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.SdpFormatReceived",
format, kSdpFormatReceivedMax);
break;
case SdpType::kAnswer:
RTC_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.SdpFormatReceivedAnswer",
format, kSdpFormatReceivedMax);
break;
default:
RTC_LOG(LS_ERROR) << "Can not report SdpFormatReceived for "
<< SdpTypeToString(remote_offer.GetType());
break;
}
}
void PeerConnection::ReportIceCandidateCollected(

View File

@ -1855,6 +1855,19 @@ TEST_F(SdpFormatReceivedTest, ComplexPlanBIsReportedAsComplexPlanB) {
ElementsAre(Pair(kSdpFormatReceivedComplexPlanB, 1)));
}
TEST_F(SdpFormatReceivedTest, AnswerIsReported) {
auto caller = CreatePeerConnectionWithPlanB();
caller->AddAudioTrack("audio");
caller->AddVideoTrack("video");
auto callee = CreatePeerConnectionWithUnifiedPlan();
ASSERT_TRUE(callee->SetRemoteDescription(caller->CreateOfferAndSetAsLocal()));
ASSERT_TRUE(caller->SetRemoteDescription(callee->CreateAnswer()));
EXPECT_METRIC_THAT(
metrics::Samples("WebRTC.PeerConnection.SdpFormatReceivedAnswer"),
ElementsAre(Pair(kSdpFormatReceivedSimple, 1)));
}
// Sender setups in a call.
TEST_P(PeerConnectionRtpTest, CreateTwoSendersWithSameTrack) {

View File

@ -2009,8 +2009,9 @@ void SdpOfferAnswerHandler::DoSetRemoteDescription(
"Rollback not supported in Plan B"));
return;
}
if (desc->GetType() == SdpType::kOffer) {
// Report to UMA the format of the received offer.
if (desc->GetType() == SdpType::kOffer ||
desc->GetType() == SdpType::kAnswer) {
// Report to UMA the format of the received offer or answer.
pc_->ReportSdpFormatReceived(*desc);
}