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

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

Issue 2746413003: Delete support for sending RTCP RPSI and SLI messages. (Closed)
Patch Set: Delete RtcpContext::picture_id_, and related arguments. Created 3 years, 9 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 12 matching lines...) Expand all
23 #include "webrtc/logging/rtc_event_log/rtc_event_log.h" 23 #include "webrtc/logging/rtc_event_log/rtc_event_log.h"
24 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h" 24 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h"
25 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h" 25 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h"
26 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h" 26 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h"
27 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h" 27 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h"
28 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.h" 28 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.h"
29 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/nack.h" 29 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/nack.h"
30 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/pli.h" 30 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/pli.h"
31 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h" 31 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/receiver_report.h"
32 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.h" 32 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/remb.h"
33 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/rpsi.h"
34 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.h" 33 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.h"
35 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h" 34 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h"
36 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sli.h"
37 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.h" 35 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.h"
38 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h" 36 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h"
39 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h" 37 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
40 #include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h" 38 #include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h"
41 #include "webrtc/modules/rtp_rtcp/source/time_util.h" 39 #include "webrtc/modules/rtp_rtcp/source/time_util.h"
42 #include "webrtc/modules/rtp_rtcp/source/tmmbr_help.h" 40 #include "webrtc/modules/rtp_rtcp/source/tmmbr_help.h"
43 41
44 namespace webrtc { 42 namespace webrtc {
45 43
46 namespace { 44 namespace {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 size_t bytes_sent_; 120 size_t bytes_sent_;
123 121
124 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(PacketContainer); 122 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(PacketContainer);
125 }; 123 };
126 124
127 class RTCPSender::RtcpContext { 125 class RTCPSender::RtcpContext {
128 public: 126 public:
129 RtcpContext(const FeedbackState& feedback_state, 127 RtcpContext(const FeedbackState& feedback_state,
130 int32_t nack_size, 128 int32_t nack_size,
131 const uint16_t* nack_list, 129 const uint16_t* nack_list,
132 uint64_t picture_id,
133 NtpTime now) 130 NtpTime now)
134 : feedback_state_(feedback_state), 131 : feedback_state_(feedback_state),
135 nack_size_(nack_size), 132 nack_size_(nack_size),
136 nack_list_(nack_list), 133 nack_list_(nack_list),
137 picture_id_(picture_id),
138 now_(now) {} 134 now_(now) {}
139 135
140 const FeedbackState& feedback_state_; 136 const FeedbackState& feedback_state_;
141 const int32_t nack_size_; 137 const int32_t nack_size_;
142 const uint16_t* nack_list_; 138 const uint16_t* nack_list_;
143 const uint64_t picture_id_;
144 const NtpTime now_; 139 const NtpTime now_;
145 }; 140 };
146 141
147 RTCPSender::RTCPSender( 142 RTCPSender::RTCPSender(
148 bool audio, 143 bool audio,
149 Clock* clock, 144 Clock* clock,
150 ReceiveStatistics* receive_statistics, 145 ReceiveStatistics* receive_statistics,
151 RtcpPacketTypeCounterObserver* packet_type_counter_observer, 146 RtcpPacketTypeCounterObserver* packet_type_counter_observer,
152 RtcEventLog* event_log, 147 RtcEventLog* event_log,
153 Transport* outgoing_transport) 148 Transport* outgoing_transport)
(...skipping 29 matching lines...) Expand all
183 178
184 xr_send_receiver_reference_time_enabled_(false), 179 xr_send_receiver_reference_time_enabled_(false),
185 packet_type_counter_observer_(packet_type_counter_observer) { 180 packet_type_counter_observer_(packet_type_counter_observer) {
186 RTC_DCHECK(transport_ != nullptr); 181 RTC_DCHECK(transport_ != nullptr);
187 182
188 builders_[kRtcpSr] = &RTCPSender::BuildSR; 183 builders_[kRtcpSr] = &RTCPSender::BuildSR;
189 builders_[kRtcpRr] = &RTCPSender::BuildRR; 184 builders_[kRtcpRr] = &RTCPSender::BuildRR;
190 builders_[kRtcpSdes] = &RTCPSender::BuildSDES; 185 builders_[kRtcpSdes] = &RTCPSender::BuildSDES;
191 builders_[kRtcpPli] = &RTCPSender::BuildPLI; 186 builders_[kRtcpPli] = &RTCPSender::BuildPLI;
192 builders_[kRtcpFir] = &RTCPSender::BuildFIR; 187 builders_[kRtcpFir] = &RTCPSender::BuildFIR;
193 builders_[kRtcpSli] = &RTCPSender::BuildSLI;
194 builders_[kRtcpRpsi] = &RTCPSender::BuildRPSI;
195 builders_[kRtcpRemb] = &RTCPSender::BuildREMB; 188 builders_[kRtcpRemb] = &RTCPSender::BuildREMB;
196 builders_[kRtcpBye] = &RTCPSender::BuildBYE; 189 builders_[kRtcpBye] = &RTCPSender::BuildBYE;
197 builders_[kRtcpApp] = &RTCPSender::BuildAPP; 190 builders_[kRtcpApp] = &RTCPSender::BuildAPP;
198 builders_[kRtcpTmmbr] = &RTCPSender::BuildTMMBR; 191 builders_[kRtcpTmmbr] = &RTCPSender::BuildTMMBR;
199 builders_[kRtcpTmmbn] = &RTCPSender::BuildTMMBN; 192 builders_[kRtcpTmmbn] = &RTCPSender::BuildTMMBN;
200 builders_[kRtcpNack] = &RTCPSender::BuildNACK; 193 builders_[kRtcpNack] = &RTCPSender::BuildNACK;
201 builders_[kRtcpAnyExtendedReports] = &RTCPSender::BuildExtendedReports; 194 builders_[kRtcpAnyExtendedReports] = &RTCPSender::BuildExtendedReports;
202 } 195 }
203 196
204 RTCPSender::~RTCPSender() {} 197 RTCPSender::~RTCPSender() {}
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 502
510 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), 503 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"),
511 "RTCPSender::FIR"); 504 "RTCPSender::FIR");
512 ++packet_type_counter_.fir_packets; 505 ++packet_type_counter_.fir_packets;
513 TRACE_COUNTER_ID1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RTCP_FIRCount", 506 TRACE_COUNTER_ID1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RTCP_FIRCount",
514 ssrc_, packet_type_counter_.fir_packets); 507 ssrc_, packet_type_counter_.fir_packets);
515 508
516 return std::unique_ptr<rtcp::RtcpPacket>(fir); 509 return std::unique_ptr<rtcp::RtcpPacket>(fir);
517 } 510 }
518 511
519 /*
520 0 1 2 3
521 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
522 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
523 | First | Number | PictureID |
524 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
525 */
526 std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildSLI(const RtcpContext& ctx) {
527 rtcp::Sli* sli = new rtcp::Sli();
528 sli->SetSenderSsrc(ssrc_);
529 sli->SetMediaSsrc(remote_ssrc_);
530 // Crop picture id to 6 least significant bits.
531 sli->AddPictureId(ctx.picture_id_ & 0x3F);
532
533 return std::unique_ptr<rtcp::RtcpPacket>(sli);
534 }
535
536 /*
537 0 1 2 3
538 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
539 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
540 | PB |0| Payload Type| Native RPSI bit string |
541 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
542 | defined per codec ... | Padding (0) |
543 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
544 */
545 /*
546 * Note: not generic made for VP8
547 */
548 std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildRPSI(
549 const RtcpContext& ctx) {
550 if (ctx.feedback_state_.send_payload_type == 0xFF)
551 return nullptr;
552
553 rtcp::Rpsi* rpsi = new rtcp::Rpsi();
554 rpsi->SetSenderSsrc(ssrc_);
555 rpsi->SetMediaSsrc(remote_ssrc_);
556 rpsi->SetPayloadType(ctx.feedback_state_.send_payload_type);
557 rpsi->SetPictureId(ctx.picture_id_);
558
559 return std::unique_ptr<rtcp::RtcpPacket>(rpsi);
560 }
561
562 std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildREMB( 512 std::unique_ptr<rtcp::RtcpPacket> RTCPSender::BuildREMB(
563 const RtcpContext& ctx) { 513 const RtcpContext& ctx) {
564 rtcp::Remb* remb = new rtcp::Remb(); 514 rtcp::Remb* remb = new rtcp::Remb();
565 remb->SetSenderSsrc(ssrc_); 515 remb->SetSenderSsrc(ssrc_);
566 remb->SetBitrateBps(remb_bitrate_); 516 remb->SetBitrateBps(remb_bitrate_);
567 remb->SetSsrcs(remb_ssrcs_); 517 remb->SetSsrcs(remb_ssrcs_);
568 518
569 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), 519 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"),
570 "RTCPSender::REMB"); 520 "RTCPSender::REMB");
571 521
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 679
730 xr->SetVoipMetric(voip); 680 xr->SetVoipMetric(voip);
731 } 681 }
732 682
733 return std::move(xr); 683 return std::move(xr);
734 } 684 }
735 685
736 int32_t RTCPSender::SendRTCP(const FeedbackState& feedback_state, 686 int32_t RTCPSender::SendRTCP(const FeedbackState& feedback_state,
737 RTCPPacketType packetType, 687 RTCPPacketType packetType,
738 int32_t nack_size, 688 int32_t nack_size,
739 const uint16_t* nack_list, 689 const uint16_t* nack_list) {
740 uint64_t pictureID) {
741 return SendCompoundRTCP( 690 return SendCompoundRTCP(
742 feedback_state, std::set<RTCPPacketType>(&packetType, &packetType + 1), 691 feedback_state, std::set<RTCPPacketType>(&packetType, &packetType + 1),
743 nack_size, nack_list, pictureID); 692 nack_size, nack_list);
744 } 693 }
745 694
746 int32_t RTCPSender::SendCompoundRTCP( 695 int32_t RTCPSender::SendCompoundRTCP(
747 const FeedbackState& feedback_state, 696 const FeedbackState& feedback_state,
748 const std::set<RTCPPacketType>& packet_types, 697 const std::set<RTCPPacketType>& packet_types,
749 int32_t nack_size, 698 int32_t nack_size,
750 const uint16_t* nack_list, 699 const uint16_t* nack_list) {
751 uint64_t pictureID) {
752 PacketContainer container(transport_, event_log_); 700 PacketContainer container(transport_, event_log_);
753 size_t max_packet_size; 701 size_t max_packet_size;
754 702
755 { 703 {
756 rtc::CritScope lock(&critical_section_rtcp_sender_); 704 rtc::CritScope lock(&critical_section_rtcp_sender_);
757 if (method_ == RtcpMode::kOff) { 705 if (method_ == RtcpMode::kOff) {
758 LOG(LS_WARNING) << "Can't send rtcp if it is disabled."; 706 LOG(LS_WARNING) << "Can't send rtcp if it is disabled.";
759 return -1; 707 return -1;
760 } 708 }
761 // Add all flags as volatile. Non volatile entries will not be overwritten. 709 // Add all flags as volatile. Non volatile entries will not be overwritten.
(...skipping 13 matching lines...) Expand all
775 if (sending_ && method_ == RtcpMode::kCompound) { 723 if (sending_ && method_ == RtcpMode::kCompound) {
776 // Not allowed to send any RTCP packet without sender report. 724 // Not allowed to send any RTCP packet without sender report.
777 return -1; 725 return -1;
778 } 726 }
779 } 727 }
780 728
781 if (packet_type_counter_.first_packet_time_ms == -1) 729 if (packet_type_counter_.first_packet_time_ms == -1)
782 packet_type_counter_.first_packet_time_ms = clock_->TimeInMilliseconds(); 730 packet_type_counter_.first_packet_time_ms = clock_->TimeInMilliseconds();
783 731
784 // We need to send our NTP even if we haven't received any reports. 732 // We need to send our NTP even if we haven't received any reports.
785 RtcpContext context(feedback_state, nack_size, nack_list, pictureID, 733 RtcpContext context(feedback_state, nack_size, nack_list,
786 clock_->CurrentNtpTime()); 734 clock_->CurrentNtpTime());
787 735
788 PrepareReport(feedback_state); 736 PrepareReport(feedback_state);
789 737
790 std::unique_ptr<rtcp::RtcpPacket> packet_bye; 738 std::unique_ptr<rtcp::RtcpPacket> packet_bye;
791 739
792 auto it = report_flags_.begin(); 740 auto it = report_flags_.begin();
793 while (it != report_flags_.end()) { 741 while (it != report_flags_.end()) {
794 auto builder_it = builders_.find(it->type); 742 auto builder_it = builders_.find(it->type);
795 RTC_DCHECK(builder_it != builders_.end()) 743 RTC_DCHECK(builder_it != builders_.end())
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
1052 max_packet_size = max_packet_size_; 1000 max_packet_size = max_packet_size_;
1053 } 1001 }
1054 1002
1055 RTC_DCHECK_LE(max_packet_size, IP_PACKET_SIZE); 1003 RTC_DCHECK_LE(max_packet_size, IP_PACKET_SIZE);
1056 uint8_t buffer[IP_PACKET_SIZE]; 1004 uint8_t buffer[IP_PACKET_SIZE];
1057 return packet.BuildExternalBuffer(buffer, max_packet_size, &sender) && 1005 return packet.BuildExternalBuffer(buffer, max_packet_size, &sender) &&
1058 !sender.send_failure_; 1006 !sender.send_failure_;
1059 } 1007 }
1060 1008
1061 } // namespace webrtc 1009 } // 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