Index: webrtc/audio/audio_send_stream.cc |
diff --git a/webrtc/audio/audio_send_stream.cc b/webrtc/audio/audio_send_stream.cc |
index 14112deb9ad6d63c4f1544796bafd2e3f13feeea..a7b98c76708b35b98cd10f96eb2332069d24933d 100644 |
--- a/webrtc/audio/audio_send_stream.cc |
+++ b/webrtc/audio/audio_send_stream.cc |
@@ -119,17 +119,20 @@ webrtc::AudioSendStream::Stats AudioSendStream::GetStats() const { |
ScopedVoEInterface<VoECodec> codec(voice_engine()); |
ScopedVoEInterface<VoERTP_RTCP> rtp(voice_engine()); |
ScopedVoEInterface<VoEVolumeControl> volume(voice_engine()); |
- unsigned int ssrc = 0; |
- webrtc::CallStatistics call_stats = {0}; |
- // TODO(solenberg): Change error code checking to RTC_CHECK_EQ(..., -1), if |
- // possible... |
- if (rtp->GetLocalSSRC(config_.voe_channel_id, ssrc) == -1 || |
- rtp->GetRTCPStatistics(config_.voe_channel_id, call_stats) == -1) { |
- return stats; |
- } |
+ webrtc::CallStatistics call_stats = {0}; |
+ int error = rtp->GetRTCPStatistics(config_.voe_channel_id, call_stats); |
+ RTC_DCHECK_EQ(0, error); |
stats.bytes_sent = call_stats.bytesSent; |
stats.packets_sent = call_stats.packetsSent; |
+ // RTT isn't known until a RTCP report is received. Until then, VoiceEngine |
+ // returns 0 to indicate an error value. |
+ if (call_stats.rttMs > 0) { |
+ stats.rtt_ms = call_stats.rttMs; |
+ } |
+ // TODO(solenberg): [was ajm]: Re-enable this metric once we have a reliable |
+ // implementation. |
+ stats.aec_quality_min = -1; |
webrtc::CodecInst codec_inst = {0}; |
if (codec->GetSendCodec(config_.voe_channel_id, codec_inst) != -1) { |
@@ -138,53 +141,45 @@ webrtc::AudioSendStream::Stats AudioSendStream::GetStats() const { |
// Get data from the last remote RTCP report. |
std::vector<webrtc::ReportBlock> blocks; |
- if (rtp->GetRemoteRTCPReportBlocks(config_.voe_channel_id, &blocks) != -1) { |
- for (const webrtc::ReportBlock& block : blocks) { |
- // Lookup report for send ssrc only. |
- if (block.source_SSRC == stats.local_ssrc) { |
- stats.packets_lost = block.cumulative_num_packets_lost; |
- stats.fraction_lost = Q8ToFloat(block.fraction_lost); |
- stats.ext_seqnum = block.extended_highest_sequence_number; |
- // Convert samples to milliseconds. |
- if (codec_inst.plfreq / 1000 > 0) { |
- stats.jitter_ms = |
- block.interarrival_jitter / (codec_inst.plfreq / 1000); |
- } |
- break; |
+ error = rtp->GetRemoteRTCPReportBlocks(config_.voe_channel_id, &blocks); |
+ RTC_DCHECK_EQ(0, error); |
+ for (const webrtc::ReportBlock& block : blocks) { |
+ // Lookup report for send ssrc only. |
+ if (block.source_SSRC == stats.local_ssrc) { |
+ stats.packets_lost = block.cumulative_num_packets_lost; |
+ stats.fraction_lost = Q8ToFloat(block.fraction_lost); |
+ stats.ext_seqnum = block.extended_highest_sequence_number; |
+ // Convert samples to milliseconds. |
+ if (codec_inst.plfreq / 1000 > 0) { |
+ stats.jitter_ms = |
+ block.interarrival_jitter / (codec_inst.plfreq / 1000); |
} |
+ break; |
} |
} |
} |
- // RTT isn't known until a RTCP report is received. Until then, VoiceEngine |
- // returns 0 to indicate an error value. |
- if (call_stats.rttMs > 0) { |
- stats.rtt_ms = call_stats.rttMs; |
- } |
- |
// Local speech level. |
{ |
unsigned int level = 0; |
- if (volume->GetSpeechInputLevelFullRange(level) != -1) { |
- stats.audio_level = static_cast<int32_t>(level); |
- } |
+ error = volume->GetSpeechInputLevelFullRange(level); |
+ RTC_DCHECK_EQ(0, error); |
+ stats.audio_level = static_cast<int32_t>(level); |
} |
- // TODO(ajm): Re-enable this metric once we have a reliable implementation. |
- stats.aec_quality_min = -1; |
- |
bool echo_metrics_on = false; |
- if (processing->GetEcMetricsStatus(echo_metrics_on) != -1 && |
- echo_metrics_on) { |
+ error = processing->GetEcMetricsStatus(echo_metrics_on); |
+ RTC_DCHECK_EQ(0, error); |
+ if (echo_metrics_on) { |
// These can also be negative, but in practice -1 is only used to signal |
// insufficient data, since the resolution is limited to multiples of 4 ms. |
int median = -1; |
int std = -1; |
float dummy = 0.0f; |
- if (processing->GetEcDelayMetrics(median, std, dummy) != -1) { |
- stats.echo_delay_median_ms = median; |
- stats.echo_delay_std_ms = std; |
- } |
+ error = processing->GetEcDelayMetrics(median, std, dummy); |
+ RTC_DCHECK_EQ(0, error); |
+ stats.echo_delay_median_ms = median; |
+ stats.echo_delay_std_ms = std; |
// These can take on valid negative values, so use the lowest possible level |
// as default rather than -1. |
@@ -192,10 +187,10 @@ webrtc::AudioSendStream::Stats AudioSendStream::GetStats() const { |
int erle = -100; |
int dummy1 = 0; |
int dummy2 = 0; |
- if (processing->GetEchoMetrics(erl, erle, dummy1, dummy2) != -1) { |
- stats.echo_return_loss = erl; |
- stats.echo_return_loss_enhancement = erle; |
- } |
+ error = processing->GetEchoMetrics(erl, erle, dummy1, dummy2); |
+ RTC_DCHECK_EQ(0, error); |
+ stats.echo_return_loss = erl; |
+ stats.echo_return_loss_enhancement = erle; |
} |
internal::AudioState* audio_state = |