After reading viewtopic.php?t=2778 I still coudnt get mplayer to play AC3/DTS tracks. Every time it exited with an error
This simple patch for mplayer disables IEC958 initialization within mplayer code.ALSA lib setup.c:548:(add_elem) Cannot obtain info for CTL elem (MIXER,'IEC958 Playback AC97-SPSA',0,0,0):....
Code: Select all
*** MPlayer-1.0pre7/libao2/ao_alsa.c Sun Feb 27 23:06:32 2005
--- MPlayer-1.0pre7_mod/libao2/ao_alsa.c Sat Sep 3 00:55:18 2005
***************
*** 369,389 ****
* 'iec958'
*/
if (format == AF_FORMAT_AC3) {
! unsigned char s[4];
!
! s[0] = IEC958_AES0_NONAUDIO |
! IEC958_AES0_CON_EMPHASIS_NONE;
! s[1] = IEC958_AES1_CON_ORIGINAL |
! IEC958_AES1_CON_PCM_CODER;
! s[2] = 0;
! s[3] = IEC958_AES3_CON_FS_48000;
!
! snprintf(alsa_device, ALSA_DEVICE_SIZE,
! "iec958:{CARD 0 AES0 0x%02x AES1 0x%02x AES2 0x%02x AES3 0x%02x}",
! s[0], s[1], s[2], s[3]);
! device.str = alsa_device;
!
! mp_msg(MSGT_AO,MSGL_V,"alsa-spdif-init: playing AC3, %i channels\n", channels);
}
else
/* in any case for multichannel playback we should select
--- 369,375 ----
* 'iec958'
*/
if (format == AF_FORMAT_AC3) {
! device.str = "default";
}
else
/* in any case for multichannel playback we should select
This was tested on Xbox running 2.6.12(+ xbox-linux.org patch) + alsa 1.0.9b (with ac97 patch) and patched mplayer 1.0pre7.
Just for completness - I'm using /etc/asound.conf found in already mentioned post:
# 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).
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"
}
# Alias for analog output on the nForce2 (hw:0,0)
# - 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 nForce2
pcm.analog {
type plug
slave.pcm "analog-hw"
}
# Control device (mixer, etc.) for the nForce2 card
ctl.analog {
type hw
card 0
}
# Alias for (rate-converted) mixed analog output on the
# nForce2 (hw:0,0)
# - This will accept audio input--regardless of rate--and
# convert to the rate required for the dmix plugin
# (in this case 48000Hz)
pcm.mixed-analog {
type plug
slave.pcm "dmix-analog"
}
# Control device (mixer, etc.) for the nForce2 card
ctl.mixed-analog {
type hw
card 0
}
# Alias for (rate-converted) digital (S/PDIF) output on the
# nForce2 (hw:0,2)
# - 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 nForce2 card
ctl.digital {
type hw
card 0
}
# Alias for mixed (rate-converted) digital (S/PDIF) output on the
# nForce2 (hw:0,2)
# - 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 nForce2 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 nForce2 (hw:0,0)
# 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
}
# Control device (mixer, etc.) for the nForce2 card
ctl.analog-hw {
type hw
card 0
}
# Alias for digital (S/PDIF) output on the nForce2 (hw:0,2)
# Do not use this directly--it requires specific rate,
# channels, and format
pcm.digital-hw {
type hw
card 0
device 2
}
# Control device (mixer, etc.) for the nForce2 card
ctl.digital-hw {
type hw
card 0
}
# Direct software mixing plugin for analog output on
# the nForce2 (hw:0,0)
# 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 nForce2 card
ctl.dmix-analog {
type hw
card 0
}
# Direct software mixing plugin for digital (S/PDIF) output
# on the nForce2 (hw:0,2)
# 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 nForce2 card
ctl.dmix-digital {
type hw
card 0
}