webrtc/modules/pacing
Erik Språng 7d0cde5117 Minimizes risk of probes being late when using TaskQueuePacedSender.
The time precision of delayed tasks is one millisecond, so the
TaskQueuePacedSender makes sure that is the minimum sleep time, and
then allows sending prior data as if it was on time.

Furthermore, if there already exists a pending task within 1ms of a
new desired process time - we don't schedule a new one with the same
motivation as above.

These two facts clashes somewhat with how BitrateProber works, and
especially if they coincide it can result in scheduled ProcessPackets()
that is 2ms late. The default timeout set in BitrateProber is 3ms, so
there is a higher risk of probes timing out.

This CL changes the TaskQueuePacedSender to allow scheduling a
ProcesPackets() call as soon as possible if we are probing - even if
that means executing up to 1ms earlier than expected (the BitrateProber
will compensate for that). The PacingController is updated in order to
allow early execution in this one case.

Bug: webrtc:10809
Change-Id: Ia5097ddc39aa80c05ebfe56369310c94ef0e0baf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178901
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31778}
2020-07-22 00:58:49 +00:00
..
bitrate_prober.cc Allows bitrate prober to discard delayed probes, unit type refactorings 2020-07-17 10:57:44 +00:00
bitrate_prober.h Allows bitrate prober to discard delayed probes, unit type refactorings 2020-07-17 10:57:44 +00:00
bitrate_prober_unittest.cc Allows bitrate prober to discard delayed probes, unit type refactorings 2020-07-17 10:57:44 +00:00
BUILD.gn Minimizes risk of probes being late when using TaskQueuePacedSender. 2020-07-22 00:58:49 +00:00
DEPS Replace field trials with WebRtcKeyValueConfig in PacedSender 2019-02-22 13:08:18 +00:00
interval_budget.cc Fix potential signed overflow in IntervalBudget::set_target_rate_kbps 2019-06-18 15:42:54 +00:00
interval_budget.h Fix potential signed overflow in IntervalBudget::set_target_rate_kbps 2019-06-18 15:42:54 +00:00
interval_budget_unittest.cc Make interval budget use ratio instead of percent 2019-06-07 08:53:57 +00:00
OWNERS Remove wildcard ownership for build files. 2020-02-19 14:05:46 +00:00
paced_sender.cc Reland "Lets PacingController call PacketRouter directly." 2020-07-01 09:51:00 +00:00
paced_sender.h Rename CriticalSection to RecursiveCriticalSection. 2020-07-17 09:19:50 +00:00
paced_sender_unittest.cc Reland "Lets PacingController call PacketRouter directly." 2020-07-01 09:51:00 +00:00
pacing_controller.cc Minimizes risk of probes being late when using TaskQueuePacedSender. 2020-07-22 00:58:49 +00:00
pacing_controller.h Allows bitrate prober to discard delayed probes, unit type refactorings 2020-07-17 10:57:44 +00:00
pacing_controller_unittest.cc Allows bitrate prober to discard delayed probes, unit type refactorings 2020-07-17 10:57:44 +00:00
packet_router.cc Reland "Reland "Allows FEC generation after pacer step."" 2020-07-03 07:20:06 +00:00
packet_router.h Remove unused critical section includes. 2020-07-16 13:52:28 +00:00
packet_router_unittest.cc Reland "Lets PacingController call PacketRouter directly." 2020-07-01 09:51:00 +00:00
round_robin_packet_queue.cc Fixes issue with non-paced audio send time in dynamic pacer. 2020-04-06 10:41:33 +00:00
round_robin_packet_queue.h Fixes issue with non-paced audio send time in dynamic pacer. 2020-04-06 10:41:33 +00:00
rtp_packet_pacer.h Reland "Adds trial to use correct overhead calculation in pacer." 2020-01-29 18:45:16 +00:00
task_queue_paced_sender.cc Minimizes risk of probes being late when using TaskQueuePacedSender. 2020-07-22 00:58:49 +00:00
task_queue_paced_sender.h Remove unused critical section includes. 2020-07-16 13:52:28 +00:00
task_queue_paced_sender_unittest.cc Minimizes risk of probes being late when using TaskQueuePacedSender. 2020-07-22 00:58:49 +00:00