Index: webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
index b9d2bb9fffbbdcf542f9cc4a162818ebbe804c34..38069688f2ba635e826d245132f172d8e12396c1 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
@@ -828,35 +828,27 @@ bool RTPSender::PrepareAndSendPacket(std::unique_ptr<RtpPacketToSend> packet, |
void RTPSender::UpdateRtpStats(const RtpPacketToSend& packet, |
bool is_rtx, |
bool is_retransmit) { |
- StreamDataCounters* counters; |
- // Get ssrc before taking statistics_crit_ to avoid possible deadlock. |
- uint32_t ssrc = is_rtx ? RtxSsrc() : SSRC(); |
int64_t now_ms = clock_->TimeInMilliseconds(); |
rtc::CritScope lock(&statistics_crit_); |
- if (is_rtx) { |
- counters = &rtx_rtp_stats_; |
- } else { |
- counters = &rtp_stats_; |
- } |
+ StreamDataCounters* counters = is_rtx ? &rtx_rtp_stats_ : &rtp_stats_; |
total_bitrate_sent_.Update(packet.size(), now_ms); |
- if (counters->first_packet_time_ms == -1) { |
- counters->first_packet_time_ms = clock_->TimeInMilliseconds(); |
- } |
- if (IsFecPacket(packet)) { |
+ if (counters->first_packet_time_ms == -1) |
+ counters->first_packet_time_ms = now_ms; |
+ |
+ if (IsFecPacket(packet)) |
CountPacket(&counters->fec, packet); |
- } |
+ |
if (is_retransmit) { |
CountPacket(&counters->retransmitted, packet); |
nack_bitrate_sent_.Update(packet.size(), now_ms); |
} |
CountPacket(&counters->transmitted, packet); |
- if (rtp_stats_callback_) { |
- rtp_stats_callback_->DataCountersUpdated(*counters, ssrc); |
- } |
+ if (rtp_stats_callback_) |
+ rtp_stats_callback_->DataCountersUpdated(*counters, packet.Ssrc()); |
} |
bool RTPSender::IsFecPacket(const RtpPacketToSend& packet) const { |