Reland "Reland "Removes lock release in PacedSender callback.""

This is a reland of b46df3da44c42f6e5055c69a8247a344887108ea

Test case for issue that caused revert added:
https://webrtc-review.googlesource.com/c/src/+/178203

Fix for issue that caused revert:
https://webrtc-review.googlesource.com/c/src/+/178207


Original change's description:
> Reland "Removes lock release in PacedSender callback."
>
> This is a reland of 6b9c60b06d04bc519195fca1f621b10accfeb46b
>
> Original change's description:
> > Removes lock release in PacedSender callback.
> >
> > The PacedSender currently has logic to temporarily release its internal
> > lock while sending or asking for padding.
> > This creates some tricky situations in the pacing controller where we
> > need to consider if some thread can enter while we the process thread is
> > actually processing, just temporarily busy sending.
> >
> > Since the pacing call stack is no longer cyclic, we can actually remove
> > this lock-release now.
> >
> > Bug: webrtc:10809
> > Change-Id: Ic59c605252bed1f96a03406c908a30cd1012f995
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173592
> > Reviewed-by: Sebastian Jansson <srte@webrtc.org>
> > Commit-Queue: Erik Språng <sprang@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#31206}
>
> Bug: webrtc:10809
> Change-Id: Id39fc49b0a038e7ae3a0d9818fb0806c33ae0ae0
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175656
> Reviewed-by: Sebastian Jansson <srte@webrtc.org>
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31332}

Bug: webrtc:10809
Change-Id: I1dba507220316008c0f3b278df4b732011f257eb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178384
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31588}
This commit is contained in:
Erik Språng
2020-05-10 14:29:03 +02:00
committed by Commit Bot
parent 739cfb2f58
commit 4b5792cc4a
2 changed files with 1 additions and 8 deletions

View File

@ -207,17 +207,11 @@ void PacedSender::SetQueueTimeLimit(TimeDelta limit) {
void PacedSender::SendRtpPacket(std::unique_ptr<RtpPacketToSend> packet, void PacedSender::SendRtpPacket(std::unique_ptr<RtpPacketToSend> packet,
const PacedPacketInfo& cluster_info) { const PacedPacketInfo& cluster_info) {
critsect_.Leave();
packet_router_->SendPacket(std::move(packet), cluster_info); packet_router_->SendPacket(std::move(packet), cluster_info);
critsect_.Enter();
} }
std::vector<std::unique_ptr<RtpPacketToSend>> PacedSender::GeneratePadding( std::vector<std::unique_ptr<RtpPacketToSend>> PacedSender::GeneratePadding(
DataSize size) { DataSize size) {
std::vector<std::unique_ptr<RtpPacketToSend>> padding_packets; return packet_router_->GeneratePadding(size.bytes());
critsect_.Leave();
padding_packets = packet_router_->GeneratePadding(size.bytes());
critsect_.Enter();
return padding_packets;
} }
} // namespace webrtc } // namespace webrtc

View File

@ -55,7 +55,6 @@ DirectTransport::~DirectTransport() {
} }
void DirectTransport::SetReceiver(PacketReceiver* receiver) { void DirectTransport::SetReceiver(PacketReceiver* receiver) {
rtc::CritScope cs(&process_lock_);
fake_network_->SetReceiver(receiver); fake_network_->SetReceiver(receiver);
} }