[mythtv-users] AC3 Passthrough Problems - snd_hda_intel users

Matt Redmon mythtv-user at comcast.net
Sun Aug 20 02:01:24 UTC 2006


Any ideas?  If you are making use of the snd_hda_intel driver to deliver
digital surround sound, could you post your asound.conf/.asoundrc,
modprobe.conf, alsa version, etc?

Thanks!

On Mon, 2006-08-14 at 22:34 -0700, Matt Redmon wrote:
> I'm having some problems getting surround sound out of MythTV and into
> my receiver.
> 
> The following command will put out AC3 surround sound audio:
> mplayer -ac hwac3 -ao alsa:device=analog
> 
> If I change the device over to "digital" I get static:
> mplayer -ac hwac3 -ao alsa:device=digital
> 
> Both of the following will put out analog 2-channel audio:
> mplayer -ao alsa:device=analog
> mplayer -ao alsa:device=digital
> But the latter one has static mixed in with the sound
> 
> Neither of the following will work in MythTV when "Pass AC3 To SPDIF" is
> checked:
> ALSA:analog
> ALSA:digital
> 
> But ALSA:analog will work as long as "Pass AC3 To SPDIF" is not checked.
> 
> Xine works just fine for AC3 surround sound.  All I had to do was change
> the speaker arrangement to Passthrough.
> 
> Any idea why both xine and mplayer will work but MythTV won't?
> 
> I have an Intel HDA audio device on my D915PBL motherboard.  All of my
> recordings have AC3 sound.
> 
> Thanks!
> 
> Matt
> 
> 
> 
> 
> 
> 
> My /etc/asound.conf:
> # ALSA configuration file
> 
> ##### USAGE #####
> # Save this file as "~/.asoundrc" (for user-specific sound
> configuration) or
> # "/etc/asound.conf" (for system-wide sound configuration) and specify
> ALSA
> # device names ad described in the next section.
> 
> 
> ##### DEVICE NAMES #####
> # This configuration file defines four devices for use by the user.
> Those
> # devices are "analog", "mixed-analog", "digital", and "mixed-digital".
> The
> # user may also re-define "default" to be identical to one of the
> above-named
> # devices (i.e. to send all sound output to the digital output unless
> otherwise
> # specified).  Use the device names as described below:
> #  - "analog" outputs to the analog output directly and (at least on
> software
> #  sound cards) blocks other audio output.  After playback completes,
> "queued"
> #  sounds are output in sequence.
> #  - "mixed-analog" mixes audio output from multiple programs into the
> analog
> #  output (so you can hear beeps, alerts, and other noises while playing
> back
> #  an audio stream).
> #  - "digital" outputs to the digital output directly.  Since most
> (all?)
> #  digital outputs expect 48kHz PCM audio, this may not work for some
> playback
> #  (i.e. CD's--which are 44.1kHz PCM audio--or 32kHz audio streams from
> TV
> #  recordings, etc.).
> #  - "mixed-digital"
> 
> # All other devices created within this file are used only by the
> configuration
> # file itself and should /not/ be used directly.  In other words, do not
> use
> # the devices "analog-hw", "dmix-analog", "digital-hw", or
> "dmix-digital".
> 
> 
> ##### IMPORTANT #####
> # To make this ALSA configuration file work with your sound card, you
> will need
> # to define the appropriate card and device information for the
> "analog-hw" and
> # "digital-hw" devices below.  You can find the card and device
> information
> # using "aplay -l".
> 
> 
> ##### Configuration File #####
> 
> # Override the default output used by ALSA.  If you do not override the
> # default, your default device is identical to the (unmixed) "analog"
> device
> # shown below.  If you prefer mixed and/or digital output, uncomment the
> # appropriate four lines below (only one slave.pcm line).
> #
> # Note, also, that as of ALSA 1.0.9, "software" sound cards have been
> modified
> # such that their default "default" device is identical to the
> "mixed-analog"
> # device.  Whether using an ALSA version before or after 1.0.9, it does
> no harm
> # and has no affect on performance to redefine the device (even if the
> # redefinition does not change anything).  Also, by using this ALSA
> # configuration file, you once again have access to unmixed analog
> output using
> # the "analog" device.
> pcm.!default {
>   type plug
> ## Uncomment the following to use "mixed-analog" by default
> #  slave.pcm "dmix-analog"
> ## Uncomment the following to use (unmixed) "digital" by default
> #  slave.pcm "digital-hw"
> ## Uncomment the following to use "mixed-digital" by default
>   slave.pcm "dmix-digital"
> }
> 
> # Control device (mixer, etc.) for the card
> ctl.!default {
>   type hw
>   card 0
> }
> 
> # Alias for (converted) analog output on the card
> # - This is identical to the device named "default"--which always exists
> and
> # refers to hw:0,0 (unless overridden)
> # - Therefore, we can specify "hw:0,0", "default", or "analog" to access
> analog
> # output on the card
> # - Note that as of ALSA 1.0.9, "software" sound card definitions
> redefine
> # "default" to do mixing, meaning this device is different from
> "default" and
> # allows playback while blocking other sound sources (until playback
> # completes).
> pcm.analog {
>   type plug
>   slave.pcm "analog-hw"
> }
> 
> # Control device (mixer, etc.) for the card
> ctl.analog {
>   type hw
>   card 0
> }
> 
> # Alias for (converted) mixed analog output on the card
> # - This will accept audio input--regardless of rate--and convert to the
> rate
> # required for the dmix plugin (in this case 48000Hz)
> # - Note that as of ALSA 1.0.9, "software" sound card definitions
> redefine
> # "default" to do mixing, meaning this device is identical to "default"
> for
> # "software" sound cards.
> pcm.mixed-analog {
>   type plug
>   slave.pcm "dmix-analog"
> }
> 
> # Control device (mixer, etc.) for the card
> ctl.mixed-analog {
>   type hw
>   card 0
> }
> 
> # Alias for (converted) digital (S/PDIF) output on the card
> # - This will accept audio input--regardless of rate--and convert to the
> rate
> # required for the S/PDIF hardware (in this case 48000Hz)
> pcm.digital {
>   type plug
>   slave.pcm "digital-hw"
> }
> 
> # Control device (mixer, etc.) for the card
> ctl.digital {
>   type hw
>   card 0
> }
> 
> # Alias for mixed (converted) digital (S/PDIF) output on the card
> #  - This will accept audio input--regardless of rate--and convert to
> the rate
> #  required for the S/PDIF hardware (in this case 48000Hz)
> pcm.mixed-digital {
>   type plug
>   slave.pcm "dmix-digital"
> }
> 
> # Control device (mixer, etc.) for the card
> ctl.mixed-digital {
>   type hw
>   card 0
> }
> 
> # The following devices are not useful by themselves.  They require
> specific
> # rates, channels, and formats.  Therefore, you probably do not want to
> use
> # them directly.  Instead use of of the devices defined above.
> 
> # Alias for analog output on the card
> # Do not use this directly--it requires specific rate, channels, and
> format
> pcm.analog-hw {
>   type hw
>   card 0
>   # The default value for device is 0, so no need to specify
> #  - Uncomment one of the below or create a new "device N" line as
> appropriate
> #    for your sound card or 
> #  device 1
> #  device 4
> }
> 
> # Control device (mixer, etc.) for the card
> ctl.analog-hw {
>   type hw
>   card 0
> }
> 
> # Alias for digital (S/PDIF) output on the card
> # Do not use this directly--it requires specific rate, channels, and
> format
> pcm.digital-hw {
>   type hw
>   card 0
> #  device 1
> #  - Comment out "device 1" above and uncomment one of the below or
> create a
> #    new "device N" line as appropriate for your sound card or 
>   device 2
> #  device 4
> }
> 
> # Control device (mixer, etc.) for the card
> ctl.digital-hw {
>   type hw
>   card 0
> }
> 
> # Direct software mixing plugin for analog output on the card
> # Do not use this directly--it requires specific rate, channels, and
> format
> pcm.dmix-analog {
>   type dmix
>   ipc_key 1234
>   slave {
>     pcm "analog-hw"
>     period_time 0
>     period_size 1024
>     buffer_size 4096
>     rate 48000
>   } 
> }
> 
> # Control device (mixer, etc.) for the card
> ctl.dmix-analog {
>   type hw
>   card 0
> }
> 
> # Direct software mixing plugin for digital (S/PDIF) output on the card
> # Do not use this directly--it requires specific rate, channels, and
> format
> pcm.dmix-digital {
>   type dmix
>   ipc_key 1235
>   slave {
>     pcm "digital-hw"
>     period_time 0
>     period_size 1024
>     buffer_size 4096
>     rate 48000
>   } 
> }
> 
> # Control device (mixer, etc.) for the card
> ctl.dmix-digital {
>   type hw
>   card 0
> }
> 
> -----------------------------------------------
> 
> aplay -l
> **** List of PLAYBACK Hardware Devices ****
> card 0: Intel [HDA Intel], device 0: ALC880 Analog [ALC880 Analog]
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> card 0: Intel [HDA Intel], device 2: ALC880 Digital [ALC880 Digital]
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> 
> -----------------------------------------------
> 
> aplay -L
> PCM list:
> hw {
>         @args.0 CARD
>         @args.1 DEV
>         @args.2 SUBDEV
>         @args.CARD {
>                 type string
>                 default {
>                         @func getenv
>                         vars {
>                                 0 ALSA_PCM_CARD
>                                 1 ALSA_CARD
>                         }
>                         default {
>                                 @func refer
>                                 name 'defaults.pcm.card'
>                         }
>                 }
>         }
>         @args.DEV {
>                 type integer
>                 default {
>                         @func igetenv
>                         vars {
>                                 0 ALSA_PCM_DEVICE
>                         }
>                         default {
>                                 @func refer
>                                 name 'defaults.pcm.device'
>                         }
>                 }
>         }
>         @args.SUBDEV {
>                 type integer
>                 default {
>                         @func refer
>                         name 'defaults.pcm.subdevice'
>                 }
>         }
>         type hw
>         card $CARD
>         device $DEV
>         subdevice $SUBDEV
> }
> plughw {
>         @args.0 CARD
>         @args.1 DEV
>         @args.2 SUBDEV
>         @args.CARD {
>                 type string
>                 default {
>                         @func getenv
>                         vars {
>                                 0 ALSA_PCM_CARD
>                                 1 ALSA_CARD
>                         }
>                         default {
>                                 @func refer
>                                 name 'defaults.pcm.card'
>                         }
>                 }
>         }
>         @args.DEV {
>                 type integer
>                 default {
>                         @func igetenv
>                         vars {
>                                 0 ALSA_PCM_DEVICE
>                         }
>                         default {
>                                 @func refer
>                                 name 'defaults.pcm.device'
>                         }
>                 }
>         }
>         @args.SUBDEV {
>                 type integer
>                 default {
>                         @func refer
>                         name 'defaults.pcm.subdevice'
>                 }
>         }
>         type plug
>         slave.pcm {
>                 type hw
>                 card $CARD
>                 device $DEV
>                 subdevice $SUBDEV
>         }
> }
> plug {
>         @args.0 SLAVE
>         @args.SLAVE {
>                 type string
>         }
>         type plug
>         slave.pcm $SLAVE
> }
> shm {
>         @args.0 SOCKET
>         @args.1 PCM
>         @args.SOCKET {
>                 type string
>         }
>         @args.PCM {
>                 type string
>         }
>         type shm
>         server $SOCKET
>         pcm $PCM
> }
> tee {
>         @args.0 SLAVE
>         @args.1 FILE
>         @args.2 FORMAT
>         @args.SLAVE {
>                 type string
>         }
>         @args.FILE {
>                 type string
>         }
>         @args.FORMAT {
>                 type string
>                 default raw
>         }
>         type file
>         slave.pcm $SLAVE
>         file $FILE
>         format $FORMAT
> }
> file {
>         @args.0 FILE
>         @args.1 FORMAT
>         @args.FILE {
>                 type string
>         }
>         @args.FORMAT {
>                 type string
>                 default raw
>         }
>         type file
>         slave.pcm null
>         file $FILE
>         format $FORMAT
> }
> null {
>         type null
> }
> cards 'cards.pcm'
> front 'cards.pcm.front'
> rear 'cards.pcm.rear'
> center_lfe 'cards.pcm.center_lfe'
> side 'cards.pcm.side'
> surround40 'cards.pcm.surround40'
> surround41 'cards.pcm.surround41'
> surround50 'cards.pcm.surround50'
> surround51 'cards.pcm.surround51'
> surround71 'cards.pcm.surround71'
> iec958 'cards.pcm.iec958'
> spdif 'cards.pcm.iec958'
> modem 'cards.pcm.modem'
> phoneline 'cards.pcm.phoneline'
> dmix 'cards.pcm.dmix'
> dsnoop 'cards.pcm.dsnoop'
> default {
>         type plug
>         slave.pcm dmix-digital
> }
> analog {
>         type plug
>         slave.pcm analog-hw
> }
> mixed-analog {
>         type plug
>         slave.pcm dmix-analog
> }
> digital {
>         type plug
>         slave.pcm digital-hw
> }
> mixed-digital {
>         type plug
>         slave.pcm dmix-digital
> }
> analog-hw {
>         type hw
>         card 0
> }
> digital-hw {
>         type hw
>         card 0
>         device 2
> }
> dmix-analog {
>         type dmix
>         ipc_key 1234
>         slave {
>                 pcm analog-hw
>                 period_time 0
>                 period_size 1024
>                 buffer_size 4096
>                 rate 48000
>         }
> }
> dmix-digital {
>         type dmix
>         ipc_key 1235
>         slave {
>                 pcm digital-hw
>                 period_time 0
>                 period_size 1024
>                 buffer_size 4096
>                 rate 48000
>         }
> }
> 
> -----------------------------------------
> 
> Relevant section of modprobe.conf:
> # ALSA portion
> alias char-major-116 snd
> alias snd-card-0 snd-hda-intel
> # OSS/Free portion
> alias char-major-14 soundcore
> # card #1
> alias sound-service-0-0 snd-mixer-oss
> alias sound-service-0-1 snd-seq-oss
> alias sound-service-0-3 snd-pcm-oss
> alias sound-service-0-8 snd-seq-oss
> alias sound-service-0-12 snd-pcm-oss
> 
> _______________________________________________
> mythtv-users mailing list
> mythtv-users at mythtv.org
> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-users



More information about the mythtv-users mailing list