PacketBuffer: remove lock recursions.

This change removes lock recursions and adds thread annotations.

Bug: webrtc:11567
Change-Id: Ibc429571926693f4b3de78f97a5dc5501d93a4a3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176240
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31369}
This commit is contained in:
Markus Handell
2020-05-27 17:08:41 +02:00
committed by Commit Bot
parent bdb5830d69
commit 3eac111115
2 changed files with 28 additions and 18 deletions

View File

@ -112,7 +112,7 @@ PacketBuffer::InsertResult PacketBuffer::InsertPacket(
// Clear the buffer, delete payload, and return false to signal that a
// new keyframe is needed.
RTC_LOG(LS_WARNING) << "Clear PacketBuffer and request key frame.";
Clear();
ClearInternal();
result.buffer_cleared = true;
return result;
}
@ -174,16 +174,7 @@ void PacketBuffer::ClearTo(uint16_t seq_num) {
void PacketBuffer::Clear() {
rtc::CritScope lock(&crit_);
for (auto& entry : buffer_) {
entry = nullptr;
}
first_packet_received_ = false;
is_cleared_to_first_seq_num_ = false;
last_received_packet_ms_.reset();
last_received_keyframe_packet_ms_.reset();
newest_inserted_seq_num_.reset();
missing_packets_.clear();
ClearInternal();
}
PacketBuffer::InsertResult PacketBuffer::InsertPadding(uint16_t seq_num) {
@ -204,6 +195,19 @@ absl::optional<int64_t> PacketBuffer::LastReceivedKeyframePacketMs() const {
return last_received_keyframe_packet_ms_;
}
void PacketBuffer::ClearInternal() {
for (auto& entry : buffer_) {
entry = nullptr;
}
first_packet_received_ = false;
is_cleared_to_first_seq_num_ = false;
last_received_packet_ms_.reset();
last_received_keyframe_packet_ms_.reset();
newest_inserted_seq_num_.reset();
missing_packets_.clear();
}
bool PacketBuffer::ExpandBufferSize() {
if (buffer_.size() == max_size_) {
RTC_LOG(LS_WARNING) << "PacketBuffer is already at max size (" << max_size_