Do not use soft PCM volume for digital outputs to allow SPDIF AC3 bypass

to work. Soft PCM volume (and vchans) unable to bypass AC3 stream now.
This commit is contained in:
Alexander Motin 2008-11-23 20:19:35 +00:00
parent e6b0bd3a3c
commit 1f925d9161
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=185230

View File

@ -83,7 +83,7 @@
#include "mixer_if.h" #include "mixer_if.h"
#define HDA_DRV_TEST_REV "20081122_0117" #define HDA_DRV_TEST_REV "20081123_0118"
SND_DECLARE_FILE("$FreeBSD$"); SND_DECLARE_FILE("$FreeBSD$");
@ -3549,8 +3549,8 @@ hdac_audio_ctl_ossmixer_init(struct snd_mixer *m)
} }
} }
/* Declare soft PCM and master volume if needed. */ /* Declare soft PCM volume if needed. */
if (pdevinfo->play >= 0) { if (pdevinfo->play >= 0 && !pdevinfo->digital) {
ctl = NULL; ctl = NULL;
if ((mask & SOUND_MASK_PCM) == 0 || if ((mask & SOUND_MASK_PCM) == 0 ||
(devinfo->function.audio.quirks & HDA_QUIRK_SOFTPCMVOL)) { (devinfo->function.audio.quirks & HDA_QUIRK_SOFTPCMVOL)) {
@ -3580,8 +3580,12 @@ hdac_audio_ctl_ossmixer_init(struct snd_mixer *m)
(softpcmvol == 1) ? "Forcing" : "Enabling"); (softpcmvol == 1) ? "Forcing" : "Enabling");
); );
} }
}
if ((mask & SOUND_MASK_VOLUME) == 0) { /* Declare master volume if needed. */
if (pdevinfo->play >= 0) {
if ((mask & (SOUND_MASK_VOLUME | SOUND_MASK_PCM)) ==
SOUND_MASK_PCM) {
mask |= SOUND_MASK_VOLUME; mask |= SOUND_MASK_VOLUME;
mix_setparentchild(m, SOUND_MIXER_VOLUME, mix_setparentchild(m, SOUND_MIXER_VOLUME,
SOUND_MASK_PCM); SOUND_MASK_PCM);