This is a high-level fuzzer that creates an AudioProcessing instance. All possible combinations of publicly visible components are fuzzed. Input and output sample rate, call order and use of the float/fix interface is fuzzed. Sample rate may change between calls. To fuzz floating point numbers, raw data is converted to floats, and filtered for special values like 'inf', 'nan' and very large values. Note that the default use case of APM is to only allow values between +/- 2^15. BUG=webrtc:7820 Review-Url: https://codereview.webrtc.org/2876793002 Cr-Commit-Position: refs/heads/master@{#18678}
28 lines
1022 B
C++
28 lines
1022 B
C++
/*
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef WEBRTC_TEST_FUZZERS_AUDIO_PROCESSING_FUZZER_H_
|
|
#define WEBRTC_TEST_FUZZERS_AUDIO_PROCESSING_FUZZER_H_
|
|
|
|
#include <memory>
|
|
|
|
#include "webrtc/modules/audio_processing/include/audio_processing.h"
|
|
namespace webrtc {
|
|
|
|
rtc::Optional<bool> ParseBool(const uint8_t** data, size_t* remaining_size);
|
|
rtc::Optional<uint8_t> ParseByte(const uint8_t** data, size_t* remaining_size);
|
|
|
|
void FuzzAudioProcessing(const uint8_t* data,
|
|
size_t size,
|
|
std::unique_ptr<AudioProcessing> apm);
|
|
} // namespace webrtc
|
|
|
|
#endif // WEBRTC_TEST_FUZZERS_AUDIO_PROCESSING_FUZZER_H_
|