| Index: webrtc/audio/audio_receive_stream.cc
|
| diff --git a/webrtc/audio/audio_receive_stream.cc b/webrtc/audio/audio_receive_stream.cc
|
| index 8caac6f87e628c96237f9162af7f9b964230cda0..bdccea2c370a6d5cbb1d0b35bfc1f815e4fb1fcf 100644
|
| --- a/webrtc/audio/audio_receive_stream.cc
|
| +++ b/webrtc/audio/audio_receive_stream.cc
|
| @@ -109,13 +109,12 @@ webrtc::AudioReceiveStream::Stats AudioReceiveStream::GetStats() const {
|
| ScopedVoEInterface<VoERTP_RTCP> rtp(voice_engine);
|
| ScopedVoEInterface<VoEVideoSync> sync(voice_engine);
|
| ScopedVoEInterface<VoEVolumeControl> volume(voice_engine);
|
| - unsigned int ssrc = 0;
|
| +
|
| webrtc::CallStatistics call_stats = {0};
|
| + int error = rtp->GetRTCPStatistics(config_.voe_channel_id, call_stats);
|
| + RTC_DCHECK_EQ(0, error);
|
| webrtc::CodecInst codec_inst = {0};
|
| - // Only collect stats if we have seen some traffic with the SSRC.
|
| - if (rtp->GetRemoteSSRC(config_.voe_channel_id, ssrc) == -1 ||
|
| - rtp->GetRTCPStatistics(config_.voe_channel_id, call_stats) == -1 ||
|
| - codec->GetRecCodec(config_.voe_channel_id, codec_inst) == -1) {
|
| + if (codec->GetRecCodec(config_.voe_channel_id, codec_inst) == -1) {
|
| return stats;
|
| }
|
|
|
| @@ -123,6 +122,7 @@ webrtc::AudioReceiveStream::Stats AudioReceiveStream::GetStats() const {
|
| stats.packets_rcvd = call_stats.packetsReceived;
|
| stats.packets_lost = call_stats.cumulativeLost;
|
| stats.fraction_lost = Q8ToFloat(call_stats.fractionLost);
|
| + stats.capture_start_ntp_time_ms = call_stats.capture_start_ntp_time_ms_;
|
| if (codec_inst.pltype != -1) {
|
| stats.codec_name = codec_inst.plname;
|
| }
|
| @@ -139,35 +139,33 @@ webrtc::AudioReceiveStream::Stats AudioReceiveStream::GetStats() const {
|
| }
|
| {
|
| unsigned int level = 0;
|
| - if (volume->GetSpeechOutputLevelFullRange(config_.voe_channel_id, level) !=
|
| - -1) {
|
| - stats.audio_level = static_cast<int32_t>(level);
|
| - }
|
| + error = volume->GetSpeechOutputLevelFullRange(config_.voe_channel_id,
|
| + level);
|
| + RTC_DCHECK_EQ(0, error);
|
| + stats.audio_level = static_cast<int32_t>(level);
|
| }
|
|
|
| + // Get jitter buffer and total delay (alg + jitter + playout) stats.
|
| webrtc::NetworkStatistics ns = {0};
|
| - if (neteq->GetNetworkStatistics(config_.voe_channel_id, ns) != -1) {
|
| - // Get jitter buffer and total delay (alg + jitter + playout) stats.
|
| - stats.jitter_buffer_ms = ns.currentBufferSize;
|
| - stats.jitter_buffer_preferred_ms = ns.preferredBufferSize;
|
| - stats.expand_rate = Q14ToFloat(ns.currentExpandRate);
|
| - stats.speech_expand_rate = Q14ToFloat(ns.currentSpeechExpandRate);
|
| - stats.secondary_decoded_rate = Q14ToFloat(ns.currentSecondaryDecodedRate);
|
| - stats.accelerate_rate = Q14ToFloat(ns.currentAccelerateRate);
|
| - stats.preemptive_expand_rate = Q14ToFloat(ns.currentPreemptiveRate);
|
| - }
|
| + error = neteq->GetNetworkStatistics(config_.voe_channel_id, ns);
|
| + RTC_DCHECK_EQ(0, error);
|
| + stats.jitter_buffer_ms = ns.currentBufferSize;
|
| + stats.jitter_buffer_preferred_ms = ns.preferredBufferSize;
|
| + stats.expand_rate = Q14ToFloat(ns.currentExpandRate);
|
| + stats.speech_expand_rate = Q14ToFloat(ns.currentSpeechExpandRate);
|
| + stats.secondary_decoded_rate = Q14ToFloat(ns.currentSecondaryDecodedRate);
|
| + stats.accelerate_rate = Q14ToFloat(ns.currentAccelerateRate);
|
| + stats.preemptive_expand_rate = Q14ToFloat(ns.currentPreemptiveRate);
|
|
|
| webrtc::AudioDecodingCallStats ds;
|
| - if (neteq->GetDecodingCallStatistics(config_.voe_channel_id, &ds) != -1) {
|
| - stats.decoding_calls_to_silence_generator = ds.calls_to_silence_generator;
|
| - stats.decoding_calls_to_neteq = ds.calls_to_neteq;
|
| - stats.decoding_normal = ds.decoded_normal;
|
| - stats.decoding_plc = ds.decoded_plc;
|
| - stats.decoding_cng = ds.decoded_cng;
|
| - stats.decoding_plc_cng = ds.decoded_plc_cng;
|
| - }
|
| -
|
| - stats.capture_start_ntp_time_ms = call_stats.capture_start_ntp_time_ms_;
|
| + error = neteq->GetDecodingCallStatistics(config_.voe_channel_id, &ds);
|
| + RTC_DCHECK_EQ(0, error);
|
| + stats.decoding_calls_to_silence_generator = ds.calls_to_silence_generator;
|
| + stats.decoding_calls_to_neteq = ds.calls_to_neteq;
|
| + stats.decoding_normal = ds.decoded_normal;
|
| + stats.decoding_plc = ds.decoded_plc;
|
| + stats.decoding_cng = ds.decoded_cng;
|
| + stats.decoding_plc_cng = ds.decoded_plc_cng;
|
|
|
| return stats;
|
| }
|
| @@ -205,7 +203,6 @@ bool AudioReceiveStream::DeliverRtp(const uint8_t* packet,
|
| // thread. Then this check can be enabled.
|
| // RTC_DCHECK(!thread_checker_.CalledOnValidThread());
|
| RTPHeader header;
|
| -
|
| if (!rtp_header_parser_->Parse(packet, length, &header)) {
|
| return false;
|
| }
|
|
|