Enabling Multi-Channel for Other Audio Formats

Aug 11 2009
Dolby Digital  

Enabling Multi-Channel Audio for Other Audio Formats

If you're fortunate enough to have a PC with multi-channel LPCM output enabling full fidelity audio output is easy (and there's not much point in reading the rest of this) but for those using a SPDIF or stereo only HDMI connection getting multi-channel audio working can be challenging.  This guide intends to explain two different options and how to configure each to attain this goal.

TERMS

  • (L)PCM - Uncompressed audio
  • Bitstream - Transmit compressed digital audio over a digital connection to another device (usually an AVR) for decoding
  • Multi-channel - Streams containing more than two (stereo) channels of data (5.1, 7.1, etc)
  • SPDIF - Optical (toslink) or coaxial cable with enough bandwidth for stereo PCM or compressed multi-channel audio
  • HDMI - Digital connection used for audio and video; has enough bandwidth for 7.1 channels of uncompressed audio.  In some implementations audio is restricted (why?) to function like SPDIF

While there are many multi-channel audio codecs around (AC-3, DTS, AAC, WMAPro, and FLAC to name a few) most* AVR will only decode bitstreamed AC-3 and DTS variants, so even though technically possible to send other compressed multi-channel formats to the AVR it won't know what to do with them.  If all your content is one of those formats, like all DVDs and Blue-ray discs which contain either an AC-3 or DTS (and sometimes both) audio track you're all set, just setup AC3Filter in SPDIF mode and you're done.  If on the hand, you have a more diverse collection of multi-channel formats in your collection and you want to enjoy more than stereo sound it is necessary to configure the PC to decode those audio formats to PCM then compress it to a format that can be bitstreamed to the AVR for decoding.

Turning this.

Stereo

Into this.

Dolby Digital

I'm aware of two methods to get this working (ignoring using multi-channel analog connections) over SPDIF; both are DirectShow based so media players using a different framework will need an alternate solution.  Please read both solutions before choosing one.  For simplicity they will presented [for the most part] as if each one was the only one provided.

ReClock


ReClock is a DirectShow audio rendering filter that can be configured on a per application basis to replace the default DirectSound renderer used by most DirectShow based players. While there are many features that make ReClock a really slick addition to any HTPC, we're only going to focus on "Use AC3 encoder for PCM sound" feature here. 

When using ReClock it's important to understand that there are some potential tradeoffs.  Because its original purpose is to synchronize A/V streams for PAL content by correcting the adjusting audio samples, all the audio you feed it should be PCM for it to be processed correctly by the renderer.  Which of course means that all audio formats, even ones that could be bitstreamed, should be decoded on the PC.  For most (including me) this shouldn't be an issue, but it may be for bitstreaming purists.  If you fall into that camp, it will let you configure the renderer to accept SPDIF formats (AC-3, DTS) and they will pass through as-is but it's not recommended.  In some limited testing (a 720p 60fps ATSC and a 1080 24p clip on my TV running at 60Hz) using SPDIF formats seemed to work OK for both AC-3 and DTS.  I couldn't hear any difference between bitstreamed AC-3/DTS, AC-3/DTS that was decoded and rencoded to AC-3, and AC-3/DTS that was decoded and output as multi-channel PCM so ultimately it's up to you.

After installing ReClock open up the "Configure ReClock" application and select "Use AC3 encoder for PCM sound", depending on your preferences select "only with multi channel sources" which will leave stereo PCM untouched.  Note that there are options for forcing ReClock into applications and think about how you would like it to behave.  If you're using SageTV, or another application that allows the renderer to be selected, you can opt to uncheck the box if you want.  I let it replace the default renderer then blacklist applications where I don't want it used.

 Reclock

If you want to try out leaving SPDIF alone, check "Accept SPDIF formats (not recommended)" and they will pass through.  If the option to replace the default renderers is left checked the next time playback is initiated a dialog will appear for the application allowing ReClock to white/black list or defer.

 Reclock

The last step is to configure the difference audio decoder filters that will be used.  It's not practical to walk through every decoder available, so I'm just going to point out how to configure AntiPack.

The MPC-HC Audio Decoder will handle every multi-channel format I'm aware of, including LPCM, except WMAPro which uses an OOTB decoder (note the player must configure the decoder to output high resolution audio for it to work; I know SageTV does this) so we should be covered.  If you're using AC3Filter for AC-3 and DTS leave "Decode AC-3 and DTS" unchecked, and configure the audio decoder exactly as noted below; otherwise check the box and you're done.

Antipack

Go ahead and fire up the AC3Filter page configure the "Main" tab for PCM output (note that "Use SPDIF" is unchecked).

Antipack

And check that PCM is not selected on the "System" tab. 

Antipack

For those who would like to use the bitstreaming option click through to the AntiPack page and follow the instructions for configuring AC3Filter to bitstream. 

Enjoy.

AC3Filter

AC3Filter is a DirectShow audio decoder filter that decodes AC-3, DTS, and MPEG Audio (claims LPCM support, but that appears to be broken).  It also accepts PCM types and can be configured to encode the uncompressed audio to AC-3 for SPDIF bitstreaming.  The main benefit to using AC3Filter over ReClock is that it will not strongly suggest that formats that can be bitstreamed get decoded on the PC first.  The main drawback is that because AC3Filter is a transform filter and not a renderer, it needs to have a very high merit to automattically join graphs and requires the underlying player to use Intelligent Connect at very specific points when building the graph so it can be difficult to make it work consistently in every player.

Setup is pretty easy.  Open the AC3Filter configuration utility as an administrator (we will be changing the merit) or using the AntiPack configuration utility select PreferrerdPlus2 then launch the configuration page. 

Check "Use SPDIF" on the Main tab.

 Ac3 and SPDIF

And passthrough AC3, DTS on the SPDIF tab.

SPDIF

Before moving to the System tab check that "Use AC3 encoder" is checked in the SPDIF options.  Depending on your preference for stereo PCM encoding check "Do not encode stereo PCM".

 AC3 Audio

Then on the System tab, ensure that PCM is selected in the "Use AC3Filter for" section and "Prefer AC3Filter" in the "Filter merit" section before clicking OK.

 AC3 Audio

That's the easy part.  Now you need to figure out how to make your media player of choice always load AC3Filter.  Based on observation it seems most likely to join graphs when the audio decoder is unknown or if the file is simply "Rendered.  If the graph is built explicitly or semi-explictly with prefered filters in place before rendering the output pins, I have not been able to figure out how to make it join.

 

* If you have a Pioneer AVR chances are it supports WMAPro bitstreaming; if you configure Vista to bitstream WMAPro it works just like AC3 & DTS.  MC and WMP will respect this setting without needing to do anything else, but if you use SageTV the client properties file will need to be edited to use the "WMAPro over S/PDIF DMO" for WMAPro audio streams

Website design by Yammm Software
Powered by Drupal