[mythtv-users] AC3 Passthrough Problems

Matt Redmon mythtv-user at comcast.net
Tue Aug 15 05:34:51 UTC 2006


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



More information about the mythtv-users mailing list