| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 
| 3  * | 3  * | 
| 4  *  Use of this source code is governed by a BSD-style license | 4  *  Use of this source code is governed by a BSD-style license | 
| 5  *  that can be found in the LICENSE file in the root of the source | 5  *  that can be found in the LICENSE file in the root of the source | 
| 6  *  tree. An additional intellectual property rights grant can be found | 6  *  tree. An additional intellectual property rights grant can be found | 
| 7  *  in the file PATENTS.  All contributing project authors may | 7  *  in the file PATENTS.  All contributing project authors may | 
| 8  *  be found in the AUTHORS file in the root of the source tree. | 8  *  be found in the AUTHORS file in the root of the source tree. | 
| 9  */ | 9  */ | 
| 10 | 10 | 
| (...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 821     rtc::CritScope lock(&send_critsect_); | 821     rtc::CritScope lock(&send_critsect_); | 
| 822     media_has_been_sent_ = true; | 822     media_has_been_sent_ = true; | 
| 823   } | 823   } | 
| 824   UpdateRtpStats(*packet_to_send, send_over_rtx, is_retransmit); | 824   UpdateRtpStats(*packet_to_send, send_over_rtx, is_retransmit); | 
| 825   return true; | 825   return true; | 
| 826 } | 826 } | 
| 827 | 827 | 
| 828 void RTPSender::UpdateRtpStats(const RtpPacketToSend& packet, | 828 void RTPSender::UpdateRtpStats(const RtpPacketToSend& packet, | 
| 829                                bool is_rtx, | 829                                bool is_rtx, | 
| 830                                bool is_retransmit) { | 830                                bool is_retransmit) { | 
| 831   StreamDataCounters* counters; |  | 
| 832   // Get ssrc before taking statistics_crit_ to avoid possible deadlock. |  | 
| 833   uint32_t ssrc = is_rtx ? RtxSsrc() : SSRC(); |  | 
| 834   int64_t now_ms = clock_->TimeInMilliseconds(); | 831   int64_t now_ms = clock_->TimeInMilliseconds(); | 
| 835 | 832 | 
| 836   rtc::CritScope lock(&statistics_crit_); | 833   rtc::CritScope lock(&statistics_crit_); | 
| 837   if (is_rtx) { | 834   StreamDataCounters* counters = is_rtx ? &rtx_rtp_stats_ : &rtp_stats_; | 
| 838     counters = &rtx_rtp_stats_; |  | 
| 839   } else { |  | 
| 840     counters = &rtp_stats_; |  | 
| 841   } |  | 
| 842 | 835 | 
| 843   total_bitrate_sent_.Update(packet.size(), now_ms); | 836   total_bitrate_sent_.Update(packet.size(), now_ms); | 
| 844 | 837 | 
| 845   if (counters->first_packet_time_ms == -1) { | 838   if (counters->first_packet_time_ms == -1) | 
| 846     counters->first_packet_time_ms = clock_->TimeInMilliseconds(); | 839     counters->first_packet_time_ms = now_ms; | 
| 847   } | 840 | 
| 848   if (IsFecPacket(packet)) { | 841   if (IsFecPacket(packet)) | 
| 849     CountPacket(&counters->fec, packet); | 842     CountPacket(&counters->fec, packet); | 
| 850   } | 843 | 
| 851   if (is_retransmit) { | 844   if (is_retransmit) { | 
| 852     CountPacket(&counters->retransmitted, packet); | 845     CountPacket(&counters->retransmitted, packet); | 
| 853     nack_bitrate_sent_.Update(packet.size(), now_ms); | 846     nack_bitrate_sent_.Update(packet.size(), now_ms); | 
| 854   } | 847   } | 
| 855   CountPacket(&counters->transmitted, packet); | 848   CountPacket(&counters->transmitted, packet); | 
| 856 | 849 | 
| 857   if (rtp_stats_callback_) { | 850   if (rtp_stats_callback_) | 
| 858     rtp_stats_callback_->DataCountersUpdated(*counters, ssrc); | 851     rtp_stats_callback_->DataCountersUpdated(*counters, packet.Ssrc()); | 
| 859   } |  | 
| 860 } | 852 } | 
| 861 | 853 | 
| 862 bool RTPSender::IsFecPacket(const RtpPacketToSend& packet) const { | 854 bool RTPSender::IsFecPacket(const RtpPacketToSend& packet) const { | 
| 863   if (!video_) { | 855   if (!video_) { | 
| 864     return false; | 856     return false; | 
| 865   } | 857   } | 
| 866   bool fec_enabled; | 858   bool fec_enabled; | 
| 867   uint8_t pt_red; | 859   uint8_t pt_red; | 
| 868   uint8_t pt_fec; | 860   uint8_t pt_fec; | 
| 869   video_->GenericFECStatus(&fec_enabled, &pt_red, &pt_fec); | 861   video_->GenericFECStatus(&fec_enabled, &pt_red, &pt_fec); | 
| (...skipping 901 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1771   rtc::CritScope lock(&send_critsect_); | 1763   rtc::CritScope lock(&send_critsect_); | 
| 1772 | 1764 | 
| 1773   RtpState state; | 1765   RtpState state; | 
| 1774   state.sequence_number = sequence_number_rtx_; | 1766   state.sequence_number = sequence_number_rtx_; | 
| 1775   state.start_timestamp = timestamp_offset_; | 1767   state.start_timestamp = timestamp_offset_; | 
| 1776 | 1768 | 
| 1777   return state; | 1769   return state; | 
| 1778 } | 1770 } | 
| 1779 | 1771 | 
| 1780 }  // namespace webrtc | 1772 }  // namespace webrtc | 
| OLD | NEW | 
|---|