diff options
author | Christian Gmeiner <christian.gmeiner@gmail.com> | 2010-06-26 18:37:28 +0200 |
---|---|---|
committer | Christian Gmeiner <christian.gmeiner@gmail.com> | 2010-06-26 18:37:28 +0200 |
commit | 607a3aef3947e6f8a7dcecce9ac70577bed79096 (patch) | |
tree | 2388436680301f64bcba442906fe720bd25f0d41 | |
parent | 79b78b09954b27a9f005bc32e213964318962aae (diff) | |
download | vdr-plugin-dxr3-607a3aef3947e6f8a7dcecce9ac70577bed79096.tar.gz vdr-plugin-dxr3-607a3aef3947e6f8a7dcecce9ac70577bed79096.tar.bz2 |
alsa: nicer channel switching
-rw-r--r-- | dxr3audio-alsa.c | 13 | ||||
-rw-r--r-- | dxr3audio-alsa.h | 2 |
2 files changed, 13 insertions, 2 deletions
diff --git a/dxr3audio-alsa.c b/dxr3audio-alsa.c index 23af170..9d36df6 100644 --- a/dxr3audio-alsa.c +++ b/dxr3audio-alsa.c @@ -262,10 +262,12 @@ void cAudioAlsa::write(uchar* data, size_t size) void cAudioAlsa::flush() { - int err = snd_pcm_drop(handle); + snd_pcm_nonblock(handle, 0); + int err = snd_pcm_drain(handle); if (err < 0) { esyslog("[dxr3-audio-alsa] failed to pcm_drop: %s", snd_strerror(err)); } + snd_pcm_nonblock(handle, 1); err = snd_pcm_prepare(handle); if (err < 0) { @@ -273,6 +275,15 @@ void cAudioAlsa::flush() } } +void cAudioAlsa::setDigitalAudio(bool on) +{ + if (digitalAudio == on) { + return; + } + + // TODO stub +} + void cAudioAlsa::Xrun() { int res; diff --git a/dxr3audio-alsa.h b/dxr3audio-alsa.h index 81588ab..b07bf79 100644 --- a/dxr3audio-alsa.h +++ b/dxr3audio-alsa.h @@ -37,7 +37,7 @@ public: virtual void setup(int channels, int samplerate); virtual void write(uchar* data, size_t size); virtual void flush(); - virtual void setDigitalAudio(bool on) {} + virtual void setDigitalAudio(bool on); private: snd_pcm_t *handle; |