MythTV master
audiooutputoss.h
Go to the documentation of this file.
1#ifndef AUDIOOUTPUTOSS
2#define AUDIOOUTPUTOSS
3
4#if __has_include(<sys/soundcard.h>)
5# include <sys/soundcard.h>
6#elif __has_include(<soundcard.h>)
7# include <soundcard.h>
8#else
9# error attemping to compile OSS support without soundcard.h
10#endif
11
12#include "audiooutputbase.h"
13
15{
16 public:
17 explicit AudioOutputOSS(const AudioSettings &settings);
18 ~AudioOutputOSS() override;
19
20 // Volume control
21 int GetVolumeChannel(int channel) const override; // VolumeBase
22 void SetVolumeChannel(int channel, int volume) override; // VolumeBase
23
24 protected:
25 // You need to implement the following functions
26 bool OpenDevice(void) override; // AudioOutputBase
27 void CloseDevice(void) override; // AudioOutputBase
28 void WriteAudio(unsigned char *aubuf, int size) override; // AudioOutputBase
29 int GetBufferedOnSoundcard(void) const override; // AudioOutputBase
30 AudioOutputSettings* GetOutputSettings(bool digital) override; // AudioOutputBase
31
32 private:
33 void VolumeInit(void);
34 void VolumeCleanup(void);
35
36 void SetFragSize(void);
37
38 int m_audioFd {-1};
39 mutable int m_numBadIoctls {0};
40
41 // Volume related
42 int m_mixerFd {-1};
43 int m_control {SOUND_MIXER_VOLUME};
44};
45
46#endif
47
void WriteAudio(unsigned char *aubuf, int size) override
~AudioOutputOSS() override
int GetVolumeChannel(int channel) const override
void CloseDevice(void) override
int GetBufferedOnSoundcard(void) const override
Return the size in bytes of frames currently in the audio buffer adjusted with the audio playback lat...
void SetFragSize(void)
AudioOutputOSS(const AudioSettings &settings)
bool OpenDevice(void) override
void VolumeInit(void)
void SetVolumeChannel(int channel, int volume) override
AudioOutputSettings * GetOutputSettings(bool digital) override
void VolumeCleanup(void)