VISR  0.11.8
Versatile Interactive Scene Renderer
audio_interface.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_LIBRRL_AUDIO_INTERFACE_HPP_INCLUDED
4 #define VISR_LIBRRL_AUDIO_INTERFACE_HPP_INCLUDED
5 
6 #include "export_symbols.hpp"
7 
8 #include <cstddef>
9 #include <string>
10 
11 namespace visr
12 {
13 namespace audiointerfaces
14 {
15 
19 class VISR_AUDIOINTERFACES_LIBRARY_SYMBOL AudioInterface
20 {
21 public:
22 
27  using SampleRateType = std::size_t;
28 
29  class VISR_AUDIOINTERFACES_LIBRARY_SYMBOL Configuration
30  {
31  public:
32  explicit Configuration( std::size_t numCaptureChannels,
33  std::size_t numPlaybackChannels,
34  SampleRateType sampleRate = 0,
35  std::size_t periodSize = 0
36  );
37 
38  virtual ~Configuration();
39 
44  std::size_t numCaptureChannels() const { return mNumCaptureChannels; }
45  std::size_t numPlaybackChannels( ) const { return mNumPlaybackChannels; }
46  SampleRateType sampleRate() const { return mSampleRate; }
47  std::size_t periodSize( ) const { return mPeriodSize; }
48 
50  private:
51  std::size_t const mNumCaptureChannels;
52  std::size_t const mNumPlaybackChannels;
53  SampleRateType const mSampleRate;
54  std::size_t const mPeriodSize;
55  };
56 
58 
59  using ExternalSampleType = float;
60 
62  using InternalSampleType = float;
64 
68  virtual ~AudioInterface();
69 
73  using AudioCallback = void (*)( void *, ExternalSampleType const * const * /*captureBuffer*/,
74  ExternalSampleType * const * /*playbackBuffer*/,
75  bool& /*errorCode*/ );
76 
80  virtual std::size_t numberOfCaptureChannels() const = 0;
81 
85  virtual std::size_t numberOfPlaybackChannels() const = 0;
86 
90  virtual std::size_t period() const = 0;
91 
95  virtual std::size_t samplingFrequency() const = 0;
96 
97  virtual bool registerCallback( AudioCallback callbackPtr, void* userData ) = 0;
98 
99  virtual bool unregisterCallback( AudioCallback callbackPtr ) = 0;
100 
106  virtual void start() = 0;
107 
112  virtual void stop() = 0;
113 };
114 
115 } // namespace audiointerfaces
116 } // namespace visr
117 
118 #endif // #ifndef VISR_LIBRRL_AUDIO_INTERFACE_HPP_INCLUDED
SampleRateType sampleRate() const
Definition: audio_interface.hpp:46
Definition: audio_interface.hpp:19
float InternalSampleType
note: the internal sample type should be of no concern to the abstract interface. ...
Definition: audio_interface.hpp:62
Definition: options.cpp:10
std::size_t numCaptureChannels() const
Definition: audio_interface.hpp:44
void(*)(void *, ExternalSampleType const *const *, ExternalSampleType *const *, bool &) AudioCallback
Definition: audio_interface.hpp:75
std::size_t numPlaybackChannels() const
Definition: audio_interface.hpp:45
float ExternalSampleType
Preliminary definition of sample types.
Definition: audio_interface.hpp:59
std::size_t SampleRateType
Definition: audio_interface.hpp:27
std::size_t periodSize
Definition: audio_interface_configuration.cpp:62
std::size_t periodSize() const
Definition: audio_interface.hpp:47