This is to avoid time-outs in the fuzzer bots.
Notry: true
Bug: chromium:942886, webrtc:10415
Change-Id: If5e0bcda4e56bb4916bc4479e5b4c822c654c734
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129925
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27335}
The pointer-to-submodule interfaces are being removed.
This CL:
1) introduces AudioProcessing::Config::GainController1 with most config,
2) adds functions to APM for setting and getting analog gain,
3) creates a temporary GainControlConfigProxy to support the transition
to the new config.
4) Moves the lock references in GainControlForExperimentalAgc and
GainControlImpl into the GainControlConfigProxy, as it becomes the
sole AGC object with functionality exposed to the client.
Bug: webrtc:9947, webrtc:9878
Change-Id: Ic31e15e9bb26d6497a92b77874e0b6cab21ff2b2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126485
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27316}
It was used only in examples/peerconnection/server/peer_channel.cc,
for questionable utility.
Bug: webrtc:6663
Change-Id: I4047eb12f35615621dd0b34a694dead51c5fd20d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/128869
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27279}
This change integrates fuzzing support for RtpDumps in WebRTC. This allows
LibFuzzer to directly fuzz the RTP code path from packet arrival all the way
to actual decoding and rendering. It does this by replaying each RTP packet
in the RTPDump which can be mutated directly by the fuzzer.
For fuzzing support the RtpFileReader needs to support reading from a
buffer instead of an file. The test class requires FILE* for all its
parsing operations and is deeply coupled this way. I chose to solve this
problem at an OS level by using the tmpfile() option and copying the buffer
to the tmpfile(). fmemopen() is no available on most platforms so couldn't
be used as a generic solution. The additional copy isn't ideal but won't
be a bottleneck for the fuzzing.
In the future I plan for the fuzzers to read from a configuration file. But
given the current packaging strategy for fuzzers in WebRTC this isn't easy.
Bug: webrtc:9860
Change-Id: I2560120e82663f9e9fb5b9640e6a6d16f9c1a360
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126682
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27151}
This change reduces the risk of echo due to noise in the headroom
of the linear filter.
Changes:
- Use shorter delay headroom
- Delay headroom is specified in samples (not blocks)
- No hysteresis limit when delay is reduced
Bug: chromium:119942,webrtc:10341
Change-Id: I708e80e26d541dff8ca04b6da2d346a1d59cbfcb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126420
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27126}
This change simply calls through all code paths in the SSLCertificate interface
after passing in an untrusted PEM string. Corpus will follow in another CL.
Bug: webrtc:10395
Change-Id: I001642fa89a84ce01505780f5e76f01a0e46a785
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127640
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27118}
Adding an example of a request to send simulcast (from the PC).
Adding an example of a request to receive simulcast (from the SFU).
Bug: webrtc:10409
Change-Id: I13b689621e2f89f8e00b7ee8bc542157ccebb873
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127621
Reviewed-by: Benjamin Wright <benwright@webrtc.org>
Commit-Queue: Amit Hilbuch <amithi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27116}
rtp_header_parser currently has 0% fuzzing coverage. To improve this I have
added a basic fuzzer which fuzzes all of the available paths.
Bug: webrtc:10395
Change-Id: I30324b2bfa7629b0110527258b33b7e048e89fcf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127040
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27115}
This change adds a basic fuzzer to exercise parsing of SCTP messages.
Bug: webrtc:10395
Change-Id: I1fd7a8560add3463c1978ebcad30082ae31f2073
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127042
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27113}
This function is called on each incoming RTCP payload.
Bug: webrtc:10395
Change-Id: I164746fe45912cc503565e77046b5d884e0204e6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127122
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27110}
StringToNumber is directly used in parsing the SDP so it should be fuzzed.
Bug: webrtc:10395
Change-Id: I85b520fbefd34d3dba49950c5ff297b482c572b1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127123
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27089}
The generic video depacketizer was missed in the initial fuzzing pass.
Bug: webrtc:10395
Change-Id: I166f27fc5897a2eafe38dad8e074834fefcc330e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127041
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27088}
This simple fuzzer is intended to detect potential issues in the field trial
parsing code. Since these can be set by the browser it is better to have some
fuzzing coverage around this area.
Bug: webrtc:10395
Change-Id: I1b8b859d2107a0bc99cb7520cf0ef96f3d110547
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127121
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27087}
The fuzzer times out on too long inputs.
This CL limits tests to 400 000 bytes, ~ 12 seconds of 8 kHz float audio.
Bug: chromium:940209
Change-Id: I86b772f9d8989a8b129d933d25ece3631a6a365f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126780
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27059}
Ignore rtc_link_task_queue_impl flag,
instead use build_with_chromium for custom chromium implementation injection
This changes TaskQueue implementation used in webrtc fuzzers in chromium:
from own webrtc implementation to chromium's.
Bug: webrtc:10191
Change-Id: I63be28b680ae8ea8ee1dbf0c699263c392ce29d3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/125196
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26977}
This avoids timeouts on the server.
Bug: chromium:935089
Change-Id: I8b46664a7cf4d5f14a76b5d034a67453e730eb9e
Reviewed-on: https://webrtc-review.googlesource.com/c/124484
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26940}
Since there is no way to enable/disable these diagnostics at runtime,
this CL moves the suppression into the rtc_* templates in order to
remove the need to explicitly add the snippet of code needed to
suppress it (currently copy/pasted in 144 locations).
The diagnostic that causes the most problems is the one about "complex
class/struct explicit ctor/dtor" [1] because WebRTC doesn't find
it useful enough.
Other diagnostics are good (for example the one that warns about
using "virtual" instead of "override", but that will be covered by
this clang-tidy check [2]) while others are Chromium related so
they have never triggered.
[1] - https://cs.chromium.org/chromium/src/tools/clang/plugins/FindBadConstructsConsumer.cpp?l=147-167&rcl=b4bebe1aa15dba7ca5fcc6456a81a55665327c3a
[2] - https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-override.html
Bug: webrtc:163
Change-Id: Icbf27efa5b369100a31e6a32df1a0913729b3b34
Reviewed-on: https://webrtc-review.googlesource.com/c/125088
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26918}
The new name fits better.
Bug: None
Change-Id: I1f201ff07915ed6c18efeefb7380e2b286742bb9
Reviewed-on: https://webrtc-review.googlesource.com/c/123800
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26814}
This change disables the ERLE estimation of onsets and instead assumes
minimum ERLE. This reduces the risk of echo leaks during onsets. The
estimated ERLE was sometimes incorrect due to:
- Not enough data to train on.
- Platform noise suppression can change the echo-path.
Bug: chromium:119942,webrtc:10341
Change-Id: I1dd1c0f160489e76eb784f07e99af02f44f387ec
Reviewed-on: https://webrtc-review.googlesource.com/c/123782
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26794}
The values are available as part of the RTPVideoHeader member.
Bug: None
Change-Id: I832fffc449929badec3796d7096c9cdc0d43d344
Reviewed-on: https://webrtc-review.googlesource.com/c/123234
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26773}
The discardability flag denotes whether the frame may be dropped by
the decoder with no effect on the decodability of subsequent frames.
Bug: webrtc:10214
Change-Id: I3654951d8863b50effe9670b8d1d7eb051240039
Reviewed-on: https://webrtc-review.googlesource.com/c/122241
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26763}
The lock is unnecessary and potentially unsafe:
1) All gain_control accesses in AudioProcessingImpl happen - and are intended to happen - while holding the crit_capture_ lock, and all external API calls take the same lock once inside GainControlImpl.
2) If ProcessCaptureStreamLocked (locked by crit_capture) calls a gain_control function that takes crit_render, the mandated locking order (render before capture) is violated and we might get a deadlock with the render thread.
Bug: b/123456404
Change-Id: Id7a888827e347e5e1d50e2f87d90e8b68f52b7b8
Reviewed-on: https://webrtc-review.googlesource.com/c/122087
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26637}
This CL introduces a new rtp_generator tool that can be utilized to generate
.rtpdump files that can be replayed by the video_replayer. This allows
automated generation of corpus material for the new WebRTC RTP fuzzers in
addition to allowing anyone who is experimenting with a new RTP feature to
quickly debug issues.
It can be used as follows:
./rtp_generator --input_config=./rtc_tools/rtp_generator/configs/vp8.json --output_rtpdump=/tmp/vp8.rtpdump
./video_replay --config_file test/fuzzers/configs/replay_packet_fuzzer/vp8_config.json --input_file /tmp/vp8.rtpdump
It works by generating squares randomly on the screen for a given duration. This
initial version is very limited and doesn't support FEC, RED and other
configurations. I plan to extend it to support these in future CLs.
Bug: webrtc:10117
Change-Id: I31d3dbb6fad73c727145ead4e7d085113d11fc51
Reviewed-on: https://webrtc-review.googlesource.com/c/119964
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26517}
The type rtc::scoped_refptr<T> is now part of api/. Please include it from
api/scoped_refptr.h.
More info: See: https://groups.google.com/forum/#!topic/discuss-webrtc/Mme2MSz4z4o.
Bug: webrtc:9887, webrtc:8205
No-Try: True
Change-Id: Ic6c7c81e226e59f12f7933e472f573ae097b55bf
Reviewed-on: https://webrtc-review.googlesource.com/c/119041
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26414}
This CL removes the legacy, no longer used, render buffering code. It
also removes four unused parameters from the AEC3 config. The change
is tested for bit-exactness.
Bug: webrtc:8671
Change-Id: I2bb6cb7a1097863f228767d757d551c00593bb00
Reviewed-on: https://webrtc-review.googlesource.com/c/119701
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26399}
I am planning to do a lot of work on adding additional fuzzing to WebRTC in Q1
of 2019. Given the limited number of available owners in this directory, and it
being non-prod I think this makes sense.
Bug: webrtc:10117
Change-Id: If2ad52fbce120c4d2bce51f4bfed99d83d78e6a5
Reviewed-on: https://webrtc-review.googlesource.com/c/117043
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26250}
This Config configuration will eventually replace the AudioProcessing::noise_suppression() interface.
This also introduces a proxy NoiseSuppression, returned by AudioProcessing::noise_suppression.
Without this proxy, ApplyConfig could overwrite NS settings for clients who currently use noise_suppression(). For example, the following code will not preserve the noise suppression level:
apm->noise_suppression()->set_level(NoiseSuppression::kHigh);
auto cfg = apm->GetConfig();
apm->ApplyConfig(cfg);
The NoiseSuppression instance returned by noise_suppression() has no way to update the config inside APM, so GetConfig() will return an out-of-date config which is then re-applied. This CL adds a proxy that makes this update, by forwarding Enable() and set_level() calls to ApplyConfig().
Drive-by change: AudioProcessing::Config substructs are reordered to mirror the capture processing pipeline.
Tested: Ran ToT and this CL builds of audioproc_f and verified identical settings/aecdumps.
Bug: webrtc:9947
Change-Id: I823eade894be115c254d656562564108b2b63b1f
Reviewed-on: https://webrtc-review.googlesource.com/c/116521
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26248}
The change in
https://webrtc-review.googlesource.com/c/116683 made the fuzzer crash
at startup.
Bug: chromium:921050, webrtc:10185
Change-Id: Ie3eb26e12b4ae9b29c1c424af0d3eb287b5f1a73
Reviewed-on: https://webrtc-review.googlesource.com/c/117261
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26238}
This updates some tests to use AudioProcesing::Config() and
AudioProcessing::GetStatistics() instead.
Some tests are left with voice_detection() because
a) not all tests make sense to run both APIs in parallel, and
b) we want test coverage of the old VoiceDetection until it is removed.
Bug: webrtc:9947
Change-Id: Ifb21a1e6e931d7ad3c3a4e38f5cc4f146da3c9a3
Reviewed-on: https://webrtc-review.googlesource.com/c/116160
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26134}
This will print out the major events during a NetEq simulation.
Bug: b/116685514
Change-Id: Iab172e9a9115695b42c67628d5523c727359bb89
Reviewed-on: https://webrtc-review.googlesource.com/c/114320
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26019}
Configuring video decoding and rtp depacketization through json was introduced
in a prior change. This change introduces some basic configurations that will
be used in the initial round of fuzzers that are being added.
TBR=henrik.lundin@webrtc.org
Bug: webrtc:9599
Change-Id: I58aba6a6f24f8374126547deeef0ff4d1708327b
Reviewed-on: https://webrtc-review.googlesource.com/c/113834
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26005}
rtc::s_url_decode internally calls transform on rtc::url_decode which operates
on raw char buffers. This is used in some core parts of ice server parsing so
it makes sense to add at least a basic fuzzer here. Corpus generation will be
tailored in a future CL.
Bug: webrtc:10117
Change-Id: If1685601c746c4a9f88c2a8d396eeb3f1b1688d4
Reviewed-on: https://webrtc-review.googlesource.com/c/113835
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25980}