[mythtv-users] ALSA 1.0.25 and broken AC3 passthrough?

Jean-Yves Avenard jyavenard at gmail.com
Sun Feb 12 10:32:46 UTC 2012


Hi

On 8 February 2012 03:49, Steven Adeff <adeffs.mythtv at gmail.com> wrote:

> I have a non-release version of 1.0.25 on two Ubuntu machines, built
> from source, in order to get hdmi audio working, both use
> ALSA:hdmi:CARD=NVidia,DEV=0
> for the audio device setting in Myth, neither have AC3 or DTS working,
> I have Myth decode the audio and send as 5.1PCM to a receiver.
>
> it has been this way for a while. I assumed an issue with 1.0.25 and
> hoped it would get fixed by the time it was fully released. Since it
> worked I've never updated the kernel or alsa on either machine. I was
> going to though now that it is final, but now probably not, unless a
> fix is known.
>


Getting the source code of alsa-drivers 1.0.25 from the tar.gz
archive, try the following patch:
--- pci/hda/hda_intel.c.orig	2012-02-12 21:29:23.596778126 +1100
+++ pci/hda/hda_intel.c	2012-02-12 21:29:43.646765411 +1100
@@ -2815,8 +2815,8 @@
 	}

 	/* disable buffer size rounding to 128-byte multiples if supported */
-	if (chip->driver_caps & AZX_DCAPS_BUFSIZE)
-		align_buffer_size = 0;
+//	if (chip->driver_caps & AZX_DCAPS_BUFSIZE)
+//		align_buffer_size = 0;

 	/* allow 64bit DMA address if supported by H/W */
 	if ((gcap & ICH6_GCAP_64OK) && !pci_set_dma_mask(pci, DMA_BIT_MASK(64)))

if compiling from git in alsa-kmirror the patch is:
diff --git a/pci/hda/hda_intel.c b/pci/hda/hda_intel.c
index 9cbde2f..9227389 100644
--- a/pci/hda/hda_intel.c
+++ b/pci/hda/hda_intel.c
@@ -2773,8 +2773,8 @@ static int __devinit azx_create(struct snd_card *card, str
        }

        /* disable buffer size rounding to 128-byte multiples if supported */
-       if (chip->driver_caps & AZX_DCAPS_BUFSIZE)
-               align_buffer_size = 0;
+//     if (chip->driver_caps & AZX_DCAPS_BUFSIZE)
+//             align_buffer_size = 0;

        /* allow 64bit DMA address if supported by H/W */
        if ((gcap & ICH6_GCAP_64OK) && !pci_set_dma_mask(pci, DMA_BIT_MASK(64)))

This fix digital passthrough in 1.0.25 for me...
Interestingly, the issue is only visible if you set the alsa hardware
buffer size to 4096 (this is the default in ubuntu). With the default
size of 64 or even 1024: it works without the patch..

If you could try with your system, it would be appreciated..

Regards
Jean-Yves


More information about the mythtv-users mailing list