pianod2
multisource multiuser scriptable networked music player
libaooutput.h
Go to the documentation of this file.
1 
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 "audio/audiooutput.h"
20 
21 namespace Audio {
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
Class to abstract away details of audio output system is in use.
Audio output class utilizing libao for output.
Definition: libaooutput.h:23
static std::mutex ao_mutex
Mutex to restrict concurrent calls into libao API.
Definition: libaooutput.h:25
virtual ~LibaoOutput() override
Definition: libaooutput.cpp:97
ao_device * device
Definition: libaooutput.h:26
LibaoOutput(const AudioSettings &settings, const AudioFormat &format)
Open audio output using libAO.
Definition: libaooutput.cpp:29
virtual bool play(void *buffer, unsigned numberOfBytes) override
Play output.
Definition: libaooutput.cpp:92
Base audio output class (abstract).
Definition: audiooutput.h:65
Classes dealing with audio output drivers and decoding/playing audio files.
Definition: audiooutput.cpp:48
Audio format, somewhat ripped off from libao.
Definition: audiooutput.h:29
Audio output device & driver parameters.
Definition: fundamentals.h:52