Update talk to 61538839.
TBR=mallinath
Review URL: https://webrtc-codereview.appspot.com/8669005
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5548 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/app/webrtc/statscollector.cc b/talk/app/webrtc/statscollector.cc
index 2efc11b..a900bba 100644
--- a/talk/app/webrtc/statscollector.cc
+++ b/talk/app/webrtc/statscollector.cc
@@ -78,6 +78,7 @@
const char StatsReport::kStatsValueNameEncodeUsagePercent[] =
"googEncodeUsagePercent";
+const char StatsReport::kStatsValueNameExpandRate[] = "googExpandRate";
const char StatsReport::kStatsValueNameFingerprint[] = "googFingerprint";
const char StatsReport::kStatsValueNameFingerprintAlgorithm[] =
"googFingerprintAlgorithm";
@@ -121,12 +122,17 @@
"googLocalCertificateId";
const char StatsReport::kStatsValueNameNacksReceived[] = "googNacksReceived";
const char StatsReport::kStatsValueNameNacksSent[] = "googNacksSent";
-const char StatsReport::kStatsValueNameNetEqExpandRate[] =
- "googNetEqExpandRate";
const char StatsReport::kStatsValueNamePacketsReceived[] = "packetsReceived";
const char StatsReport::kStatsValueNamePacketsSent[] = "packetsSent";
const char StatsReport::kStatsValueNamePacketsLost[] = "packetsLost";
const char StatsReport::kStatsValueNameReadable[] = "googReadable";
+const char StatsReport::kStatsValueNameRecvPacketGroupArrivalTimeDebug[] =
+ "googReceivedPacketGroupArrivalTimeDebug";
+const char StatsReport::kStatsValueNameRecvPacketGroupPropagationDeltaDebug[] =
+ "googReceivedPacketGroupPropagationDeltaDebug";
+const char
+StatsReport::kStatsValueNameRecvPacketGroupPropagationDeltaSumDebug[] =
+ "googReceivedPacketGroupPropagationDeltaSumDebug";
const char StatsReport::kStatsValueNameRemoteAddress[] = "googRemoteAddress";
const char StatsReport::kStatsValueNameRemoteCandidateType[] =
"googRemoteCandidateType";
@@ -175,6 +181,20 @@
AddValue(name, talk_base::ToString<int64>(value));
}
+template <typename T>
+void StatsReport::AddValue(const std::string& name,
+ const std::vector<T>& value) {
+ std::ostringstream oss;
+ oss << "[";
+ for (size_t i = 0; i < value.size(); ++i) {
+ oss << talk_base::ToString<T>(value[i]);
+ if (i != value.size() - 1)
+ oss << ", ";
+ }
+ oss << "]";
+ AddValue(name, oss.str());
+}
+
void StatsReport::AddBoolean(const std::string& name, bool value) {
AddValue(name, value ? "true" : "false");
}
@@ -221,7 +241,7 @@
info.bytes_rcvd);
report->AddValue(StatsReport::kStatsValueNameJitterReceived,
info.jitter_ms);
- report->AddValue(StatsReport::kStatsValueNameNetEqExpandRate,
+ report->AddValue(StatsReport::kStatsValueNameExpandRate,
talk_base::ToString<float>(info.expand_rate));
report->AddValue(StatsReport::kStatsValueNamePacketsReceived,
info.packets_rcvd);
@@ -334,6 +354,7 @@
void ExtractStats(const cricket::BandwidthEstimationInfo& info,
double stats_gathering_started,
+ PeerConnectionInterface::StatsOutputLevel level,
StatsReport* report) {
report->id = StatsReport::kStatsReportVideoBweId;
report->type = StatsReport::kStatsReportTypeBwe;
@@ -358,6 +379,19 @@
info.transmit_bitrate);
report->AddValue(StatsReport::kStatsValueNameBucketDelay,
info.bucket_delay);
+ if (level >= PeerConnectionInterface::kStatsOutputLevelDebug) {
+ report->AddValue(
+ StatsReport::kStatsValueNameRecvPacketGroupPropagationDeltaSumDebug,
+ info.total_received_propagation_delta_ms);
+ if (info.recent_received_propagation_delta_ms.size() > 0) {
+ report->AddValue(
+ StatsReport::kStatsValueNameRecvPacketGroupPropagationDeltaDebug,
+ info.recent_received_propagation_delta_ms);
+ report->AddValue(
+ StatsReport::kStatsValueNameRecvPacketGroupArrivalTimeDebug,
+ info.recent_received_packet_group_arrival_time_ms);
+ }
+ }
}
void ExtractRemoteStats(const cricket::MediaSenderInfo& info,
@@ -399,7 +433,7 @@
ExtractRemoteStats(*it, report);
}
}
-};
+}
} // namespace
@@ -463,7 +497,8 @@
return true;
}
-void StatsCollector::UpdateStats() {
+void
+StatsCollector::UpdateStats(PeerConnectionInterface::StatsOutputLevel level) {
double time_now = GetTimeNow();
// Calls to UpdateStats() that occur less than kMinGatherStatsPeriod number of
// ms apart will be ignored.
@@ -476,7 +511,7 @@
if (session_) {
ExtractSessionInfo();
ExtractVoiceInfo();
- ExtractVideoInfo();
+ ExtractVideoInfo(level);
}
}
@@ -569,6 +604,14 @@
talk_base::scoped_ptr<talk_base::SSLFingerprint> ssl_fingerprint(
talk_base::SSLFingerprint::Create(digest_algorithm, cert));
+
+ // SSLFingerprint::Create can fail if the algorithm returned by
+ // SSLCertificate::GetSignatureDigestAlgorithm is not supported by the
+ // implementation of SSLCertificate::ComputeDigest. This currently happens
+ // with MD5- and SHA-224-signed certificates when linked to libNSS.
+ if (!ssl_fingerprint)
+ return std::string();
+
std::string fingerprint = ssl_fingerprint->GetRfc4572Fingerprint();
talk_base::Buffer der_buffer;
@@ -737,12 +780,17 @@
ExtractStatsFromList(voice_info.senders, transport_id, this);
}
-void StatsCollector::ExtractVideoInfo() {
+void StatsCollector::ExtractVideoInfo(
+ PeerConnectionInterface::StatsOutputLevel level) {
if (!session_->video_channel()) {
return;
}
+ cricket::StatsOptions options;
+ options.include_received_propagation_stats =
+ (level >= PeerConnectionInterface::kStatsOutputLevelDebug) ?
+ true : false;
cricket::VideoMediaInfo video_info;
- if (!session_->video_channel()->GetStats(&video_info)) {
+ if (!session_->video_channel()->GetStats(options, &video_info)) {
LOG(LS_ERROR) << "Failed to get video channel stats.";
return;
}
@@ -760,7 +808,7 @@
} else {
StatsReport* report = &reports_[StatsReport::kStatsReportVideoBweId];
ExtractStats(
- video_info.bw_estimations[0], stats_gathering_started_, report);
+ video_info.bw_estimations[0], stats_gathering_started_, level, report);
}
}