webrtc/test/fuzzers
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
..
configs/replay_packet_fuzzer Negotiate use of RTCP loss notification feedback (LNTF) 2019-05-24 12:44:14 +00:00
corpora Remove DCHECK when transport feedback on request can't be produced 2023-12-11 11:15:47 +00:00
utils Update remaining test utilities to create Call with Environment 2023-12-04 16:15:35 +00:00
aec3_config_json_fuzzer.cc Make AEC3 json parsing code testonly 2023-10-26 12:03:02 +00:00
aec3_fuzzer.cc Move webrtc::AudioProcessing include to api/ folder 2024-04-20 07:02:50 +00:00
agc_fuzzer.cc Move webrtc::AudioProcessing include to api/ folder 2024-04-20 07:02:50 +00:00
audio_decoder_fuzzer.cc Use backticks not vertical bars to denote variables in comments for /test 2021-07-27 12:50:31 +00:00
audio_decoder_fuzzer.h Delete AudioDecoder method IncomingPacket 2019-09-24 08:30:24 +00:00
audio_decoder_g722_fuzzer.cc Add fuzzer test for G722 and fix a fuzzer problem 2022-02-21 10:16:47 +00:00
audio_decoder_ilbc_fuzzer.cc Update fuzzer max input length handling 2018-10-25 12:19:18 +00:00
audio_decoder_multistream_opus_fuzzer.cc Fuzzer fix for multistream opus. 2019-04-09 11:53:13 +00:00
audio_decoder_opus_fuzzer.cc
audio_decoder_opus_redundant_fuzzer.cc
audio_decoder_pcm16b_fuzzer.cc Adding fuzzer for PCM16b decoder and fixing a fuzzer problem 2022-02-15 15:59:01 +00:00
audio_decoder_pcm_fuzzer.cc Adding fuzzer for G711/PCM u/A decoders and fixing a fuzzer problem 2022-02-21 13:35:24 +00:00
audio_encoder_fuzzer.cc Use backticks not vertical bars to denote variables in comments for /test 2021-07-27 12:50:31 +00:00
audio_encoder_fuzzer.h Opus Encoder fuzzer: separate target for FuzzAudioEncoder 2020-02-27 16:13:15 +00:00
audio_encoder_opus_fuzzer.cc Opus Encoder fuzzer: separate target for FuzzAudioEncoder 2020-02-27 16:13:15 +00:00
audio_processing_configs_fuzzer.cc Move webrtc::AudioProcessing include to api/ folder 2024-04-20 07:02:50 +00:00
audio_processing_fuzzer_helper.cc Move webrtc::AudioProcessing include to api/ folder 2024-04-20 07:02:50 +00:00
audio_processing_fuzzer_helper.h Move webrtc::AudioProcessing include to api/ folder 2024-04-20 07:02:50 +00:00
audio_processing_sample_rate_fuzzer.cc Move webrtc::AudioProcessing include to api/ folder 2024-04-20 07:02:50 +00:00
BUILD.gn Move webrtc::AudioProcessing include to api/ folder 2024-04-20 07:02:50 +00:00
comfort_noise_decoder_fuzzer.cc Update fuzzer max input length handling 2018-10-25 12:19:18 +00:00
dcsctp_packet_fuzzer.cc dcsctp: Add SCTP packet fuzzer 2021-04-09 12:23:42 +00:00
dcsctp_socket_fuzzer.cc dcsctp: Add socket fuzzer 2021-05-14 06:41:10 +00:00
DEPS dcsctp: Add SCTP packet fuzzer 2021-04-09 12:23:42 +00:00
field_trial_fuzzer.cc Format almost everything. 2019-07-08 13:45:15 +00:00
flexfec_header_reader_fuzzer.cc Use rtc::CopyOnWriteBuffer::MutableData instead of data in fuzzers 2021-01-12 12:36:43 +00:00
flexfec_receiver_fuzzer.cc Change RecoveredPacket::OnRecoveredPacket to produce webrtc::RtpPacketReceived 2022-12-22 14:04:21 +00:00
flexfec_sender_fuzzer.cc Reland "Reland "Refactors UlpFec and FlexFec to use a common interface."" 2020-03-09 13:41:35 +00:00
forward_error_correction_fuzzer.cc Deprecate char* functions on ByteBufferReader 2023-11-22 11:46:25 +00:00
frame_buffer_fuzzer.cc Rename EncodedImage property Timetamp to RtpTimestamp 2023-09-24 20:06:48 +00:00
fuzz_data_helper.cc
fuzz_data_helper.h Fix -Wextra-semi warnings in webrtc fuzzers. 2019-02-25 20:45:46 +00:00
h264_bitstream_parser_fuzzer.cc Delete deprecated H264BitstreamParser methods 2021-01-11 09:31:54 +00:00
h264_depacketizer_fuzzer.cc Change H264 depacketizer to implement VideoRtpDepacketizer interface 2020-01-15 12:26:55 +00:00
h265_bitstream_parser_fuzzer.cc Added HEVC parser for WebRTC 2023-08-18 17:48:11 +00:00
h265_depacketizer_fuzzer.cc Add RTP depacketizer for H265 2024-01-29 12:00:19 +00:00
neteq_rtp_fuzzer.cc Revert "Unifying the handling of the events in NetEqInput." 2023-03-29 08:01:46 +00:00
neteq_signal_fuzzer.cc Reland "Remove post-decode VAD" 2024-02-07 16:33:51 +00:00
OWNERS Add danilchap@webrtc.org as owner of test/fuzzers/ 2021-09-14 08:48:03 +00:00
pseudotcp_parser_fuzzer.cc (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
receive_side_congestion_controller_fuzzer.cc Rewrite fuzzer for the ReceiveSideConstestionController 2023-03-20 13:16:49 +00:00
residual_echo_detector_fuzzer.cc Move rtc::make_ref_counted to api/ 2022-06-15 09:47:38 +00:00
rtcp_receiver_fuzzer.cc In RtcpReceiver remove redundand way to represent RTCP report blocks 2023-05-28 15:24:46 +00:00
rtp_depacketizer_av1_assemble_frame_fuzzer.cc Format the rest 2023-05-03 12:56:39 +00:00
rtp_dependency_descriptor_fuzzer.cc Use backticks not vertical bars to denote variables in comments for /test 2021-07-27 12:50:31 +00:00
rtp_format_h264_fuzzer.cc test: fix fuzzers line-endings 2024-01-30 08:40:40 +00:00
rtp_format_vp8_fuzzer.cc test: fix fuzzers line-endings 2024-01-30 08:40:40 +00:00
rtp_format_vp9_fuzzer.cc test: fix fuzzers line-endings 2024-01-30 08:40:40 +00:00
rtp_frame_reference_finder_fuzzer.cc libstdc++: replace deprecated std::is_pod<T> 2023-11-09 15:16:00 +00:00
rtp_packet_fuzzer.cc Expose AudioLevel as an absl::optional struct in api/rtp_headers.h 2024-03-22 10:07:47 +00:00
rtp_packetizer_av1_fuzzer.cc av1: make packetization generate more evenly sized packets 2024-04-30 15:46:06 +00:00
rtp_video_frame_assembler_fuzzer.cc Replace packet buffer fuzzer with rtp video frame assembler fuzzer 2023-01-05 13:04:38 +00:00
rtp_video_layers_allocation_fuzzer.cc Limit input size for the rtp video layers allocation fuzzer 2022-08-26 09:00:18 +00:00
sctp_utils_fuzzer.cc Format almost everything. 2019-07-08 13:45:15 +00:00
sdp_integration_fuzzer.cc Delete implicit conversion from rtc::scoped_refptr<T> to T* 2022-05-09 09:06:44 +00:00
sdp_parser_fuzzer.cc (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
ssl_certificate_fuzzer.cc Fix ssl_certificate_fuzzer 2021-07-09 13:50:29 +00:00
string_to_number_fuzzer.cc Format almost everything. 2019-07-08 13:45:15 +00:00
stun_parser_fuzzer.cc Deprecate char* functions on ByteBufferReader 2023-11-22 11:46:25 +00:00
stun_validator_fuzzer.cc Modified STUN verification functions 2021-03-02 10:34:17 +00:00
turn_unwrap_fuzzer.cc (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
ulpfec_generator_fuzzer.cc Use rtc::CopyOnWriteBuffer::MutableData instead of data in fuzzers 2021-01-12 12:36:43 +00:00
ulpfec_header_reader_fuzzer.cc Use rtc::CopyOnWriteBuffer::MutableData instead of data in fuzzers 2021-01-12 12:36:43 +00:00
ulpfec_receiver_fuzzer.cc Change RecoveredPacket::OnRecoveredPacket to produce webrtc::RtpPacketReceived 2022-12-22 14:04:21 +00:00
vp8_depacketizer_fuzzer.cc Delete RtpDepacketizerVp8 in favor of VideoRtpDepacketizerVp8 2020-01-09 12:10:19 +00:00
vp8_qp_parser_fuzzer.cc
vp8_replay_fuzzer.cc Introduce "well-known" SdpVideoFormat codecs 2024-02-28 06:57:10 +00:00
vp9_depacketizer_fuzzer.cc Delete RtpDepacketizerVp9 in favor of VideoRtpDepacketizerVp9 2020-01-09 13:07:44 +00:00
vp9_encoder_references_fuzzer.cc Require webrtc::Environment to create VP9 encoder 2024-04-05 13:49:26 +00:00
vp9_qp_parser_fuzzer.cc Reland "Rename vp9::FrameInfo to vp9::UncompressedHeader and add more fields." 2021-08-17 19:42:00 +00:00
vp9_replay_fuzzer.cc Introduce "well-known" SdpVideoFormat codecs 2024-02-28 06:57:10 +00:00
webrtc_fuzzer_main.cc Reland "Remove TaskQueue constructor that uses GlobalTaskQueueFactory" 2019-04-10 10:27:07 +00:00