Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_sender.cc

Issue 2684023002: Remove repeat flag from SendRTCP (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 size_t bytes_sent_; 121 size_t bytes_sent_;
122 122
123 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(PacketContainer); 123 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(PacketContainer);
124 }; 124 };
125 125
126 class RTCPSender::RtcpContext { 126 class RTCPSender::RtcpContext {
127 public: 127 public:
128 RtcpContext(const FeedbackState& feedback_state, 128 RtcpContext(const FeedbackState& feedback_state,
129 int32_t nack_size, 129 int32_t nack_size,
130 const uint16_t* nack_list, 130 const uint16_t* nack_list,
131 bool repeat,
132 uint64_t picture_id, 131 uint64_t picture_id,
133 NtpTime now) 132 NtpTime now)
134 : feedback_state_(feedback_state), 133 : feedback_state_(feedback_state),
135 nack_size_(nack_size), 134 nack_size_(nack_size),
136 nack_list_(nack_list), 135 nack_list_(nack_list),
137 repeat_(repeat),
138 picture_id_(picture_id), 136 picture_id_(picture_id),
139 now_(now) {} 137 now_(now) {}
140 138
141 const FeedbackState& feedback_state_; 139 const FeedbackState& feedback_state_;
142 const int32_t nack_size_; 140 const int32_t nack_size_;
143 const uint16_t* nack_list_; 141 const uint16_t* nack_list_;
144 const bool repeat_;
145 const uint64_t picture_id_; 142 const uint64_t picture_id_;
146 const NtpTime now_; 143 const NtpTime now_;
147 }; 144 };
148 145
149 RTCPSender::RTCPSender( 146 RTCPSender::RTCPSender(
150 bool audio, 147 bool audio,
151 Clock* clock, 148 Clock* clock,
152 ReceiveStatistics* receive_statistics, 149 ReceiveStatistics* receive_statistics,
153 RtcpPacketTypeCounterObserver* packet_type_counter_observer, 150 RtcpPacketTypeCounterObserver* packet_type_counter_observer,
154 RtcEventLog* event_log, 151 RtcEventLog* event_log,
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), 492 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"),
496 "RTCPSender::PLI"); 493 "RTCPSender::PLI");
497 ++packet_type_counter_.pli_packets; 494 ++packet_type_counter_.pli_packets;
498 TRACE_COUNTER_ID1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RTCP_PLICount", 495 TRACE_COUNTER_ID1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RTCP_PLICount",
499 ssrc_, packet_type_counter_.pli_packets); 496 ssrc_, packet_type_counter_.pli_packets);
500 497
501 return std::unique_ptr<rtcp::RtcpPacket>(pli); 498 return std::unique_ptr<rtcp::RtcpPacket>(pli);
502 } 499 }
503 500
504 std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildFIR(const RtcpContext& ctx) { 501 std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildFIR(const RtcpContext& ctx) {
505 if (!ctx.repeat_) 502 ++sequence_number_fir_;
506 ++sequence_number_fir_; // Do not increase if repetition.
507 503
508 rtcp::Fir* fir = new rtcp::Fir(); 504 rtcp::Fir* fir = new rtcp::Fir();
509 fir->SetSenderSsrc(ssrc_); 505 fir->SetSenderSsrc(ssrc_);
510 fir->AddRequestTo(remote_ssrc_, sequence_number_fir_); 506 fir->AddRequestTo(remote_ssrc_, sequence_number_fir_);
511 507
512 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), 508 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"),
513 "RTCPSender::FIR"); 509 "RTCPSender::FIR");
514 ++packet_type_counter_.fir_packets; 510 ++packet_type_counter_.fir_packets;
515 TRACE_COUNTER_ID1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RTCP_FIRCount", 511 TRACE_COUNTER_ID1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RTCP_FIRCount",
516 ssrc_, packet_type_counter_.fir_packets); 512 ssrc_, packet_type_counter_.fir_packets);
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 xr->SetVoipMetric(voip); 728 xr->SetVoipMetric(voip);
733 } 729 }
734 730
735 return std::move(xr); 731 return std::move(xr);
736 } 732 }
737 733
738 int32_t RTCPSender::SendRTCP(const FeedbackState& feedback_state, 734 int32_t RTCPSender::SendRTCP(const FeedbackState& feedback_state,
739 RTCPPacketType packetType, 735 RTCPPacketType packetType,
740 int32_t nack_size, 736 int32_t nack_size,
741 const uint16_t* nack_list, 737 const uint16_t* nack_list,
742 bool repeat,
743 uint64_t pictureID) { 738 uint64_t pictureID) {
744 return SendCompoundRTCP( 739 return SendCompoundRTCP(
745 feedback_state, std::set<RTCPPacketType>(&packetType, &packetType + 1), 740 feedback_state, std::set<RTCPPacketType>(&packetType, &packetType + 1),
746 nack_size, nack_list, repeat, pictureID); 741 nack_size, nack_list, pictureID);
747 } 742 }
748 743
749 int32_t RTCPSender::SendCompoundRTCP( 744 int32_t RTCPSender::SendCompoundRTCP(
750 const FeedbackState& feedback_state, 745 const FeedbackState& feedback_state,
751 const std::set<RTCPPacketType>& packet_types, 746 const std::set<RTCPPacketType>& packet_types,
752 int32_t nack_size, 747 int32_t nack_size,
753 const uint16_t* nack_list, 748 const uint16_t* nack_list,
754 bool repeat,
755 uint64_t pictureID) { 749 uint64_t pictureID) {
756 PacketContainer container(transport_, event_log_); 750 PacketContainer container(transport_, event_log_);
757 { 751 {
758 rtc::CritScope lock(&critical_section_rtcp_sender_); 752 rtc::CritScope lock(&critical_section_rtcp_sender_);
759 if (method_ == RtcpMode::kOff) { 753 if (method_ == RtcpMode::kOff) {
760 LOG(LS_WARNING) << "Can't send rtcp if it is disabled."; 754 LOG(LS_WARNING) << "Can't send rtcp if it is disabled.";
761 return -1; 755 return -1;
762 } 756 }
763 // Add all flags as volatile. Non volatile entries will not be overwritten. 757 // Add all flags as volatile. Non volatile entries will not be overwritten.
764 // All new volatile flags added will be consumed by the end of this call. 758 // All new volatile flags added will be consumed by the end of this call.
(...skipping 12 matching lines...) Expand all
777 if (sending_ && method_ == RtcpMode::kCompound) { 771 if (sending_ && method_ == RtcpMode::kCompound) {
778 // Not allowed to send any RTCP packet without sender report. 772 // Not allowed to send any RTCP packet without sender report.
779 return -1; 773 return -1;
780 } 774 }
781 } 775 }
782 776
783 if (packet_type_counter_.first_packet_time_ms == -1) 777 if (packet_type_counter_.first_packet_time_ms == -1)
784 packet_type_counter_.first_packet_time_ms = clock_->TimeInMilliseconds(); 778 packet_type_counter_.first_packet_time_ms = clock_->TimeInMilliseconds();
785 779
786 // We need to send our NTP even if we haven't received any reports. 780 // We need to send our NTP even if we haven't received any reports.
787 RtcpContext context(feedback_state, nack_size, nack_list, repeat, pictureID, 781 RtcpContext context(feedback_state, nack_size, nack_list, pictureID,
788 NtpTime(*clock_)); 782 NtpTime(*clock_));
789 783
790 PrepareReport(feedback_state); 784 PrepareReport(feedback_state);
791 785
792 std::unique_ptr<rtcp::RtcpPacket> packet_bye; 786 std::unique_ptr<rtcp::RtcpPacket> packet_bye;
793 787
794 auto it = report_flags_.begin(); 788 auto it = report_flags_.begin();
795 while (it != report_flags_.end()) { 789 while (it != report_flags_.end()) {
796 auto builder_it = builders_.find(it->type); 790 auto builder_it = builders_.find(it->type);
797 RTC_DCHECK(builder_it != builders_.end()) 791 RTC_DCHECK(builder_it != builders_.end())
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 return false; 1049 return false;
1056 } 1050 }
1057 1051
1058 RTC_DCHECK_LE(max_packet_size_, IP_PACKET_SIZE); 1052 RTC_DCHECK_LE(max_packet_size_, IP_PACKET_SIZE);
1059 uint8_t buffer[IP_PACKET_SIZE]; 1053 uint8_t buffer[IP_PACKET_SIZE];
1060 return packet.BuildExternalBuffer(buffer, max_packet_size_, &sender) && 1054 return packet.BuildExternalBuffer(buffer, max_packet_size_, &sender) &&
1061 !sender.send_failure_; 1055 !sender.send_failure_;
1062 } 1056 }
1063 1057
1064 } // namespace webrtc 1058 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_sender.h ('k') | webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698