From 5207af6b2da0df19a58db4932811d38526fde51b Mon Sep 17 00:00:00 2001 From: Johns Date: Wed, 4 Jun 2014 19:32:44 +0200 Subject: [PATCH] Fix last commit. --- audio.c | 37 ++++++++++++++++++++++++++++++++++++- audio.h | 3 ++- po/de_DE.po | 2 +- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/audio.c b/audio.c index 78463fb..8746bb5 100644 --- a/audio.c +++ b/audio.c @@ -1,7 +1,7 @@ /// /// @file audio.c @brief Audio module /// -/// Copyright (c) 2009 - 2013 by Johns. All Rights Reserved. +/// Copyright (c) 2009 - 2014 by Johns. All Rights Reserved. /// /// Contributor(s): /// @@ -132,6 +132,7 @@ static const char *AudioModuleName; ///< which audio module to use static const AudioModule *AudioUsedModule = &NoopModule; static const char *AudioPCMDevice; ///< PCM device name static const char *AudioPassthroughDevice; ///< Passthrough device name +static char AudioAppendAES; ///< flag automatic append AES static const char *AudioMixerDevice; ///< mixer device name static const char *AudioMixerChannel; ///< mixer channel name static char AudioDoingInit; ///> flag in init, reduce error @@ -1007,6 +1008,26 @@ static snd_pcm_t *AlsaOpenPCM(int passthrough) Info(_("audio/alsa: using %sdevice '%s'\n"), passthrough ? "pass-through " : "", device); } + // + // for AC3 pass-through try to set the non-audio bit, use AES0=6 + // + if (passthrough && AudioAppendAES) { +#if 0 + // FIXME: not yet finished + char *buf; + const char *s; + int n; + + n = strlen(device); + buf = alloca(n + sizeof(":AES0=6") + 1); + strcpy(buf, device); + if (!(s = strchr(buf, ':'))) { + // no alsa parameters + strcpy(buf + n, ":AES=6"); + } + Debug(3, "audio/alsa: try '%s'\n", buf); +#endif + } // open none blocking; if device is already used, we don't want wait if ((err = snd_pcm_open(&handle, device, SND_PCM_STREAM_PLAYBACK, @@ -2780,6 +2801,20 @@ void AudioSetChannel(const char *channel) AudioMixerChannel = channel; } +/** +** Set automatic AES flag handling. +** +** @param onoff turn setting AES flag on or off +*/ +void AudioSetAutoAES(int onoff) +{ + if (onoff < 0) { + AudioAppendAES ^= 1; + } else { + AudioAppendAES = onoff; + } +} + /** ** Initialize audio output module. ** diff --git a/audio.h b/audio.h index 30fefae..da05575 100644 --- a/audio.h +++ b/audio.h @@ -1,7 +1,7 @@ /// /// @file audio.h @brief Audio module headerfile /// -/// Copyright (c) 2009 - 2013 by Johns. All Rights Reserved. +/// Copyright (c) 2009 - 2014 by Johns. All Rights Reserved. /// /// Contributor(s): /// @@ -52,6 +52,7 @@ extern void AudioSetDevice(const char *); ///< set PCM audio device /// set pass-through device extern void AudioSetPassthroughDevice(const char *); extern void AudioSetChannel(const char *); ///< set mixer channel +extern void AudioSetAutoAES(int); ///< set automatic AES flag handling extern void AudioInit(void); ///< setup audio module extern void AudioExit(void); ///< cleanup and exit audio module diff --git a/po/de_DE.po b/po/de_DE.po index 50f7528..c9246c9 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -607,7 +607,7 @@ msgid " E-AC-3 pass-through" msgstr "" msgid "Enable (E-)AC-3 (decoder) downmix" -msgstr "Aktiviere (E-)AC-3 (decoder) downmix"" +msgstr "Aktiviere (E-)AC-3 (decoder) downmix" msgid "Volume control" msgstr "Lautstärkesteuerung"