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

Side by Side Diff: media/cast/net/rtcp/test_rtcp_packet_builder.cc

Issue 1709863002: Add Cast PLI support on sender side. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address dcheng's comments. Created 4 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/net/rtcp/test_rtcp_packet_builder.h" 5 #include "media/cast/net/rtcp/test_rtcp_packet_builder.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "media/cast/net/rtcp/rtcp_utility.h" 8 #include "media/cast/net/rtcp/rtcp_utility.h"
9 9
10 namespace media { 10 namespace media {
11 namespace cast { 11 namespace cast {
12 12
13 TestRtcpPacketBuilder::TestRtcpPacketBuilder() 13 TestRtcpPacketBuilder::TestRtcpPacketBuilder()
14 : ptr_of_length_(NULL), 14 : ptr_of_length_(NULL),
15 big_endian_writer_(reinterpret_cast<char*>(buffer_), kMaxIpPacketSize), 15 big_endian_writer_(reinterpret_cast<char*>(buffer_), kMaxIpPacketSize),
16 big_endian_reader_(NULL, 0) {} 16 big_endian_reader_(NULL, 0) {}
17 17
18 void TestRtcpPacketBuilder::AddSr(uint32_t sender_ssrc, 18 void TestRtcpPacketBuilder::AddSr(uint32_t remote_ssrc,
19 int number_of_report_blocks) { 19 int number_of_report_blocks) {
20 AddRtcpHeader(200, number_of_report_blocks); 20 AddRtcpHeader(200, number_of_report_blocks);
21 big_endian_writer_.WriteU32(sender_ssrc); 21 big_endian_writer_.WriteU32(remote_ssrc);
22 big_endian_writer_.WriteU32(kNtpHigh); // NTP timestamp. 22 big_endian_writer_.WriteU32(kNtpHigh); // NTP timestamp.
23 big_endian_writer_.WriteU32(kNtpLow); 23 big_endian_writer_.WriteU32(kNtpLow);
24 big_endian_writer_.WriteU32(kRtpTimestamp); 24 big_endian_writer_.WriteU32(kRtpTimestamp);
25 big_endian_writer_.WriteU32(kSendPacketCount); 25 big_endian_writer_.WriteU32(kSendPacketCount);
26 big_endian_writer_.WriteU32(kSendOctetCount); 26 big_endian_writer_.WriteU32(kSendOctetCount);
27 } 27 }
28 28
29 void TestRtcpPacketBuilder::AddSrWithNtp(uint32_t sender_ssrc, 29 void TestRtcpPacketBuilder::AddSrWithNtp(uint32_t remote_ssrc,
30 uint32_t ntp_high, 30 uint32_t ntp_high,
31 uint32_t ntp_low, 31 uint32_t ntp_low,
32 uint32_t rtp_timestamp) { 32 uint32_t rtp_timestamp) {
33 AddRtcpHeader(200, 0); 33 AddRtcpHeader(200, 0);
34 big_endian_writer_.WriteU32(sender_ssrc); 34 big_endian_writer_.WriteU32(remote_ssrc);
35 big_endian_writer_.WriteU32(ntp_high); 35 big_endian_writer_.WriteU32(ntp_high);
36 big_endian_writer_.WriteU32(ntp_low); 36 big_endian_writer_.WriteU32(ntp_low);
37 big_endian_writer_.WriteU32(rtp_timestamp); 37 big_endian_writer_.WriteU32(rtp_timestamp);
38 big_endian_writer_.WriteU32(kSendPacketCount); 38 big_endian_writer_.WriteU32(kSendPacketCount);
39 big_endian_writer_.WriteU32(kSendOctetCount); 39 big_endian_writer_.WriteU32(kSendOctetCount);
40 } 40 }
41 41
42 void TestRtcpPacketBuilder::AddRr(uint32_t sender_ssrc, 42 void TestRtcpPacketBuilder::AddRr(uint32_t remote_ssrc,
43 int number_of_report_blocks) { 43 int number_of_report_blocks) {
44 AddRtcpHeader(201, number_of_report_blocks); 44 AddRtcpHeader(201, number_of_report_blocks);
45 big_endian_writer_.WriteU32(sender_ssrc); 45 big_endian_writer_.WriteU32(remote_ssrc);
46 } 46 }
47 47
48 void TestRtcpPacketBuilder::AddRb(uint32_t rtp_ssrc) { 48 void TestRtcpPacketBuilder::AddRb(uint32_t local_ssrc) {
49 big_endian_writer_.WriteU32(rtp_ssrc); 49 big_endian_writer_.WriteU32(local_ssrc);
50 big_endian_writer_.WriteU32(kLoss); 50 big_endian_writer_.WriteU32(kLoss);
51 big_endian_writer_.WriteU32(kExtendedMax); 51 big_endian_writer_.WriteU32(kExtendedMax);
52 big_endian_writer_.WriteU32(kTestJitter); 52 big_endian_writer_.WriteU32(kTestJitter);
53 big_endian_writer_.WriteU32(kLastSr); 53 big_endian_writer_.WriteU32(kLastSr);
54 big_endian_writer_.WriteU32(kDelayLastSr); 54 big_endian_writer_.WriteU32(kDelayLastSr);
55 } 55 }
56 56
57 void TestRtcpPacketBuilder::AddXrHeader(uint32_t sender_ssrc) { 57 void TestRtcpPacketBuilder::AddXrHeader(uint32_t remote_ssrc) {
58 AddRtcpHeader(207, 0); 58 AddRtcpHeader(207, 0);
59 big_endian_writer_.WriteU32(sender_ssrc); 59 big_endian_writer_.WriteU32(remote_ssrc);
60 } 60 }
61 61
62 void TestRtcpPacketBuilder::AddXrUnknownBlock() { 62 void TestRtcpPacketBuilder::AddXrUnknownBlock() {
63 big_endian_writer_.WriteU8(9); // Block type. 63 big_endian_writer_.WriteU8(9); // Block type.
64 big_endian_writer_.WriteU8(0); // Reserved. 64 big_endian_writer_.WriteU8(0); // Reserved.
65 big_endian_writer_.WriteU16(4); // Block length. 65 big_endian_writer_.WriteU16(4); // Block length.
66 // First receiver same as sender of this report. 66 // First receiver same as sender of this report.
67 big_endian_writer_.WriteU32(0); 67 big_endian_writer_.WriteU32(0);
68 big_endian_writer_.WriteU32(0); 68 big_endian_writer_.WriteU32(0);
69 big_endian_writer_.WriteU32(0); 69 big_endian_writer_.WriteU32(0);
70 big_endian_writer_.WriteU32(0); 70 big_endian_writer_.WriteU32(0);
71 } 71 }
72 72
73 void TestRtcpPacketBuilder::AddUnknownBlock() { 73 void TestRtcpPacketBuilder::AddUnknownBlock() {
74 AddRtcpHeader(99, 0); 74 AddRtcpHeader(99, 0);
75 big_endian_writer_.WriteU32(42); 75 big_endian_writer_.WriteU32(42);
76 big_endian_writer_.WriteU32(42); 76 big_endian_writer_.WriteU32(42);
77 big_endian_writer_.WriteU32(42); 77 big_endian_writer_.WriteU32(42);
78 } 78 }
79 79
80 void TestRtcpPacketBuilder::AddXrDlrrBlock(uint32_t sender_ssrc) { 80 void TestRtcpPacketBuilder::AddXrDlrrBlock(uint32_t remote_ssrc) {
81 big_endian_writer_.WriteU8(5); // Block type. 81 big_endian_writer_.WriteU8(5); // Block type.
82 big_endian_writer_.WriteU8(0); // Reserved. 82 big_endian_writer_.WriteU8(0); // Reserved.
83 big_endian_writer_.WriteU16(3); // Block length. 83 big_endian_writer_.WriteU16(3); // Block length.
84 84
85 // First receiver same as sender of this report. 85 // First receiver same as sender of this report.
86 big_endian_writer_.WriteU32(sender_ssrc); 86 big_endian_writer_.WriteU32(remote_ssrc);
87 big_endian_writer_.WriteU32(kLastRr); 87 big_endian_writer_.WriteU32(kLastRr);
88 big_endian_writer_.WriteU32(kDelayLastRr); 88 big_endian_writer_.WriteU32(kDelayLastRr);
89 } 89 }
90 90
91 void TestRtcpPacketBuilder::AddXrExtendedDlrrBlock(uint32_t sender_ssrc) { 91 void TestRtcpPacketBuilder::AddXrExtendedDlrrBlock(uint32_t remote_ssrc) {
92 big_endian_writer_.WriteU8(5); // Block type. 92 big_endian_writer_.WriteU8(5); // Block type.
93 big_endian_writer_.WriteU8(0); // Reserved. 93 big_endian_writer_.WriteU8(0); // Reserved.
94 big_endian_writer_.WriteU16(9); // Block length. 94 big_endian_writer_.WriteU16(9); // Block length.
95 big_endian_writer_.WriteU32(0xaaaaaaaa); 95 big_endian_writer_.WriteU32(0xaaaaaaaa);
96 big_endian_writer_.WriteU32(0xaaaaaaaa); 96 big_endian_writer_.WriteU32(0xaaaaaaaa);
97 big_endian_writer_.WriteU32(0xaaaaaaaa); 97 big_endian_writer_.WriteU32(0xaaaaaaaa);
98 98
99 // First receiver same as sender of this report. 99 // First receiver same as sender of this report.
100 big_endian_writer_.WriteU32(sender_ssrc); 100 big_endian_writer_.WriteU32(remote_ssrc);
101 big_endian_writer_.WriteU32(kLastRr); 101 big_endian_writer_.WriteU32(kLastRr);
102 big_endian_writer_.WriteU32(kDelayLastRr); 102 big_endian_writer_.WriteU32(kDelayLastRr);
103 big_endian_writer_.WriteU32(0xbbbbbbbb); 103 big_endian_writer_.WriteU32(0xbbbbbbbb);
104 big_endian_writer_.WriteU32(0xbbbbbbbb); 104 big_endian_writer_.WriteU32(0xbbbbbbbb);
105 big_endian_writer_.WriteU32(0xbbbbbbbb); 105 big_endian_writer_.WriteU32(0xbbbbbbbb);
106 } 106 }
107 107
108 void TestRtcpPacketBuilder::AddXrRrtrBlock() { 108 void TestRtcpPacketBuilder::AddXrRrtrBlock() {
109 big_endian_writer_.WriteU8(4); // Block type. 109 big_endian_writer_.WriteU8(4); // Block type.
110 big_endian_writer_.WriteU8(0); // Reserved. 110 big_endian_writer_.WriteU8(0); // Reserved.
111 big_endian_writer_.WriteU16(2); // Block length. 111 big_endian_writer_.WriteU16(2); // Block length.
112 big_endian_writer_.WriteU32(kNtpHigh); 112 big_endian_writer_.WriteU32(kNtpHigh);
113 big_endian_writer_.WriteU32(kNtpLow); 113 big_endian_writer_.WriteU32(kNtpLow);
114 } 114 }
115 115
116 void TestRtcpPacketBuilder::AddNack(uint32_t sender_ssrc, uint32_t media_ssrc) { 116 void TestRtcpPacketBuilder::AddNack(uint32_t remote_ssrc, uint32_t local_ssrc) {
117 AddRtcpHeader(205, 1); 117 AddRtcpHeader(205, 1);
118 big_endian_writer_.WriteU32(sender_ssrc); 118 big_endian_writer_.WriteU32(remote_ssrc);
119 big_endian_writer_.WriteU32(media_ssrc); 119 big_endian_writer_.WriteU32(local_ssrc);
120 big_endian_writer_.WriteU16(kMissingPacket); 120 big_endian_writer_.WriteU16(kMissingPacket);
121 big_endian_writer_.WriteU16(0); 121 big_endian_writer_.WriteU16(0);
122 } 122 }
123 123
124 void TestRtcpPacketBuilder::AddSendReportRequest(uint32_t sender_ssrc, 124 void TestRtcpPacketBuilder::AddSendReportRequest(uint32_t remote_ssrc,
125 uint32_t media_ssrc) { 125 uint32_t local_ssrc) {
126 AddRtcpHeader(205, 5); 126 AddRtcpHeader(205, 5);
127 big_endian_writer_.WriteU32(sender_ssrc); 127 big_endian_writer_.WriteU32(remote_ssrc);
128 big_endian_writer_.WriteU32(media_ssrc); 128 big_endian_writer_.WriteU32(local_ssrc);
129 } 129 }
130 130
131 void TestRtcpPacketBuilder::AddCast(uint32_t sender_ssrc, 131 void TestRtcpPacketBuilder::AddCast(uint32_t remote_ssrc,
132 uint32_t media_ssrc, 132 uint32_t local_ssrc,
133 base::TimeDelta target_delay) { 133 base::TimeDelta target_delay) {
134 AddRtcpHeader(206, 15); 134 AddRtcpHeader(206, 15);
135 big_endian_writer_.WriteU32(sender_ssrc); 135 big_endian_writer_.WriteU32(remote_ssrc);
136 big_endian_writer_.WriteU32(media_ssrc); 136 big_endian_writer_.WriteU32(local_ssrc);
137 big_endian_writer_.WriteU8('C'); 137 big_endian_writer_.WriteU8('C');
138 big_endian_writer_.WriteU8('A'); 138 big_endian_writer_.WriteU8('A');
139 big_endian_writer_.WriteU8('S'); 139 big_endian_writer_.WriteU8('S');
140 big_endian_writer_.WriteU8('T'); 140 big_endian_writer_.WriteU8('T');
141 big_endian_writer_.WriteU8(kAckFrameId); 141 big_endian_writer_.WriteU8(kAckFrameId);
142 big_endian_writer_.WriteU8(3); // Loss fields. 142 big_endian_writer_.WriteU8(3); // Loss fields.
143 big_endian_writer_.WriteU16(target_delay.InMilliseconds()); 143 big_endian_writer_.WriteU16(target_delay.InMilliseconds());
144 big_endian_writer_.WriteU8(kLostFrameId); 144 big_endian_writer_.WriteU8(kLostFrameId);
145 big_endian_writer_.WriteU16(kRtcpCastAllPacketsLost); 145 big_endian_writer_.WriteU16(kRtcpCastAllPacketsLost);
146 big_endian_writer_.WriteU8(0); // Lost packet id mask. 146 big_endian_writer_.WriteU8(0); // Lost packet id mask.
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 big_endian_writer_.WriteU8('C'); 187 big_endian_writer_.WriteU8('C');
188 big_endian_writer_.WriteU8('A'); 188 big_endian_writer_.WriteU8('A');
189 big_endian_writer_.WriteU8('S'); 189 big_endian_writer_.WriteU8('S');
190 big_endian_writer_.WriteU8('T'); 190 big_endian_writer_.WriteU8('T');
191 big_endian_writer_.WriteU8(kFeedbackSeq); 191 big_endian_writer_.WriteU8(kFeedbackSeq);
192 big_endian_writer_.WriteU8(0); 192 big_endian_writer_.WriteU8(0);
193 big_endian_writer_.WriteU8(0); 193 big_endian_writer_.WriteU8(0);
194 big_endian_writer_.WriteU8(0); 194 big_endian_writer_.WriteU8(0);
195 } 195 }
196 196
197 void TestRtcpPacketBuilder::AddReceiverLog(uint32_t sender_ssrc) { 197 void TestRtcpPacketBuilder::AddPli(uint32_t remote_ssrc, uint32_t local_ssrc) {
198 AddRtcpHeader(206, 1);
199 big_endian_writer_.WriteU32(remote_ssrc);
200 big_endian_writer_.WriteU32(local_ssrc);
201 }
202
203 void TestRtcpPacketBuilder::AddReceiverLog(uint32_t remote_ssrc) {
198 AddRtcpHeader(204, 2); 204 AddRtcpHeader(204, 2);
199 big_endian_writer_.WriteU32(sender_ssrc); 205 big_endian_writer_.WriteU32(remote_ssrc);
200 big_endian_writer_.WriteU8('C'); 206 big_endian_writer_.WriteU8('C');
201 big_endian_writer_.WriteU8('A'); 207 big_endian_writer_.WriteU8('A');
202 big_endian_writer_.WriteU8('S'); 208 big_endian_writer_.WriteU8('S');
203 big_endian_writer_.WriteU8('T'); 209 big_endian_writer_.WriteU8('T');
204 } 210 }
205 211
206 void TestRtcpPacketBuilder::AddReceiverFrameLog(uint32_t rtp_timestamp, 212 void TestRtcpPacketBuilder::AddReceiverFrameLog(uint32_t rtp_timestamp,
207 int num_events, 213 int num_events,
208 uint32_t event_timesamp_base) { 214 uint32_t event_timesamp_base) {
209 big_endian_writer_.WriteU32(rtp_timestamp); 215 big_endian_writer_.WriteU32(rtp_timestamp);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 big_endian_writer_.WriteU8(0x80 | (format_or_count & 0x1F)); 267 big_endian_writer_.WriteU8(0x80 | (format_or_count & 0x1F));
262 big_endian_writer_.WriteU8(payload); 268 big_endian_writer_.WriteU8(payload);
263 ptr_of_length_ = big_endian_writer_.ptr(); 269 ptr_of_length_ = big_endian_writer_.ptr();
264 270
265 // Initialize length to "clearly illegal". 271 // Initialize length to "clearly illegal".
266 big_endian_writer_.WriteU16(0xDEAD); 272 big_endian_writer_.WriteU16(0xDEAD);
267 } 273 }
268 274
269 } // namespace cast 275 } // namespace cast
270 } // namespace media 276 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/net/rtcp/test_rtcp_packet_builder.h ('k') | media/cast/net/rtp/cast_message_builder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698