1 ///
2 /// LibAO output.
3 /// Audio output support for playing via libao.
4 ///	@file		libaooutput.h - pianod2
5 ///	@author		Perette Barella
6 ///	@date		2015-11-23
7 ///	@copyright	Copyright (c) 2015-2016 Devious Fish. All rights reserved.
8 ///
9 
10 #pragma once
11 
12 #ifndef pianod2_libaooutput_h
13 #define pianod2_libaooutput_h
14 
15 #include <mutex>
16 
17 #include <ao/ao.h>
18 
19 #include "audiooutput.h"
20 
21 namespace Audio {
22     /// Audio output class utilizing libao for output.
23     class LibaoOutput : public Output {
24     private:
25         static std::mutex ao_mutex;
26         ao_device *device = nullptr;
27     public:
28         LibaoOutput (const AudioSettings &settings,
29                      const AudioFormat &format);
30         virtual ~LibaoOutput () override;
31         virtual bool play (void *buffer, unsigned numberOfBytes) override;
32     };
33 }
34 
35 #endif
36