21 Commits

Author SHA1 Message Date
Philipp Hancke
902bc24b6f iwyu test/fuzzers
Note that this needs to be done with a work directory that supports
fuzzer builds, otherwise IWYU will bail out with complaints about
find-bad-constructs and raw-ptr-plugin

Some manual work was required to resolve the TaskQueueFactory which
is forward-declared by environment which required a manual include
of the header file.

The DcSctp packet fuzzer was also updated use the
disable_checksum_verification option which was moved to the
DcSctpOptions struct.

vp9_encoder_references_fuzzer was trying to include libvpx includes
which had to be reverted.

BUG=webrtc:42226242

Change-Id: I9fdcf979e73fdee77106c4583faff21ca7abf19f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/375840
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Cr-Commit-Position: refs/heads/main@{#43873}
2025-02-11 12:04:42 -08:00
Florent Castelli
0afde7614d Move webrtc::AudioProcessing include to api/ folder
Bug: webrtc:15874
Change-Id: Ie8a6e031c0f0505cfe238f7d252c47e9c34408d4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/347983
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42128}
2024-04-20 07:02:50 +00:00
Sam Zackrisson
3bd444ffdb Clarify and extend test support for certain sample rates in audio processing
Sample rates not divisible by 100, in particular 11025 Hz and 22050 Hz, have long been used with APM in Chrome, but the support has never been stated explicitly.

This CL makes minor modifications to the APM API to clarify how rates are handled when 10 ms is not an integer number of samples. Unit tests are also extended to cover this case better.

This does not update all references to 10 ms and implicit floor(sample_rate/100) computations, but it does at least take us closer to a correct API.

Note that not all code needs to support these sample rates. For example, audio processing submodules only need to operate on the native APM rates 16000, 32000, 48000.

Bug: chromium:1332484
Change-Id: I1dad15468f6ccb9c0d4d09c5819fe87f8388d5b8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/268769
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37682}
2022-08-03 14:26:36 +00:00
Sam Zackrisson
306eee3d17 APM fuzzer: fuzz more sample rates, clean up input generation
APM has historically allowed sample rates not divisible by 100, but there is also code that explicitly states that such rates are not supported.
It is unclear how well rates like 22050 are handled in practice.
This CL adds support for fuzzing more sample rates, to help find issues.

We usually preserve fuzzer data reads to avoid invalidating unresolved fuzzer-found issues, but to make the code a little more readable this CL removes the discarded reads. This renders the only currently open bug non-reproducible, crbug.com/1299393.

Bug: webrtc:9413, chromium:1299393
Change-Id: I98ac1c653627c20adc73b8edede02f1526d80d9d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/264504
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37114}
2022-06-03 13:00:43 +00:00
Niels Möller
4f776ac7de Use make_ref_counted in AudioProcessingBuilder
Bug: webrtc:12701
Change-Id: I51ca5a54f812a1620ee2e6605c9ff67b92e2a5f8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/224547
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34725}
2021-08-11 15:40:28 +00:00
Per Åhgren
fea8b94591 Reland "APM: Remove the usage of AudioFrame in the AudioProcessing interface"
This is a reland of 12e2d4ddb235da6ec7a5c1c3a83ac33d394920b0

Original change's description:
> APM: Remove the usage of AudioFrame in the AudioProcessing interface
> 
> This CL removes the AudioFrame-based APIs from the AudioProcessing
> interface.
> 
> Bug: webrtc:5298
> Change-Id: Iab470b26b10e06dcf29c543851ae0085bc5b66f0
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172939
> Reviewed-by: Sam Zackrisson <saza@webrtc.org>
> Commit-Queue: Per Åhgren <peah@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31016}

Bug: webrtc:5298
Change-Id: I70e6d59afc3716ee6109d8b9dc384abc71c93624
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173476
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31066}
2020-04-14 14:11:06 +00:00
Artem Titov
7e60483915 Revert "APM: Remove the usage of AudioFrame in the AudioProcessing interface"
This reverts commit 12e2d4ddb235da6ec7a5c1c3a83ac33d394920b0.

Reason for revert: Speculative revert: breaks downstream project

Original change's description:
> APM: Remove the usage of AudioFrame in the AudioProcessing interface
> 
> This CL removes the AudioFrame-based APIs from the AudioProcessing
> interface.
> 
> Bug: webrtc:5298
> Change-Id: Iab470b26b10e06dcf29c543851ae0085bc5b66f0
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172939
> Reviewed-by: Sam Zackrisson <saza@webrtc.org>
> Commit-Queue: Per Åhgren <peah@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31016}

TBR=saza@webrtc.org,peah@webrtc.org

Change-Id: I82729b54c74cf1362332a28a96f598d6747b53ff
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:5298
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173091
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31022}
2020-04-07 19:37:32 +00:00
Per Åhgren
12e2d4ddb2 APM: Remove the usage of AudioFrame in the AudioProcessing interface
This CL removes the AudioFrame-based APIs from the AudioProcessing
interface.

Bug: webrtc:5298
Change-Id: Iab470b26b10e06dcf29c543851ae0085bc5b66f0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172939
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31016}
2020-04-07 13:40:58 +00:00
Sam Zackrisson
2b4bd97517 Fix fuzzer-found bug in fuzzer
The fuzzer itself does not call the APM API correctly.

Bug: chromium:1028614
Change-Id: If94808e6d3a1f550c1001b081321e87448e4be49
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160703
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29922}
2019-11-26 18:34:06 +00:00
Sam Zackrisson
31b01c0534 Fuzz APM float interface with up to 8 channels
Bug: webrtc:10859
Change-Id: Ie50b5fc102296bd71917852674cd2289e690ad78
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160305
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29891}
2019-11-25 08:50:44 +00:00
Jonas Olsson
a4d873786f Format almost everything.
This CL was generated by running

git ls-files | grep -P "(\.h|\.cc)$" | grep -v 'sdk/' | grep -v 'rtc_base/ssl_' | \
grep -v 'fake_rtc_certificate_generator.h' | grep -v 'modules/audio_device/win/' | \
grep -v 'system_wrappers/source/clock.cc' | grep -v 'rtc_base/trace_event.h' | \
grep -v 'modules/audio_coding/codecs/ilbc/' | grep -v 'screen_capturer_mac.h' | \
grep -v 'spl_inl_mips.h' | grep -v 'data_size_unittest.cc' | grep -v 'timestamp_unittest.cc' \
| xargs clang-format -i ; git cl format

Most of these changes are clang-format grouping and reordering includes
differently.

Bug: webrtc:9340
Change-Id: Ic83ddbc169bfacd21883e381b5181c3dd4fe8a63
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144051
Commit-Queue: Jonas Olsson <jonasolsson@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28505}
2019-07-08 13:45:15 +00:00
Per Åhgren
9363c778fe Remove deprecated call to UpdateHistogramsOnCallEnd
Bug: webrtc:5298
Change-Id: I440e5972ecb69e2d90d918cc5106a16ade4a6041
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135126
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27849}
2019-05-03 14:24:32 +00:00
Sam Zackrisson
281276301c Remove deprecated AudioProcessing::GetStatistics function
Additionally, AudioProcessing::GetStatistics(bool) is made pure
virtual and the default implementation in AudioProcessing is removed.

Deprecation PSA:
https://groups.google.com/forum/#!msg/discuss-webrtc/NgqEPvkNuDE/7HtwnMmADgAJ

Bug: webrtc:9947, webrtc:8572
Change-Id: I123402bf7d6c49f3613154c469b818109d8fad43
Reviewed-on: https://webrtc-review.googlesource.com/c/108783
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25463}
2018-11-01 11:21:15 +00:00
Jonathan Metzman
9f80b97309 Fix fuzzer build failures on Windows
Fix the following issues with fuzz targets when built on Windows:
1. Fix audio_processing_fuzzer by making types match in
invocations of CheckedDivExact by explicitly casting to size_t.
2. Fix packet_buffer_fuzzer by including "frame_object.h" for
declaration of RtpFrameObject.
3. Fix rtcp_receiver_fuzzer by including "tmmb_item.h" for declaration
of TmmbItem.

Bug: chromium:891867
Change-Id: Iddc338360ca37d5fc31488ec908eb4cdb5cc7b94
Reviewed-on: https://webrtc-review.googlesource.com/c/103844
Commit-Queue: Jonathan Metzman <metzman@chromium.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25028}
2018-10-05 18:13:32 +00:00
Alex Loiko
f5c3ba15f0 Fuzz more kinds of floats in the APM fuzzer.
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}
2018-07-17 09:36:35 +00:00
Alex Loiko
c480e9d7a8 Stereo in APM fuzzer.
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}
2018-07-05 13:28:47 +00:00
Sam Zackrisson
1f5de53a8c Fuzz key presses in APM
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}
2018-07-04 11:14:14 +00:00
Fredrik Solenberg
bbf21a3fd6 Remove dependencies on modules:module_api from AudioProcessing.
- 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}
2018-04-12 22:05:27 +00:00
Alex Loiko
9df3cf3e8c Stats calls improve APM fuzzer coverage.
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}
2018-04-11 08:47:04 +00:00
Alex Loiko
38c15d3995 Template argument and corpora for Audio Processing Fuzzer.
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}
2018-03-02 14:00:39 +00:00
Alex Loiko
ab20a6016c AEC-m and AEC-2 fuzzing.
Going through the coverage of audio_processing_fuzzer, it was noticed
that it didn't cover AEC-m and AEC-2 code. Therefore this CL adds 2
fuzzer targets that only fuzz the previous generation echo cancellers.

To avoid code duplication, the APM running code was broken out in a
new GN target. We have also changed all fuzzing code to use the
FuzzDataHelper class to avoid manual pointer arithmetic.

Bug: webrtc:7820
Change-Id: Ifea3266e396b487952a736945577fccea15d0e01
Reviewed-on: https://webrtc-review.googlesource.com/36500
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21638}
2018-01-16 13:15:04 +00:00