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

Unified Diff: webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc

Issue 1367193002: Fix bug where rtcp::TransportFeedback may generate incorrect messages. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Addressed comments Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc
index 76b51df0ef3b63cf76ece586e0ee1acc4969f20f..ceb911d3089785c59d2bdea9bf00be77ac558f03 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc
@@ -454,5 +454,29 @@ TEST(RtcpPacketTest, TransportFeedback_Padding) {
EXPECT_EQ(kExpectedSizeWords * 4, packet->Length()); // Padding not included.
}
+TEST(RtcpPacketTest, TransportFeedback_CorrectlySplitsVectorChunks) {
+ const int kOneBitVectorCapacity = 14;
+ const int64_t kLargeTimeDelta =
+ TransportFeedback::kDeltaScaleFactor * (1 << 8);
+
+ // Test that a number of small deltas followed by a large delta results in a
+ // correct split into multiple chunks, as needed.
+
+ for (int deltas = 0; deltas <= kOneBitVectorCapacity + 1; ++deltas) {
+ TransportFeedback feedback;
+ feedback.WithBase(0, 0);
+ for (int i = 0; i < deltas; ++i)
+ feedback.WithReceivedPacket(i, i * 1000);
+ feedback.WithReceivedPacket(deltas, deltas * 1000 + kLargeTimeDelta);
+
+ rtc::scoped_ptr<rtcp::RawPacket> serialized_packet = feedback.Build();
+ EXPECT_TRUE(serialized_packet.get() != nullptr);
+ rtc::scoped_ptr<TransportFeedback> deserialized_packet =
+ TransportFeedback::ParseFrom(serialized_packet->Buffer(),
+ serialized_packet->Length());
+ EXPECT_TRUE(deserialized_packet.get() != nullptr);
+ }
+}
+
} // namespace
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698