HulaLoop
Simple cross-platform audio loopback and recording.
OSAudio.h
1 #ifndef OS_AUDIO
2 #define OS_AUDIO
3 
4 // System
5 #include <stdlib.h>
6 #include <algorithm>
7 #include <vector>
8 #include <thread>
9 #include <iostream>
10 
11 #include "Device.h"
12 #include "ICallback.h"
13 
14 using namespace std;
15 
16 // TODO: Add better public description
21 class OSAudio
22 {
23  protected:
24 
29 
34 
38  vector<ICallback*> callbackList;
39 
43  vector<thread> execThreads;
44 
45  uint32_t captureBufferSize;
46 
47  public:
48  virtual ~OSAudio() = 0;
49 
50  void setBufferSize(uint32_t size);
51 
52  void addBufferReadyCallback(ICallback* c);
53  void removeBufferReadyCallback(ICallback* func);
54 
61  virtual vector<Device*> getInputDevices() = 0;
62 
69  virtual vector<Device*> getOutputDevices() = 0;
70 
74  virtual void capture() = 0;
75 
76  void setActiveRecordDevice(Device* device); //TODO: Make virtual or maybe remove if can combine into one function
77  virtual void setActiveOutputDevice(Device* device) = 0;
78 };
79 
80 #endif
vector< thread > execThreads
List of all running threads.
Definition: OSAudio.h:43
Callback "Interface" used to add and remove to callback list.
Definition: ICallback.h:10
Defines a system audio device.
Definition: Device.h:20
vector< ICallback * > callbackList
List of all added callback function.
Definition: OSAudio.h:38
An abstract class that defines the components of the particular OS specfic classes.
Definition: OSAudio.h:21
Device * activeOutputDevice
The selected output device.
Definition: OSAudio.h:33
Device * activeInputDevice
The selected input device.
Definition: OSAudio.h:28