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