Previously, the fuzzer read a int16_t and converted to float. That is
how float audio samples were generated. This CL changes the fuzzer to
read floats directly, and then sanitize them.
Bug: webrtc:7820
Change-Id: Icc526611466c10dd4222b19a4d4b4fd26643812a
Reviewed-on: https://webrtc-review.googlesource.com/85343
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24001}
The fuzzer figured out that 3 bytes is enough to fuzz a package.
2 bytes for packet length, and 1 byte of actual packet. A 20K test case
can generate > 6000 packets. It does not seem like efficient fuzzing.
This CL simply stops execution when 200 packets have been generated.
That corresponds to 4 seconds of 20 ms packets.
Bug: chromium:840115
Change-Id: Id2742a6f8021134bacd8a6e8c71b32f20c7f1086
Reviewed-on: https://webrtc-review.googlesource.com/88566
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24000}
This CL re-activates the explicit handling of microphone
gain changes in the AEC3 code. The implementation is done
beneath a kill-switch so that when that switch is active
the changes in this CL are bitexact.
Bug: webrtc:9526,chromium:863826
Change-Id: I58e93d8bc0bce7bec91e102de9891ad48ebc55d8
Reviewed-on: https://webrtc-review.googlesource.com/88620
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23986}
There are many new killswitches for AEC3 code.
By fuzzing them, we ensure the code is more thoroughly tested in case
we need to trigger any switches.
Bug: webrtc:9413
Change-Id: I0bc7609e4d71fc820abfbba7d481b2374c3587cb
Reviewed-on: https://webrtc-review.googlesource.com/88225
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23960}
Also prepared it for comming changes to RTPVideoHeader.
Bug: none
Change-Id: I60e57f779aee4ee98b6eec3d6631e43ac682c37f
Reviewed-on: https://webrtc-review.googlesource.com/87825
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23911}
The size limit is set to correspond to approximately 5 seconds of
decoded audio at the codecs' normal operating bitrates. This is to
avoid timeouts on the bots.
NOTRY=true
Bug: chromium:840115
Change-Id: I74b3c196259e03981aa2c4ef349e6e1334e9bf58
Reviewed-on: https://webrtc-review.googlesource.com/87302
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23857}
Add support for stereo in APM fuzzer.
Bug: webrtc:9413
Change-Id: Ie4b19037bd4613c050b03ad0bacf0f44f9feccd3
Reviewed-on: https://webrtc-review.googlesource.com/87221
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23854}
This calls webrtc::AudioProcessing::set_stream_key_pressed, which
opens up a lot of code paths in the transient suppressor.
The change breaks historical fuzzer test cases.
Bug: webrtc:9413
Change-Id: I1f593a98286c7e7c0fc6751d16df40ad813dbd70
Reviewed-on: https://webrtc-review.googlesource.com/86950
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23840}
This is the preferred way.
NOTRY=True
Bug: none
Change-Id: I305d4d9cb7b66e01427958e1416d672badd72af0
Reviewed-on: https://webrtc-review.googlesource.com/86948
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23837}
This avoids fuzzer timeouts on the bot.
NOTRY=True
Bug: chromium:857404
Change-Id: I480c53f005536029c667b9f41aab3ecaca14d125
Reviewed-on: https://webrtc-review.googlesource.com/86945
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23833}
This is a reland of 80c4cca4915dbc6094a5bfae749f85f7371eadd1
Original change's description:
> NetEq: Deprecate playout modes Fax, Off and Streaming
>
> The playout modes other than Normal have not been reachable for a long
> time, other than through tests. It is time to deprecate them.
>
> The only meaningful use was that Fax mode was sometimes set from
> tests, in order to avoid time-stretching operations (accelerate and
> pre-emptive expand) from messing with the test results. With this CL,
> a new config is added instead, which lets the user specify exactly
> this: don't do time-stretching.
>
> As a result of Fax and Off modes being removed, the following code
> clean-up was done:
> - Fold DecisionLogicNormal into DecisionLogic.
> - Remove AudioRepetition and AlternativePlc operations, since they can
> no longer be reached.
>
> Bug: webrtc:9421
> Change-Id: I651458e9c1931a99f3b07e242817d303bac119df
> Reviewed-on: https://webrtc-review.googlesource.com/84123
> Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
> Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
> Reviewed-by: Minyue Li <minyue@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#23704}
Bug: webrtc:9421
Change-Id: Ice351b635788167f2971b26470f73a5e5fa1a240
Reviewed-on: https://webrtc-review.googlesource.com/86543
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23799}
to list of extensions supported by RtpPacket.
Bug: webrtc:9361
Change-Id: Iabee824381be3776e17e95f32507058607fc0bc8
Reviewed-on: https://webrtc-review.googlesource.com/85346
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23788}
This slightly increases fuzzer coverage of the APM.
(.25 % points more line coverage.)
Bug: webrtc:9413
Change-Id: Ic992423f1dcf34fa0aa9649c8035a8e48b0ccdb2
Reviewed-on: https://webrtc-review.googlesource.com/85342
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23732}
Fuzzes the config and audio inputs to GainControlImpl.
Seems able to cover a few hundred lines of code that the APM fuzzer hasn't been able to reach.
Bug: webrtc:9413
Change-Id: I32776505be9c416ec03113c12437a92dcfadd827
Reviewed-on: https://webrtc-review.googlesource.com/84589
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23709}
This reverts commit 80c4cca4915dbc6094a5bfae749f85f7371eadd1.
Reason for revert: Breaks downstream tests.
Original change's description:
> NetEq: Deprecate playout modes Fax, Off and Streaming
>
> The playout modes other than Normal have not been reachable for a long
> time, other than through tests. It is time to deprecate them.
>
> The only meaningful use was that Fax mode was sometimes set from
> tests, in order to avoid time-stretching operations (accelerate and
> pre-emptive expand) from messing with the test results. With this CL,
> a new config is added instead, which lets the user specify exactly
> this: don't do time-stretching.
>
> As a result of Fax and Off modes being removed, the following code
> clean-up was done:
> - Fold DecisionLogicNormal into DecisionLogic.
> - Remove AudioRepetition and AlternativePlc operations, since they can
> no longer be reached.
>
> Bug: webrtc:9421
> Change-Id: I651458e9c1931a99f3b07e242817d303bac119df
> Reviewed-on: https://webrtc-review.googlesource.com/84123
> Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
> Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
> Reviewed-by: Minyue Li <minyue@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#23704}
TBR=henrik.lundin@webrtc.org,ivoc@webrtc.org,minyue@webrtc.org
Change-Id: I555aae8850fc4ac1ea919bfa72c11b5218066f30
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9421
Reviewed-on: https://webrtc-review.googlesource.com/84680
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23706}
The playout modes other than Normal have not been reachable for a long
time, other than through tests. It is time to deprecate them.
The only meaningful use was that Fax mode was sometimes set from
tests, in order to avoid time-stretching operations (accelerate and
pre-emptive expand) from messing with the test results. With this CL,
a new config is added instead, which lets the user specify exactly
this: don't do time-stretching.
As a result of Fax and Off modes being removed, the following code
clean-up was done:
- Fold DecisionLogicNormal into DecisionLogic.
- Remove AudioRepetition and AlternativePlc operations, since they can
no longer be reached.
Bug: webrtc:9421
Change-Id: I651458e9c1931a99f3b07e242817d303bac119df
Reviewed-on: https://webrtc-review.googlesource.com/84123
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23704}
This CL removes the remaining beamformer parts from the APM.
Bug: webrtc:9402
Change-Id: I9ab2795bd2813d17166ed0925125257b82d98a74
Reviewed-on: https://webrtc-review.googlesource.com/83340
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23694}
Running clang-format with chromium's style guide.
The goal is n-fold:
* providing consistency and readability (that's what code guidelines are for)
* preventing noise with presubmit checks and git cl format
* building on the previous point: making it easier to automatically fix format issues
* you name it
Please consider using git-hyper-blame to ignore this commit.
Bug: webrtc:9340
Change-Id: I694567c4cdf8cee2860958cfe82bfaf25848bb87
Reviewed-on: https://webrtc-review.googlesource.com/81185
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23660}
The fuzzer data is used to configure the field trials of the AEC.
This increases fuzzer coverage of modules/audio_processing/aec3/ by roughly 500 lines of code, ~ 3 % points increase in APM coverage for desktop Chrome.
Bug: webrtc:9413
Change-Id: Iea9059747a8492a7ca2091a359e7883750c45b27
Reviewed-on: https://webrtc-review.googlesource.com/83732
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23650}
This is a no-op change because rtc::Optional is an alias to absl::optional
This CL generated by running script with parameters 'test rtc_tools'
find $@ -type f \( -name \*.h -o -name \*.cc \) \
-exec sed -i 's|rtc::Optional|absl::optional|g' {} \+ \
-exec sed -i 's|rtc::nullopt|absl::nullopt|g' {} \+ \
-exec sed -i 's|#include "api/optional.h"|#include "absl/types/optional.h"|' {} \+
find $@ -type f -name BUILD.gn \
-exec sed -r -i 's|"(../)*api:optional"|"//third_party/abseil-cpp/absl/types:optional"|' {} \+;
git cl format
Bug: webrtc:9078
Change-Id: Ibb43c737f4c45fe300736382b0dd2d8ab32c6377
Reviewed-on: https://webrtc-review.googlesource.com/83944
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23642}
In rare case the packets number may loop around and in the same FEC-protected group the packet sequence number became out of order.
Bug: chromium:850493
Change-Id: Ice82aafd537e0edc1dbdb8b934e11e7c42a4cf60
Reviewed-on: https://webrtc-review.googlesource.com/82802
Commit-Queue: Ying Wang <yinwa@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23633}
The echo detector is currently stored as a unique_ptr, but when injecting an echo detector, a scoped_refptr makes more sense since the ownership will be shared.
Bug: webrtc:8732
Change-Id: I2180014acb84f1cd5c361864a444b7b6574520f5
Reviewed-on: https://webrtc-review.googlesource.com/83325
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23610}
This limits the SDP to 16KB, which sounds enough.
Bug: chromium:813328
Change-Id: I58c7b3e073108fd7b3495e8182b5c632e9619fe7
Reviewed-on: https://webrtc-review.googlesource.com/78280
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23360}
This is a kitchen-sink header, some pieces should be moved to
byteorder.h, the rest likely deleted.
Delete most includes of basictypes.h. In leaf headers,
include stddef.h and stdint.h explicitly where needed.
Bug: webrtc:6853
Change-Id: Ibc809936a8f94d418e4eb650da1e89c1b9142073
Reviewed-on: https://webrtc-review.googlesource.com/77721
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23333}
The fuzzer is very simple. It only considers the default encoder
configuration at this point.
Bug: chromium:826914
Change-Id: Ifa248a1dba80efb231807750e40082ec5580636a
Reviewed-on: https://webrtc-review.googlesource.com/75261
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23192}
- Directly include api/audio/audio_frame.h everywhere AudioFrame is used.
- This *will* remove transient dependencies on libjpeg and a bunch of other things from the e.g. APM.
- audio_frame.h still included from module_common_types.h for backwards compatibility with clients.
Bug: webrtc:9139, webrtc:7504
Change-Id: Id96f9268c01667fbcc29a01f5c1dd25a37836897
Reviewed-on: https://webrtc-review.googlesource.com/62464
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22845}
A part of the Audio Processing Module interface is GetStatistics. The
call collects stats from submodules. We make sure these calls are made
by the fuzzer to cover that code path.
Bug: webrtc:7820
Change-Id: Ia8f89d9838602dcb2599f676bd5c43e815bbf791
Reviewed-on: https://webrtc-review.googlesource.com/68980
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22817}
The number of calls to ComfortNoiseDecoder::Generate() was determined
by the fuzzer input, and was chosen between 0 and 255. This would
sometimes lead to very long runs, with questionable merit. With this
change, the number of call to Generate() is limited to 17 (an
arbitrary small integer).
Bug: chromium:820078
Change-Id: I27b5c7f0b72d53370d002a6b157d4451079a0ba9
Reviewed-on: https://webrtc-review.googlesource.com/60941
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22360}
So that we can avoid dependency cycles.
Bug: none
Change-Id: I821d9f1319dff01403d6e4e310cbb2d4b2b125e8
Reviewed-on: https://webrtc-review.googlesource.com/60500
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22328}
We found out that
int16_t x = test::FuzzDataHelper::ReadOrDefaultValue(0)
reads 4 bytes from the fuzzer input instead of 2. That means that
almost half the bits in the input data to audio_processing_fuzzer are
ignored. This change adds template arguments to force reading 2 bytes
when we only need 2.
We also add a small manually generated corpus. During local testing we
let the fuzzer run for a few hours on an empty corpus. Adding the
manually-generated files resulted in an immediate coverage increase by
~3%, and then by another 3% over the next few hours.
The manually generated corpus contains a short segment of speech with
real echo. We suspect that triggering Voice Activity Detection or echo
estimation filter convergence can be difficult for an automatic
fuzzer.
We remove the Level Controller config. We read 20 bytes extra after the
config to guard against future configuration changes.
Bug: webrtc:7820
Change-Id: If60c04f53b27c519c349a40bd13664eef7999368
Reviewed-on: https://webrtc-review.googlesource.com/58744
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22269}
The AEC3 factory is now part of the WebRTC API.
Bug: webrtc:8844
Change-Id: If6f419b4ca0354e2d346c0e6474086e456ba747e
Reviewed-on: https://webrtc-review.googlesource.com/57141
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22204}
The length of the fuzzer input can sometimes be really long (more than
1000000 bytes), and this take a very long time to execute. Typically,
the fuzzer times out instead. This change limits the used length of
the fuzzer to 200000 bytes.
NOTRY=TRUE
Bug: chromium:802149
Change-Id: Ia9d2f080602bba8ff70c5f0575bb9ecfa99c537c
Reviewed-on: https://webrtc-review.googlesource.com/57581
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22183}
The length of the fuzzer input can sometimes be really long (more than
600000 bytes), and this take a very long time to execute. Typically,
the fuzzer times out instead. This change limits the used length of
the fuzzer to 100000 bytes.
NOTRY=TRUE
Bug: chromium:802193
Change-Id: Id32174611fadb480f4e2c6b4f553a2ba0fa5b493
Reviewed-on: https://webrtc-review.googlesource.com/57580
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22182}
The length of the fuzzer input can sometimes be really long (more than
600000 bytes), and this take a very long time to execute. Typically,
the fuzzer times out instead. This change limits the used length of
the fuzzer to 100000 bytes.
NOTRY=TRUE
Bug: chromium:802245
Change-Id: Ibe02b6de932d900408f870d9ba440b7b8e08dc0e
Reviewed-on: https://webrtc-review.googlesource.com/57180
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22181}
This CL adds the GainCurveApplier (GCA). It owns a
FixedDigitalLevelEstimator (LE) and an InterpolatedGainCurve
(IGC). The GCA uses the LE to compute the input signal level, looks up
a gain from IGC and applies it on the signal.
The other IGC and LE submodules were added in previous CLs [1] and
[2].
This CL also turns on AGC2 in the APM fuzzer.
[1] https://webrtc-review.googlesource.com/c/src/+/51920
[2] https://webrtc-review.googlesource.com/c/src/+/52381
Bug: webrtc:7949
Change-Id: Idb10cc3ca9d6d2e4ac5824cc3391ed8aa680f6cd
Reviewed-on: https://webrtc-review.googlesource.com/54361
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22103}
Rtp Packets in webrtc expected to be less that 1500,
i.e. way less that 2^16 bytes for extensions block.
This CL explicitly discards longer extension.
Bug: chromium:809046
Change-Id: Ibed33b51bafc3fd4804ec135f66110c6d2796734
Reviewed-on: https://webrtc-review.googlesource.com/48061
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21910}