In PacketBuffer do not attempt to clear before 1st packet
ClearTo logic relies on clear to sequence number follows first_seq_num_
Bug: chromium:370689424
Change-Id: I12874d5ce7adfdcf9c0691acacdd2b8ae41ce307
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/371320
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43558}
diff --git a/modules/video_coding/packet_buffer.cc b/modules/video_coding/packet_buffer.cc
index 9d7b6e5..df53e81 100644
--- a/modules/video_coding/packet_buffer.cc
+++ b/modules/video_coding/packet_buffer.cc
@@ -129,8 +129,7 @@
void PacketBuffer::ClearTo(uint16_t seq_num) {
// We have already cleared past this sequence number, no need to do anything.
- if (is_cleared_to_first_seq_num_ &&
- AheadOf<uint16_t>(first_seq_num_, seq_num)) {
+ if (AheadOf<uint16_t>(first_seq_num_, seq_num)) {
return;
}
diff --git a/modules/video_coding/packet_buffer_unittest.cc b/modules/video_coding/packet_buffer_unittest.cc
index 925d8f2..6c05d09 100644
--- a/modules/video_coding/packet_buffer_unittest.cc
+++ b/modules/video_coding/packet_buffer_unittest.cc
@@ -839,6 +839,13 @@
SizeIs(2));
}
+TEST_F(PacketBufferH264FrameGap, DoesntCrashWhenTryToClearBefore1stPacket) {
+ // Test scenario copied from the https://issues.chromium.org/370689424
+ InsertH264(41087, kKeyFrame, kNotFirst, kNotLast, 123, 0, 0, false);
+ packet_buffer_.ClearTo(30896);
+ InsertH264(32896, kKeyFrame, kFirst, kLast, 123, 0, 0, false);
+}
+
} // namespace
} // namespace video_coding
} // namespace webrtc