RavEngine
Loading...
Searching...
No Matches
gain_processor.h
1
/*
2
Copyright 2018 Google Inc. All Rights Reserved.
3
4
Licensed under the Apache License, Version 2.0 (the "License");
5
you may not use this file except in compliance with the License.
6
You may obtain a copy of the License at
7
8
http://www.apache.org/licenses/LICENSE-2.0
9
10
Unless required by applicable law or agreed to in writing, software
11
distributed under the License is distributed on an "AS-IS" BASIS,
12
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
See the License for the specific language governing permissions and
14
limitations under the License.
15
*/
16
17
#ifndef RESONANCE_AUDIO_DSP_GAIN_PROCESSOR_H_
18
#define RESONANCE_AUDIO_DSP_GAIN_PROCESSOR_H_
19
20
#include <cmath>
21
#include <cstddef>
22
#include <vector>
23
24
#include "base/audio_buffer.h"
25
26
namespace
vraudio {
27
28
// Processor class which applies a gain to a vector of samples from an audio
29
// buffer. A short linear ramp is applied to the gain to reduce audible
30
// artifacts in the output.
31
class
GainProcessor
{
32
public
:
33
// Default constructor keeps the gain state uninitialized. The first call to
34
// |ApplyGain| sets the internal gain state.
35
GainProcessor
();
36
37
// Constructs |GainProcessor| with some initial gain value.
38
//
39
// @param initial_gain Gain value used as starting point for first processing
40
// period's gain ramping.
41
explicit
GainProcessor
(
float
initial_gain);
42
43
// Applies gain supplied to the input samples.
44
//
45
// @param target_gain Target gain value.
46
// @param input Samples to which gain will be applied.
47
// @param output Samples to which gain has been applied.
48
// @param accumulate_output True if the processed input should be mixed into
49
// the output. Otherwise, the output will be replaced by the processed
50
// input.
51
void
ApplyGain(
float
target_gain,
const
AudioBuffer::Channel
& input,
52
AudioBuffer::Channel
* output,
bool
accumulate_output);
53
54
// Returns the |current_gain_| value.
55
//
56
// @return Current gain applied by the |GainProcessor|.
57
float
GetGain()
const
;
58
59
// Resets the gain processor to a new gain factor.
60
//
61
// @param gain Gain value.
62
void
Reset(
float
gain);
63
64
private
:
65
// Latest gain value to be applied to buffer values.
66
float
current_gain_;
67
68
// Flag to indiciate if an initial gain has been assigned.
69
bool
is_initialized_;
70
};
71
72
}
// namespace vraudio
73
74
#endif
// RESONANCE_AUDIO_DSP_GAIN_PROCESSOR_H_
vraudio::ChannelView
Definition
channel_view.h:30
vraudio::GainProcessor
Definition
gain_processor.h:31
RavEngine
deps
resonance-audio
resonance_audio
dsp
gain_processor.h
Generated by
1.9.8