Chromium Code Reviews| Index: webrtc/test/fuzzers/audio_processing_fuzzer_configs.cc |
| diff --git a/webrtc/test/fuzzers/audio_processing_fuzzer_configs.cc b/webrtc/test/fuzzers/audio_processing_fuzzer_configs.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7c0b8326c72b31af3a3977aae8da9c8e0f7abbed |
| --- /dev/null |
| +++ b/webrtc/test/fuzzers/audio_processing_fuzzer_configs.cc |
| @@ -0,0 +1,70 @@ |
| +/* |
| + * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. |
| + * |
| + * Use of this source code is governed by a BSD-style license |
| + * that can be found in the LICENSE file in the root of the source |
| + * tree. An additional intellectual property rights grant can be found |
| + * in the file PATENTS. All contributing project authors may |
| + * be found in the AUTHORS file in the root of the source tree. |
| + */ |
| + |
| +#include "webrtc/modules/audio_processing/include/audio_processing.h" |
| +#include "webrtc/test/fuzzers/audio_processing_fuzzer.h" |
| + |
| +#include "webrtc/base/optional.h" |
| + |
| +namespace webrtc { |
| + |
| +std::unique_ptr<AudioProcessing> CreateAPM(const uint8_t** data, |
| + size_t* remaining_size) { |
| + // Parse boolean values for optionally enabling different |
| + // configurable public components of APM. |
| + auto exp_agc = ParseBool(data, remaining_size); |
| + auto exp_ns = ParseBool(data, remaining_size); |
| + auto bf = ParseBool(data, remaining_size); |
| + auto ef = ParseBool(data, remaining_size); |
| + auto raf = ParseBool(data, remaining_size); |
| + auto da = ParseBool(data, remaining_size); |
| + auto ii = ParseBool(data, remaining_size); |
|
hlundin-webrtc
2017/06/16 14:48:27
Suggest ie for Intelligibility Enhancer.
aleloi
2017/06/19 11:31:43
Done.
|
| + auto red = ParseBool(data, remaining_size); |
| + auto lc = ParseBool(data, remaining_size); |
| + auto hpf = ParseBool(data, remaining_size); |
| + auto aec3 = ParseBool(data, remaining_size); |
| + |
| + if (!(exp_agc && exp_ns && bf && ef && raf && da && ii && red && lc && hpf && |
| + aec3)) { |
| + return nullptr; |
| + } |
| + |
| + // Components can be enabled through webrtc::Config and |
| + // webrtc::AudioProcessingConfig. |
| + Config config; |
| + |
| + config.Set<ExperimentalAgc>(new ExperimentalAgc(*exp_agc)); |
| + config.Set<ExperimentalNs>(new ExperimentalNs(*exp_ns)); |
| + if (*bf) { |
| + config.Set<Beamforming>(new Beamforming()); |
| + } |
| + config.Set<ExtendedFilter>(new ExtendedFilter(*ef)); |
| + config.Set<RefinedAdaptiveFilter>(new RefinedAdaptiveFilter(*raf)); |
| + config.Set<DelayAgnostic>(new DelayAgnostic(*da)); |
| + config.Set<Intelligibility>(new Intelligibility(*ii)); |
| + |
| + std::unique_ptr<AudioProcessing> apm(AudioProcessing::Create(config)); |
| + |
| + webrtc::AudioProcessing::Config apm_config; |
| + apm_config.residual_echo_detector.enabled = *red; |
| + apm_config.level_controller.enabled = *lc; |
| + apm_config.high_pass_filter.enabled = *hpf; |
| + apm_config.echo_canceller3.enabled = *aec3; |
| + |
| + apm->ApplyConfig(apm_config); |
| + |
| + return apm; |
| +} |
| + |
| +void FuzzOneInput(const uint8_t* data, size_t size) { |
| + auto apm = CreateAPM(&data, &size); |
| + FuzzAudioProcessing(data, size, std::move(apm)); |
| +} |
| +} // namespace webrtc |