diff --git a/talk/app/webrtc/statscollector.cc b/talk/app/webrtc/statscollector.cc index 23d3205897..bc8b4f8a3c 100644 --- a/talk/app/webrtc/statscollector.cc +++ b/talk/app/webrtc/statscollector.cc @@ -297,6 +297,8 @@ void ExtractStats(const cricket::VoiceReceiverInfo& info, StatsReport* report) { info.decoding_cng); report->AddValue(StatsReport::kStatsValueNameDecodingPLCCNG, info.decoding_plc_cng); + report->AddValue(StatsReport::kStatsValueNameCaptureStartNtpTimeMs, + info.capture_start_ntp_time_ms); } void ExtractStats(const cricket::VoiceSenderInfo& info, StatsReport* report) { diff --git a/talk/media/base/mediachannel.h b/talk/media/base/mediachannel.h index 2772cc6ad2..0bb0f04c1e 100644 --- a/talk/media/base/mediachannel.h +++ b/talk/media/base/mediachannel.h @@ -829,7 +829,8 @@ struct VoiceReceiverInfo : public MediaReceiverInfo { decoding_normal(0), decoding_plc(0), decoding_cng(0), - decoding_plc_cng(0) { + decoding_plc_cng(0), + capture_start_ntp_time_ms(-1) { } int ext_seqnum; @@ -846,6 +847,8 @@ struct VoiceReceiverInfo : public MediaReceiverInfo { int decoding_plc; int decoding_cng; int decoding_plc_cng; + // Estimated capture start time in NTP time in ms. + int64 capture_start_ntp_time_ms; }; struct VideoSenderInfo : public MediaSenderInfo { @@ -912,7 +915,7 @@ struct VideoReceiverInfo : public MediaReceiverInfo { render_delay_ms(0), target_delay_ms(0), current_delay_ms(0), - capture_start_ntp_time_ms(0) { + capture_start_ntp_time_ms(-1) { } std::vector ssrc_groups; diff --git a/talk/media/webrtc/webrtcvideoengine.cc b/talk/media/webrtc/webrtcvideoengine.cc index 54a5201e47..a029ec27e4 100644 --- a/talk/media/webrtc/webrtcvideoengine.cc +++ b/talk/media/webrtc/webrtcvideoengine.cc @@ -62,7 +62,9 @@ #include "talk/media/webrtc/webrtcvoiceengine.h" #include "webrtc/experiments.h" #include "webrtc/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h" +#ifdef WEBRTC_CHROMIUM_BUILD #include "webrtc/system_wrappers/interface/field_trial.h" +#endif #if !defined(LIBPEERCONNECTION_LIB) #include "talk/media/webrtc/webrtcmediaengine.h" @@ -2514,6 +2516,15 @@ bool WebRtcVideoMediaChannel::GetStats(const StatsOptions& options, send_codec_->maxBitrate, kMaxVideoBitrate); } sinfo.adapt_reason = send_channel->CurrentAdaptReason(); + +#ifdef USE_WEBRTC_DEV_BRANCH + webrtc::CpuOveruseMetrics metrics; + engine()->vie()->base()->GetCpuOveruseMetrics(channel_id, &metrics); + sinfo.capture_jitter_ms = metrics.capture_jitter_ms; + sinfo.avg_encode_ms = metrics.avg_encode_time_ms; + sinfo.encode_usage_percent = metrics.encode_usage_percent; + sinfo.capture_queue_delay_ms_per_s = metrics.capture_queue_delay_ms_per_s; +#else sinfo.capture_jitter_ms = -1; sinfo.avg_encode_ms = -1; sinfo.encode_usage_percent = -1; @@ -2534,6 +2545,7 @@ bool WebRtcVideoMediaChannel::GetStats(const StatsOptions& options, sinfo.encode_usage_percent = encode_usage_percent; sinfo.capture_queue_delay_ms_per_s = capture_queue_delay_ms_per_s; } +#endif webrtc::RtcpPacketTypeCounter rtcp_sent; webrtc::RtcpPacketTypeCounter rtcp_received; diff --git a/talk/media/webrtc/webrtcvoiceengine.cc b/talk/media/webrtc/webrtcvoiceengine.cc index b26f14aa52..1bd2ffe74d 100644 --- a/talk/media/webrtc/webrtcvoiceengine.cc +++ b/talk/media/webrtc/webrtcvoiceengine.cc @@ -3267,6 +3267,9 @@ bool WebRtcVoiceMediaChannel::GetStats(VoiceMediaInfo* info) { rinfo.fraction_lost = static_cast(cs.fractionLost) / (1 << 8); rinfo.packets_lost = cs.cumulativeLost; rinfo.ext_seqnum = cs.extendedMax; +#ifdef USE_WEBRTC_DEV_BRANCH + rinfo.capture_start_ntp_time_ms = cs.capture_start_ntp_time_ms_; +#endif // Convert samples to milliseconds. if (codec.plfreq / 1000 > 0) { rinfo.jitter_ms = cs.jitterSamples / (codec.plfreq / 1000);