PacketBuffer now can save how many times a packet has been nacked.
Also save size/max nack count in the FrameObject/RtpFrameObject.

BUG=webrtc:5514
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1988653002 .

Cr-Commit-Position: refs/heads/master@{#12863}
diff --git a/webrtc/modules/video_coding/packet_buffer_unittest.cc b/webrtc/modules/video_coding/packet_buffer_unittest.cc
index b50074d..753b5b4 100644
--- a/webrtc/modules/video_coding/packet_buffer_unittest.cc
+++ b/webrtc/modules/video_coding/packet_buffer_unittest.cc
@@ -265,12 +265,62 @@
   EXPECT_TRUE(packet_buffer_->InsertPacket(packet));
 }
 
+TEST_F(TestPacketBuffer, NackCount) {
+  uint16_t seq_num = Rand();
+
+  VCMPacket packet;
+  packet.codec = kVideoCodecGeneric;
+  packet.seqNum = seq_num;
+  packet.frameType = kVideoFrameKey;
+  packet.isFirstPacket = true;
+  packet.markerBit = false;
+  packet.sizeBytes = 0;
+  packet.dataPtr = nullptr;
+  packet.timesNacked = 0;
+
+  packet_buffer_->InsertPacket(packet);
+
+  packet.seqNum++;
+  packet.isFirstPacket = false;
+  packet.timesNacked = 1;
+  packet_buffer_->InsertPacket(packet);
+
+  packet.seqNum++;
+  packet.timesNacked = 3;
+  packet_buffer_->InsertPacket(packet);
+
+  packet.seqNum++;
+  packet.markerBit = true;
+  packet.timesNacked = 1;
+  packet_buffer_->InsertPacket(packet);
+
+
+  ASSERT_EQ(1UL, frames_from_callback_.size());
+  FrameObject* frame = frames_from_callback_.begin()->second.get();
+  RtpFrameObject* rtp_frame = static_cast<RtpFrameObject*>(frame);
+  EXPECT_EQ(3, rtp_frame->times_nacked());
+}
+
+TEST_F(TestPacketBuffer, FrameSize) {
+  uint16_t seq_num = Rand();
+  uint8_t data[] = {1, 2, 3, 4, 5};
+
+  //            seq_num    , kf, frst, lst, size, data
+  InsertGeneric(seq_num    , kT, kT  , kF , 5   , data);
+  InsertGeneric(seq_num + 1, kT, kF  , kF , 5   , data);
+  InsertGeneric(seq_num + 2, kT, kF  , kF , 5   , data);
+  InsertGeneric(seq_num + 3, kT, kF  , kT , 5   , data);
+
+  ASSERT_EQ(1UL, frames_from_callback_.size());
+  EXPECT_EQ(20UL, frames_from_callback_.begin()->second->size);
+}
+
 TEST_F(TestPacketBuffer, ExpandBuffer) {
   uint16_t seq_num = Rand();
 
   for (int i = 0; i < kStartSize + 1; ++i) {
     //            seq_num    , kf, frst, lst
-    InsertGeneric(seq_num + i, kT    , kT, kT);
+    InsertGeneric(seq_num + i, kT, kT  , kT);
   }
 }