OpenShot Audio Library | OpenShotAudio  0.3.2
juce_AudioIODevice.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  The code included in this file is provided under the terms of the ISC license
11  http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12  To use, copy, modify, and/or distribute this software for any purpose with or
13  without fee is hereby granted provided that the above copyright notice and
14  this permission notice appear in all copies.
15 
16  JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17  EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18  DISCLAIMED.
19 
20  ==============================================================================
21 */
22 
23 namespace juce
24 {
25 
26 class AudioIODevice;
27 
28 
29 //==============================================================================
42 class JUCE_API AudioIODeviceCallback
43 {
44 public:
46  virtual ~AudioIODeviceCallback() = default;
47 
86  virtual void audioDeviceIOCallback (const float** inputChannelData,
87  int numInputChannels,
88  float** outputChannelData,
89  int numOutputChannels,
90  int numSamples) = 0;
91 
106  virtual void audioDeviceAboutToStart (AudioIODevice* device) = 0;
107 
109  virtual void audioDeviceStopped() = 0;
110 
115  virtual void audioDeviceError (const String& errorMessage);
116 };
117 
118 
119 //==============================================================================
136 class JUCE_API AudioIODevice
137 {
138 public:
140  virtual ~AudioIODevice();
141 
142  //==============================================================================
144  const String& getName() const noexcept { return name; }
145 
150  const String& getTypeName() const noexcept { return typeName; }
151 
152  //==============================================================================
157 
162 
163  //==============================================================================
168 
173 
178  virtual int getDefaultBufferSize() = 0;
179 
180  //==============================================================================
195  virtual String open (const BigInteger& inputChannels,
196  const BigInteger& outputChannels,
197  double sampleRate,
198  int bufferSizeSamples) = 0;
199 
201  virtual void close() = 0;
202 
208  virtual bool isOpen() = 0;
209 
217  virtual void start (AudioIODeviceCallback* callback) = 0;
218 
224  virtual void stop() = 0;
225 
231  virtual bool isPlaying() = 0;
232 
234  virtual String getLastError() = 0;
235 
236  //==============================================================================
241  virtual int getCurrentBufferSizeSamples() = 0;
242 
247  virtual double getCurrentSampleRate() = 0;
248 
253  virtual int getCurrentBitDepth() = 0;
254 
259  virtual BigInteger getActiveOutputChannels() const = 0;
260 
265  virtual BigInteger getActiveInputChannels() const = 0;
266 
272  virtual int getOutputLatencyInSamples() = 0;
273 
279  virtual int getInputLatencyInSamples() = 0;
280 
281 
282  //==============================================================================
288  virtual bool hasControlPanel() const;
289 
294  virtual bool showControlPanel();
295 
300  virtual bool setAudioPreprocessingEnabled (bool shouldBeEnabled);
301 
302  //==============================================================================
313  virtual int getXRunCount() const noexcept;
314 
315  //==============================================================================
316 protected:
318  AudioIODevice (const String& deviceName,
319  const String& typeName);
320 
322  String name, typeName;
323 };
324 
325 } // namespace juce
virtual void audioDeviceIOCallback(const float **inputChannelData, int numInputChannels, float **outputChannelData, int numOutputChannels, int numSamples)=0
virtual ~AudioIODeviceCallback()=default
virtual void audioDeviceAboutToStart(AudioIODevice *device)=0
virtual void audioDeviceStopped()=0
virtual double getCurrentSampleRate()=0
const String & getName() const noexcept
virtual int getCurrentBitDepth()=0
virtual void close()=0
virtual bool isPlaying()=0
virtual StringArray getOutputChannelNames()=0
virtual StringArray getInputChannelNames()=0
virtual BigInteger getActiveInputChannels() const =0
virtual void stop()=0
virtual BigInteger getActiveOutputChannels() const =0
virtual Array< double > getAvailableSampleRates()=0
virtual int getInputLatencyInSamples()=0
const String & getTypeName() const noexcept
virtual int getCurrentBufferSizeSamples()=0
virtual Array< int > getAvailableBufferSizes()=0
virtual int getDefaultBufferSize()=0
virtual void start(AudioIODeviceCallback *callback)=0
virtual String getLastError()=0
virtual String open(const BigInteger &inputChannels, const BigInteger &outputChannels, double sampleRate, int bufferSizeSamples)=0
virtual int getOutputLatencyInSamples()=0
virtual bool isOpen()=0