webrtc/modules
Philipp Hancke acfd279a14 av1: make packetization generate more evenly sized packets
Implements a two-pass approach to packetization which creates
packets of an even size similar to RtpPacketizer::SplitAboutEqually.
This improves the bandwidth estimation.

The algorithm does a first pass with the existing packetizer, then
iterates through the resulting packet sizes and sums up the bytes left unused in each packet.
It then calculates a new maximum packet length as
  configured_max_packet_len - ((unused_bytes - packets + 1) / packets)
adjusts for the overhead and re-runs the packetization algorithm.

For example, a list of OBUs with sizes
  {1206, 1476, 1431}
currently gets packetized greedily as payload sizes
  {1200, 1200, 1200, 523}
With this change, it gets packetized as
  {1032, 1032, 1032, 1028}

This change is guarded by the field trial
  WebRTC-Video-AV1EvenPayloadSizes
which is acting as a rollout flag.

BUG=webrtc:15927

Co-authored-by: Shyam Sadhwani <shyamsadhwani@meta.com>
Change-Id: I4f0b3c27de6f06104908dd769c4dd1f34115712c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/348100
Commit-Queue: Philipp Hancke <phancke@meta.com>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42203}
2024-04-30 15:46:06 +00:00
..
async_audio_processing Cleanup rtc::TaskQueue in AsyncAudioProcessing 2024-02-26 12:22:56 +00:00
audio_coding Start using ArrayView in AudioFrame, update PushResampler 2024-04-30 15:33:08 +00:00
audio_device Move webrtc::AudioDeviceModule include to api/ folder 2024-04-22 08:56:31 +00:00
audio_mixer Start using ArrayView in AudioFrame, update PushResampler 2024-04-30 15:33:08 +00:00
audio_processing Start using ArrayView in AudioFrame, update PushResampler 2024-04-30 15:33:08 +00:00
congestion_controller Delete expired field trial WebRTC-Bwe-LinkCapacity 2024-04-17 12:43:10 +00:00
desktop_capture Fix 'Screen flickering on ScreenCapturerWinDirectx' 2024-04-25 21:18:27 +00:00
include [Unwrap] Delete webrtc::Unwrapper 2023-01-12 14:44:21 +00:00
pacing PacketRouter directly notify RtpTransportControllerSender when sending 2024-03-28 09:27:43 +00:00
portal Video capture PipeWire: add support for DMABuf buffer type 2024-02-27 18:31:26 +00:00
remote_bitrate_estimator Remove expired WebRTC-Bwe-SubtractAdditionalBackoffTerm 2024-04-10 10:11:04 +00:00
rtp_rtcp av1: make packetization generate more evenly sized packets 2024-04-30 15:46:06 +00:00
third_party [ssci] Added Shipped field to READMEs 2023-07-12 07:31:06 +00:00
utility Rland "Revert "Reland "Reland "Delete old Android ADM."""" 2023-06-30 13:10:12 +00:00
video_capture Deprecate VideoFrame::timestamp() and set_timestamp 2024-03-13 11:08:37 +00:00
video_coding Query EncoderInfoSettings through propagated field trials 2024-04-30 11:16:31 +00:00
BUILD.gn [WebRTC-SendPacketsOnWorkerThread] Delete MaybeWorkerThread 2023-04-18 07:07:02 +00:00
module_common_types_unittest.cc [Unwrap] Delete webrtc::Unwrapper 2023-01-12 14:44:21 +00:00