webrtc_m130/webrtc/test/fuzzers/audio_processing_fuzzer.h
aleloi 8c51282f7f Added new AudioProcessing fuzzer
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}
2017-06-20 12:26:55 +00:00

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_