Increasing APM fuzzer coverage.
Add AecDump to the list of fuzzed stuff. Attaches an AecDump to the Audio Processing Module in the APM-fuzzer. The AecDump writes to /dev/null. Bug: webrtc:7820 Change-Id: I03916ce4d1c69906ca8bb7e6fbe29c11e4ea55e5 Reviewed-on: https://webrtc-review.googlesource.com/c/107622 Reviewed-by: Sam Zackrisson <saza@webrtc.org> Commit-Queue: Alex Loiko <aleloi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25321}
This commit is contained in:
@ -502,9 +502,11 @@ webrtc_fuzzer_test("audio_processing_fuzzer") {
|
||||
"../../api/audio:aec3_factory",
|
||||
"../../modules/audio_processing",
|
||||
"../../modules/audio_processing/aec3",
|
||||
"../../modules/audio_processing/aec_dump:mock_aec_dump",
|
||||
"../../modules/audio_processing/aec_dump",
|
||||
"../../modules/audio_processing/aec_dump:aec_dump_impl",
|
||||
"../../rtc_base:ptr_util",
|
||||
"../../rtc_base:rtc_base_approved",
|
||||
"../../rtc_base:rtc_task_queue",
|
||||
"../../rtc_base:safe_minmax",
|
||||
"../../system_wrappers:field_trial",
|
||||
"//third_party/abseil-cpp/absl/memory",
|
||||
|
||||
@ -13,10 +13,11 @@
|
||||
|
||||
#include "absl/memory/memory.h"
|
||||
#include "api/audio/echo_canceller3_factory.h"
|
||||
#include "modules/audio_processing/aec_dump/mock_aec_dump.h"
|
||||
#include "modules/audio_processing/aec_dump/aec_dump_factory.h"
|
||||
#include "modules/audio_processing/include/audio_processing.h"
|
||||
#include "rtc_base/arraysize.h"
|
||||
#include "rtc_base/numerics/safe_minmax.h"
|
||||
#include "rtc_base/task_queue.h"
|
||||
#include "system_wrappers/include/field_trial.h"
|
||||
#include "test/fuzzers/audio_processing_fuzzer_helper.h"
|
||||
#include "test/fuzzers/fuzz_data_helper.h"
|
||||
@ -61,7 +62,8 @@ const std::string kFieldTrialNames[] = {
|
||||
};
|
||||
|
||||
std::unique_ptr<AudioProcessing> CreateApm(test::FuzzDataHelper* fuzz_data,
|
||||
std::string* field_trial_string) {
|
||||
std::string* field_trial_string,
|
||||
rtc::TaskQueue* worker_queue) {
|
||||
// Parse boolean values for optionally enabling different
|
||||
// configurable public components of APM.
|
||||
bool exp_agc = fuzz_data->ReadOrDefaultValue(true);
|
||||
@ -136,8 +138,9 @@ std::unique_ptr<AudioProcessing> CreateApm(test::FuzzDataHelper* fuzz_data,
|
||||
.SetEchoControlFactory(std::move(echo_control_factory))
|
||||
.Create(config));
|
||||
|
||||
apm->AttachAecDump(
|
||||
absl::make_unique<testing::NiceMock<webrtc::test::MockAecDump>>());
|
||||
#ifdef WEBRTC_LINUX
|
||||
apm->AttachAecDump(AecDumpFactory::Create("/dev/null", -1, worker_queue));
|
||||
#endif
|
||||
|
||||
webrtc::AudioProcessing::Config apm_config;
|
||||
apm_config.echo_canceller.enabled = use_aec || use_aecm;
|
||||
@ -165,7 +168,10 @@ void FuzzOneInput(const uint8_t* data, size_t size) {
|
||||
// This string must be in scope during execution, according to documentation
|
||||
// for field_trial.h. Hence it's created here and not in CreateApm.
|
||||
std::string field_trial_string = "";
|
||||
auto apm = CreateApm(&fuzz_data, &field_trial_string);
|
||||
|
||||
std::unique_ptr<rtc::TaskQueue> worker_queue(
|
||||
new rtc::TaskQueue("rtc-low-prio", rtc::TaskQueue::Priority::LOW));
|
||||
auto apm = CreateApm(&fuzz_data, &field_trial_string, worker_queue.get());
|
||||
|
||||
if (apm) {
|
||||
FuzzAudioProcessing(&fuzz_data, std::move(apm));
|
||||
|
||||
Reference in New Issue
Block a user