OpenShot Audio Library | OpenShotAudio  0.3.3
juce_ProcessContext.h
1 /*
2  ==============================================================================
3 
4  This file is part of the JUCE library.
5  Copyright (c) 2017 - ROLI Ltd.
6 
7  JUCE is an open source library subject to commercial or open-source
8  licensing.
9 
10  By using JUCE, you agree to the terms of both the JUCE 5 End-User License
11  Agreement and JUCE 5 Privacy Policy (both updated and effective as of the
12  27th April 2017).
13 
14  End User License Agreement: www.juce.com/juce-5-licence
15  Privacy Policy: www.juce.com/juce-5-privacy-policy
16 
17  Or: You may also use this code under the terms of the GPL v3 (see
18  www.gnu.org/licenses).
19 
20  JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
21  EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
22  DISCLAIMED.
23 
24  ==============================================================================
25 */
26 
27 namespace juce
28 {
29 namespace dsp
30 {
31 
39 {
41  double sampleRate;
42 
45 
47  uint32 numChannels;
48 };
49 
50 //==============================================================================
59 {
64 };
65 
66 //==============================================================================
78 template <typename ContextSampleType>
80 {
81 public:
83  using SampleType = ContextSampleType;
87 
91  ProcessContextReplacing (AudioBlockType& block) noexcept : ioBlock (block) {}
92 
95 
97  const ConstAudioBlockType& getInputBlock() const noexcept { return constBlock; }
98 
100  AudioBlockType& getOutputBlock() const noexcept { return ioBlock; }
101 
106  static constexpr bool usesSeparateInputAndOutputBlocks() { return false; }
107 
111  bool isBypassed = false;
112 
113 private:
114  AudioBlockType& ioBlock;
115  ConstAudioBlockType constBlock { ioBlock };
116 };
117 
118 //==============================================================================
131 template <typename ContextSampleType>
133 {
134 public:
136  using SampleType = ContextSampleType;
140 
145  : inputBlock (input), outputBlock (output)
146  {
147  // If the input and output blocks are the same then you should use
148  // ProcessContextReplacing instead.
149  jassert (input != output);
150  }
151 
154 
156  const ConstAudioBlockType& getInputBlock() const noexcept { return inputBlock; }
157 
159  AudioBlockType& getOutputBlock() const noexcept { return outputBlock; }
160 
165  static constexpr bool usesSeparateInputAndOutputBlocks() { return true; }
166 
170  bool isBypassed = false;
171 
172 private:
173  ConstAudioBlockType inputBlock;
174  AudioBlockType& outputBlock;
175 };
176 
177 } // namespace dsp
178 } // namespace juce
static constexpr bool usesSeparateInputAndOutputBlocks()
AudioBlockType & getOutputBlock() const noexcept
const ConstAudioBlockType & getInputBlock() const noexcept
ProcessContextNonReplacing(const ConstAudioBlockType &input, AudioBlockType &output) noexcept
ProcessContextReplacing(AudioBlockType &block) noexcept
static constexpr bool usesSeparateInputAndOutputBlocks()
AudioBlockType & getOutputBlock() const noexcept
const ConstAudioBlockType & getInputBlock() const noexcept