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

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

Issue 2426543002: Append second nack list in same compound rtcp packet (Closed)
Patch Set: restored case with two compound packets with nacks one after another Created 4 years, 2 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
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
11 #include <memory> 11 #include <memory>
12 12
13 #include "webrtc/base/arraysize.h"
13 #include "webrtc/base/array_view.h" 14 #include "webrtc/base/array_view.h"
14 #include "webrtc/base/random.h" 15 #include "webrtc/base/random.h"
15 #include "webrtc/common_types.h" 16 #include "webrtc/common_types.h"
16 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" 17 #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
17 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h" 18 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h"
18 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h" 19 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h"
19 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h" 20 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h"
20 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h" 21 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h"
21 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h" 22 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h"
22 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h" 23 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h"
(...skipping 1177 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 1201
1201 // Stress no transport feedback is expected. 1202 // Stress no transport feedback is expected.
1202 EXPECT_CALL(transport_feedback_observer_, OnTransportFeedback(_)).Times(0); 1203 EXPECT_CALL(transport_feedback_observer_, OnTransportFeedback(_)).Times(0);
1203 // But remb should be processed and cause a callback 1204 // But remb should be processed and cause a callback
1204 EXPECT_CALL(bandwidth_observer_, OnReceivedEstimatedBitrate(kBitrateBps)); 1205 EXPECT_CALL(bandwidth_observer_, OnReceivedEstimatedBitrate(kBitrateBps));
1205 InjectRtcpPacket(built_packet); 1206 InjectRtcpPacket(built_packet);
1206 } 1207 }
1207 1208
1208 TEST_F(RtcpReceiverTest, Nack) { 1209 TEST_F(RtcpReceiverTest, Nack) {
1209 const uint16_t kNackList1[] = {1, 2, 3, 5}; 1210 const uint16_t kNackList1[] = {1, 2, 3, 5};
1210 const size_t kNackListLength1 = std::end(kNackList1) - std::begin(kNackList1); 1211 const uint16_t kNackList23[] = {5, 7, 30, 40, 41, 58, 59, 61, 63};
1211 const uint16_t kNackList2[] = {5, 7, 30, 40}; 1212 const size_t kNackListLength2 = 4;
1212 const size_t kNackListLength2 = std::end(kNackList2) - std::begin(kNackList2); 1213 const size_t kNackListLength3 = arraysize(kNackList23) - kNackListLength2;
1213 std::set<uint16_t> nack_set; 1214 std::set<uint16_t> nack_set;
1214 nack_set.insert(std::begin(kNackList1), std::end(kNackList1)); 1215 nack_set.insert(std::begin(kNackList1), std::end(kNackList1));
1215 nack_set.insert(std::begin(kNackList2), std::end(kNackList2)); 1216 nack_set.insert(std::begin(kNackList23), std::end(kNackList23));
1216 1217
1217 rtcp::Nack nack; 1218 rtcp::Nack nack1;
1218 nack.SetSenderSsrc(kSenderSsrc); 1219 nack1.SetSenderSsrc(kSenderSsrc);
1219 nack.SetMediaSsrc(kReceiverMainSsrc); 1220 nack1.SetMediaSsrc(kReceiverMainSsrc);
1220 nack.SetPacketIds(kNackList1, kNackListLength1); 1221 nack1.SetPacketIds(kNackList1, arraysize(kNackList1));
1221 1222
1222 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedNack(ElementsAreArray(kNackList1))); 1223 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedNack(ElementsAreArray(kNackList1)));
1223 EXPECT_CALL( 1224 EXPECT_CALL(packet_type_counter_observer_,
1224 packet_type_counter_observer_, 1225 RtcpPacketTypesCounterUpdated(
1225 RtcpPacketTypesCounterUpdated( 1226 kReceiverMainSsrc,
1226 kReceiverMainSsrc, 1227 AllOf(Field(&RtcpPacketTypeCounter::nack_requests,
1227 AllOf(Field(&RtcpPacketTypeCounter::nack_requests, kNackListLength1), 1228 arraysize(kNackList1)),
1228 Field(&RtcpPacketTypeCounter::unique_nack_requests, 1229 Field(&RtcpPacketTypeCounter::unique_nack_requests,
1229 kNackListLength1)))); 1230 arraysize(kNackList1)))));
1230 InjectRtcpPacket(nack); 1231 InjectRtcpPacket(nack1);
1231 1232
1232 rtcp::Nack nack2; 1233 rtcp::Nack nack2;
1233 nack2.SetSenderSsrc(kSenderSsrc); 1234 nack2.SetSenderSsrc(kSenderSsrc);
1234 nack2.SetMediaSsrc(kReceiverMainSsrc); 1235 nack2.SetMediaSsrc(kReceiverMainSsrc);
1235 nack2.SetPacketIds(kNackList2, kNackListLength2); 1236 nack2.SetPacketIds(kNackList23, kNackListLength2);
1236 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedNack(ElementsAreArray(kNackList2))); 1237
1238 rtcp::Nack nack3;
1239 nack3.SetSenderSsrc(kSenderSsrc);
1240 nack3.SetMediaSsrc(kReceiverMainSsrc);
1241 nack3.SetPacketIds(kNackList23 + kNackListLength2, kNackListLength3);
1242
1243 rtcp::CompoundPacket two_nacks;
1244 two_nacks.Append(&nack2);
1245 two_nacks.Append(&nack3);
1246
1247 EXPECT_CALL(rtp_rtcp_impl_, OnReceivedNack(ElementsAreArray(kNackList23)));
1237 EXPECT_CALL(packet_type_counter_observer_, 1248 EXPECT_CALL(packet_type_counter_observer_,
1238 RtcpPacketTypesCounterUpdated( 1249 RtcpPacketTypesCounterUpdated(
1239 kReceiverMainSsrc, 1250 kReceiverMainSsrc,
1240 AllOf(Field(&RtcpPacketTypeCounter::nack_requests, 1251 AllOf(Field(&RtcpPacketTypeCounter::nack_requests,
1241 kNackListLength1 + kNackListLength2), 1252 arraysize(kNackList1) + arraysize(kNackList23)),
1242 Field(&RtcpPacketTypeCounter::unique_nack_requests, 1253 Field(&RtcpPacketTypeCounter::unique_nack_requests,
1243 nack_set.size())))); 1254 nack_set.size()))));
1244 InjectRtcpPacket(nack2); 1255 InjectRtcpPacket(two_nacks);
1245 } 1256 }
1246 1257
1247 TEST_F(RtcpReceiverTest, NackNotForUsIgnored) { 1258 TEST_F(RtcpReceiverTest, NackNotForUsIgnored) {
1248 const uint16_t kNackList1[] = {1, 2, 3, 5}; 1259 const uint16_t kNackList1[] = {1, 2, 3, 5};
1249 const size_t kNackListLength1 = std::end(kNackList1) - std::begin(kNackList1); 1260 const size_t kNackListLength1 = std::end(kNackList1) - std::begin(kNackList1);
1250 1261
1251 rtcp::Nack nack; 1262 rtcp::Nack nack;
1252 nack.SetSenderSsrc(kSenderSsrc); 1263 nack.SetSenderSsrc(kSenderSsrc);
1253 nack.SetMediaSsrc(kNotToUsSsrc); 1264 nack.SetMediaSsrc(kNotToUsSsrc);
1254 nack.SetPacketIds(kNackList1, kNackListLength1); 1265 nack.SetPacketIds(kNackList1, kNackListLength1);
1255 1266
1256 EXPECT_CALL(packet_type_counter_observer_, 1267 EXPECT_CALL(packet_type_counter_observer_,
1257 RtcpPacketTypesCounterUpdated( 1268 RtcpPacketTypesCounterUpdated(
1258 _, Field(&RtcpPacketTypeCounter::nack_requests, 0))); 1269 _, Field(&RtcpPacketTypeCounter::nack_requests, 0)));
1259 InjectRtcpPacket(nack); 1270 InjectRtcpPacket(nack);
1260 } 1271 }
1261 1272
1262 TEST_F(RtcpReceiverTest, ForceSenderReport) { 1273 TEST_F(RtcpReceiverTest, ForceSenderReport) {
1263 rtcp::RapidResyncRequest rr; 1274 rtcp::RapidResyncRequest rr;
1264 rr.SetSenderSsrc(kSenderSsrc); 1275 rr.SetSenderSsrc(kSenderSsrc);
1265 rr.SetMediaSsrc(kReceiverMainSsrc); 1276 rr.SetMediaSsrc(kReceiverMainSsrc);
1266 1277
1267 EXPECT_CALL(rtp_rtcp_impl_, OnRequestSendReport()); 1278 EXPECT_CALL(rtp_rtcp_impl_, OnRequestSendReport());
1268 InjectRtcpPacket(rr); 1279 InjectRtcpPacket(rr);
1269 } 1280 }
1270 1281
1271 } // namespace webrtc 1282 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698