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

Side by Side Diff: media/cast/rtcp/rtcp_sender.cc

Issue 70713002: Cast: Restructure RTCP interface to better fit our usage. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added missing line lost in merge Created 7 years, 1 month 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
« no previous file with comments | « media/cast/rtcp/rtcp_sender.h ('k') | media/cast/rtcp/rtcp_sender_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/cast/rtcp/rtcp_sender.h" 5 #include "media/cast/rtcp/rtcp_sender.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 12 matching lines...) Expand all
23 uint32 sending_ssrc, 23 uint32 sending_ssrc,
24 const std::string& c_name) 24 const std::string& c_name)
25 : ssrc_(sending_ssrc), 25 : ssrc_(sending_ssrc),
26 c_name_(c_name), 26 c_name_(c_name),
27 transport_(outgoing_transport) { 27 transport_(outgoing_transport) {
28 DCHECK_LT(c_name_.length(), kRtcpCnameSize) << "Invalid config"; 28 DCHECK_LT(c_name_.length(), kRtcpCnameSize) << "Invalid config";
29 } 29 }
30 30
31 RtcpSender::~RtcpSender() {} 31 RtcpSender::~RtcpSender() {}
32 32
33 void RtcpSender::SendRtcp(uint32 packet_type_flags, 33 void RtcpSender::SendRtcpFromRtpSender(uint32 packet_type_flags,
34 const RtcpSenderInfo* sender_info, 34 const RtcpSenderInfo* sender_info,
35 const RtcpReportBlock* report_block, 35 const RtcpDlrrReportBlock* dlrr,
36 uint32 pli_remote_ssrc, 36 const RtcpSenderLogMessage* sender_log) {
37 const RtcpDlrrReportBlock* dlrr, 37 if (packet_type_flags & kRtcpRr ||
38 const RtcpReceiverReferenceTimeReport* rrtr, 38 packet_type_flags & kRtcpPli ||
39 const RtcpCastMessage* cast_message) { 39 packet_type_flags & kRtcpRrtr ||
40 packet_type_flags & kRtcpCast ||
41 packet_type_flags & kRtcpReceiverLog ||
42 packet_type_flags & kRtcpRpsi ||
43 packet_type_flags & kRtcpRemb ||
44 packet_type_flags & kRtcpNack) {
45 NOTREACHED() << "Invalid argument";
46 }
47
40 std::vector<uint8> packet; 48 std::vector<uint8> packet;
41 packet.reserve(kIpPacketSize); 49 packet.reserve(kIpPacketSize);
42 if (packet_type_flags & kRtcpSr) { 50 if (packet_type_flags & kRtcpSr) {
43 DCHECK(sender_info) << "Invalid argument"; 51 DCHECK(sender_info) << "Invalid argument";
44 BuildSR(*sender_info, report_block, &packet); 52 BuildSR(*sender_info, NULL, &packet);
45 BuildSdec(&packet); 53 BuildSdec(&packet);
46 } else if (packet_type_flags & kRtcpRr) { 54 }
55 if (packet_type_flags & kRtcpBye) {
56 BuildBye(&packet);
57 }
58 if (packet_type_flags & kRtcpDlrr) {
59 DCHECK(dlrr) << "Invalid argument";
60 BuildDlrrRb(dlrr, &packet);
61 }
62 if (packet_type_flags & kRtcpSenderLog) {
63 DCHECK(sender_log) << "Invalid argument";
64 BuildSenderLog(sender_log, &packet);
65 }
66 if (packet.empty())
67 return; // Sanity don't send empty packets.
68
69 transport_->SendRtcpPacket(packet);
70 }
71
72 void RtcpSender::SendRtcpFromRtpReceiver(
73 uint32 packet_type_flags,
74 const RtcpReportBlock* report_block,
75 const RtcpReceiverReferenceTimeReport* rrtr,
76 const RtcpCastMessage* cast_message,
77 const RtcpReceiverLogMessage* receiver_log) {
78 if (packet_type_flags & kRtcpSr ||
79 packet_type_flags & kRtcpDlrr ||
80 packet_type_flags & kRtcpSenderLog) {
81 NOTREACHED() << "Invalid argument";
82 }
83 if (packet_type_flags & kRtcpPli ||
84 packet_type_flags & kRtcpRpsi ||
85 packet_type_flags & kRtcpRemb ||
86 packet_type_flags & kRtcpNack) {
87 // Implement these for webrtc interop.
88 NOTIMPLEMENTED();
89 }
90 std::vector<uint8> packet;
91 packet.reserve(kIpPacketSize);
92
93 if (packet_type_flags & kRtcpRr) {
47 BuildRR(report_block, &packet); 94 BuildRR(report_block, &packet);
48 if (!c_name_.empty()) { 95 if (!c_name_.empty()) {
49 BuildSdec(&packet); 96 BuildSdec(&packet);
50 } 97 }
51 } 98 }
52 if (packet_type_flags & kRtcpPli) {
53 BuildPli(pli_remote_ssrc, &packet);
54 }
55 if (packet_type_flags & kRtcpBye) { 99 if (packet_type_flags & kRtcpBye) {
56 BuildBye(&packet); 100 BuildBye(&packet);
57 } 101 }
58 if (packet_type_flags & kRtcpRpsi) {
59 // Implement this for webrtc interop.
60 NOTIMPLEMENTED();
61 }
62 if (packet_type_flags & kRtcpRemb) {
63 // Implement this for webrtc interop.
64 NOTIMPLEMENTED();
65 }
66 if (packet_type_flags & kRtcpNack) {
67 // Implement this for webrtc interop.
68 NOTIMPLEMENTED();
69 }
70 if (packet_type_flags & kRtcpDlrr) {
71 DCHECK(dlrr) << "Invalid argument";
72 BuildDlrrRb(dlrr, &packet);
73 }
74 if (packet_type_flags & kRtcpRrtr) { 102 if (packet_type_flags & kRtcpRrtr) {
75 DCHECK(rrtr) << "Invalid argument"; 103 DCHECK(rrtr) << "Invalid argument";
76 BuildRrtr(rrtr, &packet); 104 BuildRrtr(rrtr, &packet);
77 } 105 }
78 if (packet_type_flags & kRtcpCast) { 106 if (packet_type_flags & kRtcpCast) {
79 DCHECK(cast_message) << "Invalid argument"; 107 DCHECK(cast_message) << "Invalid argument";
80 BuildCast(cast_message, &packet); 108 BuildCast(cast_message, &packet);
81 } 109 }
82 110 if (packet_type_flags & kRtcpReceiverLog) {
111 DCHECK(receiver_log) << "Invalid argument";
112 BuildReceiverLog(receiver_log, &packet);
113 }
83 if (packet.empty()) return; // Sanity don't send empty packets. 114 if (packet.empty()) return; // Sanity don't send empty packets.
84 115
85 transport_->SendRtcpPacket(packet); 116 transport_->SendRtcpPacket(packet);
86 } 117 }
87 118
88 void RtcpSender::BuildSR(const RtcpSenderInfo& sender_info, 119 void RtcpSender::BuildSR(const RtcpSenderInfo& sender_info,
89 const RtcpReportBlock* report_block, 120 const RtcpReportBlock* report_block,
90 std::vector<uint8>* packet) const { 121 std::vector<uint8>* packet) const {
91 // Sender report. 122 // Sender report.
92 size_t start_size = packet->size(); 123 size_t start_size = packet->size();
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 } 566 }
536 DCHECK_LE(number_of_loss_fields, kRtcpMaxCastLossFields); 567 DCHECK_LE(number_of_loss_fields, kRtcpMaxCastLossFields);
537 (*packet)[cast_size_pos] = static_cast<uint8>(4 + number_of_loss_fields); 568 (*packet)[cast_size_pos] = static_cast<uint8>(4 + number_of_loss_fields);
538 (*packet)[cast_loss_field_pos] = static_cast<uint8>(number_of_loss_fields); 569 (*packet)[cast_loss_field_pos] = static_cast<uint8>(number_of_loss_fields);
539 570
540 // Frames with missing packets. 571 // Frames with missing packets.
541 TRACE_COUNTER_ID1("cast_rtcp", "RtcpSender::CastNACK", ssrc_, 572 TRACE_COUNTER_ID1("cast_rtcp", "RtcpSender::CastNACK", ssrc_,
542 cast->missing_frames_and_packets_.size()); 573 cast->missing_frames_and_packets_.size());
543 } 574 }
544 575
576 void RtcpSender::BuildSenderLog(const RtcpSenderLogMessage* sender_log_message,
577 std::vector<uint8>* packet) const {
578 // TODO(pwestin): Implement.
579 NOTIMPLEMENTED();
580 }
581
582 void RtcpSender::BuildReceiverLog(
583 const RtcpReceiverLogMessage* receiver_log_message,
584 std::vector<uint8>* packet) const {
585 // TODO(pwestin): Implement.
586 NOTIMPLEMENTED();
587 }
588
545 } // namespace cast 589 } // namespace cast
546 } // namespace media 590 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/rtcp/rtcp_sender.h ('k') | media/cast/rtcp/rtcp_sender_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698