Index: webrtc/modules/video_coding/video_packet_buffer_unittest.cc |
diff --git a/webrtc/modules/video_coding/video_packet_buffer_unittest.cc b/webrtc/modules/video_coding/video_packet_buffer_unittest.cc |
index a937af61ad8b0564c3ae833535255e19575156f1..1e2ef3ec2aca42965bd53b4f335c091b62f396ca 100644 |
--- a/webrtc/modules/video_coding/video_packet_buffer_unittest.cc |
+++ b/webrtc/modules/video_coding/video_packet_buffer_unittest.cc |
@@ -64,7 +64,7 @@ class TestPacketBuffer : public ::testing::Test, |
packet.sizeBytes = data_size; |
packet.dataPtr = data; |
- return packet_buffer_->InsertPacket(packet); |
+ return packet_buffer_->InsertPacket(&packet); |
} |
void CheckFrame(uint16_t first_seq_num) { |
@@ -142,21 +142,21 @@ TEST_F(TestPacketBuffer, NackCount) { |
packet.markerBit = false; |
packet.timesNacked = 0; |
- packet_buffer_->InsertPacket(packet); |
+ packet_buffer_->InsertPacket(&packet); |
packet.seqNum++; |
packet.isFirstPacket = false; |
packet.timesNacked = 1; |
- packet_buffer_->InsertPacket(packet); |
+ packet_buffer_->InsertPacket(&packet); |
packet.seqNum++; |
packet.timesNacked = 3; |
- packet_buffer_->InsertPacket(packet); |
+ packet_buffer_->InsertPacket(&packet); |
packet.seqNum++; |
packet.markerBit = true; |
packet.timesNacked = 1; |
- packet_buffer_->InsertPacket(packet); |
+ packet_buffer_->InsertPacket(&packet); |
ASSERT_EQ(1UL, frames_from_callback_.size()); |
RtpFrameObject* frame = frames_from_callback_.begin()->second.get(); |
@@ -365,7 +365,7 @@ TEST_F(TestPacketBuffer, GetBitstreamH264BufferPadding) { |
packet.sizeBytes = sizeof(data_data); |
packet.isFirstPacket = true; |
packet.markerBit = true; |
- packet_buffer_->InsertPacket(packet); |
+ packet_buffer_->InsertPacket(&packet); |
ASSERT_EQ(1UL, frames_from_callback_.size()); |
EXPECT_EQ(frames_from_callback_[seq_num]->EncodedImage()._length, |
@@ -438,5 +438,27 @@ TEST_F(TestPacketBuffer, FramesAfterClear) { |
CheckFrame(9057); |
} |
+TEST_F(TestPacketBuffer, DontLeakPayloadData) { |
+ // NOTE! Any eventual leak is suppose to be detected by valgrind |
+ // or any other similar tool. |
+ uint8_t* data1 = new uint8_t[5]; |
+ uint8_t* data2 = new uint8_t[5]; |
+ uint8_t* data3 = new uint8_t[5]; |
+ uint8_t* data4 = new uint8_t[5]; |
+ |
+ // Expected to free data1 upon PacketBuffer destruction. |
+ EXPECT_TRUE(Insert(2, kKeyFrame, kFirst, kNotLast, 5, data1)); |
+ |
+ // Expect to free data2 upon insertion. |
+ EXPECT_TRUE(Insert(2, kKeyFrame, kFirst, kNotLast, 5, data2)); |
+ |
+ // Expect to free data3 upon insertion (old packet). |
+ packet_buffer_->ClearTo(1); |
+ EXPECT_FALSE(Insert(1, kKeyFrame, kFirst, kNotLast, 5, data3)); |
+ |
+ // Expect to free data4 upon insertion (packet buffer is full). |
+ EXPECT_FALSE(Insert(2 + kMaxSize, kKeyFrame, kFirst, kNotLast, 5, data4)); |
+} |
+ |
} // namespace video_coding |
} // namespace webrtc |