Log in

View Full Version : S/PDIF pass-through doesn't work with USB audio


eXistenZ_69
18th November 2004, 10:55
Hello,

I've a Xitel Pro Hifi-Link USB audio device and I've serious trouble getting the S/PDIF pass-through to work. Normal sound output works like a charm. But as soon as I switch any ac3 filter to S/PDIF pass-through Media Player Classic shows an error upon opening of the avi. The error is about not being able to connect a pin in the graph, in other words the error you get when you are missing a codec. After that the file starts playing without audio :(
If I switch the decoding of AC3 back on I have (stereo) sound. So in that case the decoder works. I get no error message then.
I tried the built-in AC3 decoder of Media Player Classic, the AC3 decoder in the latest FFDSHOW and Valex's AC3Filter. Everytime I get the same result, upon switching to S/PDIF pass-through I get that error on opening the file. The MS Media Player 6.4 complains about a missing codec and wants to connect to the net.

I can't figure out what's wrong :confused: Could anyone please be so kind to provide some assistance?


Regards,

eXistenZ_69

eXistenZ_69
19th November 2004, 21:58
I've some more info. MPC shows the following error:

Media Player Classic could not render some of the pins in the graph,
you may not have the needed codecs or filters installed in the system.

The following pin(s) failed to find a connectable filter:

Audio Switcher::Out (4x in dropdown)
===

Stream 1
ffdshow Audio Decoder
Audio Switcher

Media Type 0:
--------------------------
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Audio {73647561-0000-0010-8000-00AA00389B71}
subtype: MEDIASUBTYPE_PCM {00000001-0000-0010-8000-00AA00389B71}
formattype: FORMAT_WaveFormatEx {05589F81-C356-11CE-BF01-00AA0055595A}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 1
cbFormat: 18

WAVEFORMATEX:
wFormatTag: 0x0092
nChannels: 2
nSamplesPerSec: 48000
nAvgBytesPerSec: 192000
nBlockAlign: 4
wBitsPerSample: 16

=

Stream 1
AVI<->AC3/DTS
ffdshow Audio Decoder
Audio Switcher

Media Type 0:
--------------------------
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Audio {73647561-0000-0010-8000-00AA00389B71}
subtype: MEDIASUBTYPE_PCM {00000001-0000-0010-8000-00AA00389B71}
formattype: FORMAT_WaveFormatEx {05589F81-C356-11CE-BF01-00AA0055595A}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 1
cbFormat: 18

WAVEFORMATEX:
wFormatTag: 0x0092
nChannels: 2
nSamplesPerSec: 48000
nAvgBytesPerSec: 192000
nBlockAlign: 4
wBitsPerSample: 16

=

Stream 1
AVI<->AC3/DTS
AC3 Audio Decoder (low merit)
Audio Switcher

Media Type 0:
--------------------------
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Audio {73647561-0000-0010-8000-00AA00389B71}
subtype: MEDIASUBTYPE_PCM {00000001-0000-0010-8000-00AA00389B71}
formattype: FORMAT_WaveFormatEx {05589F81-C356-11CE-BF01-00AA0055595A}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 1
cbFormat: 18

WAVEFORMATEX:
wFormatTag: 0x0092
nChannels: 2
nSamplesPerSec: 48000
nAvgBytesPerSec: 192000
nBlockAlign: 4
wBitsPerSample: 16

=

Stream 1
AC3 Audio Decoder (low merit)
Audio Switcher

Media Type 0:
--------------------------
AM_MEDIA_TYPE:
majortype: MEDIATYPE_Audio {73647561-0000-0010-8000-00AA00389B71}
subtype: MEDIASUBTYPE_PCM {00000001-0000-0010-8000-00AA00389B71}
formattype: FORMAT_WaveFormatEx {05589F81-C356-11CE-BF01-00AA0055595A}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 1
cbFormat: 18

WAVEFORMATEX:
wFormatTag: 0x0092
nChannels: 2
nSamplesPerSec: 48000
nAvgBytesPerSec: 192000
nBlockAlign: 4
wBitsPerSample: 16

eXistenZ_69
22nd November 2004, 09:44
Here's the relevant part of the response I got from the Xitel support team today:

AC3 encoded on a DVD contains flag information that identifies the data stream as a true AC3 content (same with DTS). This is always present on DVD audio which the Pro HiFi-Link is designed to support. With your avi, if the audio material doesn't have any flag data to identify the AC3 audio content, your computer will not port this down the USB as a raw AC3 which will prevent the Pro HiFi-Link from being able to transmit it any further. In order for the AC3 to be ported, it must adhere to the Dolby standard that specifies a flag stream to initiate the controller.

Does this mean that these flags are indeed missing in AC3 tracks muxed in avi's? :confused:

I did some more testing yesterday evening and observed that the error message I get in MPC is only shown when my Pro Hifi Link is connected to my laptop, in other words when it is set as default audio device. When I unplug it so that my internal soundcard is set as default, the movie starts playing without error.
I get the beforementioned error in MPC even when trying to play DVD's. Which is odd since that works in PowerDVD 4 XP (which is included with the Pro Hifi Link).
I tried the new PowerDVD 6 Deluxe with the avi as well, but that gave me the worst result yet. I got some really nasty hissing and chirping noises from my receiver. Hopefully it didn't damage anything...


Please someone help me resolve this mess :(

eXistenZ_69
23rd November 2004, 09:43
After much searching on the web I found the following:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/stream/hh/stream/aud-design_d8d3c176-9bc4-4f53-9f2f-0d66ad614a0c.xml.asp

Microsoft's USBAudio class system driver, usbaudio.sys, does not currently support USB Audio Type III formats with padded AC-3. For more information, see the Universal Serial Bus Device Class Definition for Audio Data Formats specification at the USB Implementers Forum Web site.

USBAudio can accept packed, "raw" AC-3 (as opposed to the padded, AC-3-over-S/PDIF format accepted by the PortCls driver). USBAudio supports the internal format of DirectShow's DVD-splitter filter (see DVD Decoder Support in Windows), which can be connected directly to USBAudio under the control of KsProxy (see Kernel Streaming Proxy). Specifically, the nonpadded AC-3 data range exposed by USBAudio is KSDATAFORMAT_SUBTYPE_AC3_AUDIO, which is the same GUID value as MEDIASUBTYPE_DOLBY_AC3.

USBAudio currently does not support DirectSound playback of non-PCM audio data.

I also looked up the 'wFormatTag: 0x0092' in the error I get. I appears to be the code for padded AC3. Xitel support confimed in another mail that it has to be raw AC3 that is fed to the Pro Hifi Link. So now the big question: how do I get ffdshow, ac3filter, MPC or whatever AC3-capable codec/player to output raw AC3 instead of padded AC3?

DaveId
25th November 2004, 17:56
however i use usb audio (and unfortunately i just let my pc decode with ac3filter) BUT, i know it is possible..
in your sound cards driver control panel (if it exists, if not i have no clue where to turn) there should be a setting for the number and type of speakers to output. mine can be turned to digital, in tandem with ac3filter set to output to sp/dif AND set to WaveOut as default device, it does output ac3 to my reciever.. however, the major downside is i can NOT pause my video as the audio (raw stream mind you) continues to play, and when unpaused the video just jumps to where the video has gotten..
so, it is possible however i end up letting ac3filter do my decoding as changing the driver property to digital dissalows playback of other audio (like via winamp) because it can not format the signal to be digital.
and btw - i think as long as it is dealing with a 5.1 source ac3filter does just as good (if not better) at decoding the audio than my reciever (which is now just a big amplifier).. i guarantee that the sound card does a better job upmixing audio because it uses the SRS-Labs Circle-Surround.. which handles music so much better than dolby (which is designed for movies/television)
dave
btw - i have the m-audio sonica theatre

eXistenZ_69
26th November 2004, 09:42
Hi DaveId,

the Xitel Pro Hifi Link I have connected to my laptop is not a soundcard. It's an audio device that lets me connect other devices analog (via cinch) and digital (via coax and optical). Check it out at http://www.xitel.com/product_phfl.htm
It uses the usb audio driver that comes with windows. That driver doesn't have a control panel. But thanks for trying to help :)