Guide - HTPC/Gaming setup using NVIDIA GTX 460 for HDMI audio (includes Optimal Video / Audio settings, HD audio bitstreaming, upmixing 2ch/5.1 to 7.1, etc.)
NOTE: There is a document attached here with pictures at the bottom of this post, so please feel free to download that directly if just plain text confuses you too much
Assumptions and target audience:
- Youre looking to use HDMI audio for everything & you have an NVIDIA GPU that supports HD audio bitstreaming (GTX 450, 460, etc.)
- You have a HDMI 1.3a capable A/V receiver calibrated and already setup for 7.1 speakers and you want to maximize usage of all 8 speakers in your HTPC. Im not going to dive into any A/V receiver calibration details (Audyssey, Crossovers, Levels, etc.) or your LCD TV calibration details either
- You dont want to buy PowerDVD or TMT5 to accomplish this, and youd rather do it free
Goal: Setup your HTPC for good video and audio playback; maximize use of your GPU, LCD Display and your A/V receiver using MediaPlayerClassic HomeCinema + ffdshow.
This is going to be a very simple setup using just MPC-HC and ffdshow. There are many ways to accomplish what this guide is going to discuss, but Im just going to focus on this simple setup for most folks whore trying to accomplish this.
Im sure PowerDVD, or TMT5 can do the same job as well (not getting into whether theyre better or worse), and Im also sure there will be many others wholl want to optimize their video codec/decoder settings further according to their taste (ex: use ffdshows advanced filters instead of MPC-HCs built-in decoders), or use other preferred media players as well, but Im going to mostly focus on audio here, while also including some video tips.
S/W used (at the time of writing this article):http://www.xvidvideo.ru/ffdshow-tryo...1-x86-x64.htmlhttp://www.xvidvideo.ru/media-player...-1-4-2727.html
Note: Im using the 32bit versions of both; feel free to experiment with the x64 versions as well
My base PC setup:
Intel Core i5 CPU, Gigabyte P55A-UD3 Board, NVIDIA GTX 460 GPU, Tagan 700W PSU, Intel X25-M 80GB SSD, Seagate 500GB 7200.11x2 RAID-0, etc.
OS: Win-7 64bit; NVIDIA GPU drivers 260.99
My HDMI chain:
NVIDIA GTX 460 GPU
Onkyo TX-SR577 A/V receiver hooked up to 7.1 speakers
LG Scarlet 2.0 32 LCD TV
GPU driver, HDMI audio - OS setup:
1) Un-install all other codecs, media players, codec packs, etc.
2) Please remove all older traces of the GPU driver, and do a clean install of the drivers which installs the GPU/PhysX/Audio drivers, reboot if prompted
3) Open the NVIDIA Control panel; go to Video -> Adjust video image settings -> Set Edge Enhancement to 49%, Noise Reduction to 49% & Enable Use inverse telecine
Note: Im not saying this is the best combination of settings for video playback; this is just what I prefer
4) Go to Windows Control Panel -> Sound; Right click on the NVIDIA HD Audio Controller (sometimes may be replaced by your receivers make/model) and set it as both the Default device, and the Default Communications device
5) While youre still in Control Panel -> Sound; right click on the NVIDIA HD Audio Controller, choose Configure speakers, select 7.1 speakers (use the test tones to ensure everything is playing back ok), hit next, and when you get to the section which reads Select Full range speakers here UN-CHECK all of them i.e. denoting all speakers as SMALL because you have a subwoofer to do all the heavy lifting for bass, moreover your A/V receiver should be correctly setup to take care of all this. Now, if you have full range (as in with a 6 woofer or higher in each) speakers you could choose to denote only those speakers as Full range, but Ive seen inconsistent results, so Im going to stick with my recommendations. Those who disagree are free to experiment/set these options as they prefer.
6) While youre still in Control Panel -> Sound-> double click on your NVIDIA HD Audio device, go to the Enhancements tab and ensure all of them are UN-CHECKED. Then go to the Advanced tab, and set your master sampling rate/default format to 24bit, 48KHz (studio quality) or 24bit, 96KHz (studio quality).
My preference would be 24bit, 48 KHz and there are a couple of reasons why I dont recommend setting this to 24bit, 96 KHz or 24 bit, 192 KHz.
- On some A/V receivers, Audyssey settings (EQ curve, Dynamic EQ) and sometimes technologies like Dolby Prologic IIx / DTS Neo:6 for upmixing - do not work beyond 48 KHz. In my case (Onkyo 577) everything works fine up to 24bit, 96 KHz so this should be a safe setting for many, unless you want to play games.
- When you select 24bit, 96 KHz for example, all resampling from 44.1 KHz or 48 KHz to 96 KHz is done by Microsofts resampler built into the Win7 audio stack. Though this is supposedly decent quality, Ive seen numerous occasions when the music I listen to all the time (mostly rock/metal) actually sounds different (not necessarily better).
- Now coming to gaming, there are numerous instances where many games refuse to work or crash at anything beyond 24bit, 48KHz (ex: there are many reports of Call of Duty series crashing at 24bit, 96KHz). Hence my recommendation to stick to 24bit, 48 KHz for maximum compatibility...
But then, if your regular usage does include high quality 24bit, 96 KHz LPCM or FLAC, then by all means please set to 24/96.
Gaming use case: Most games do 7.1 now
-With this setup, you should have a decent gaming experience, most games today come equipped with multi-channel sound, (yeah, I know a Creative XFI or an ASUS Xonar is better for games which are OpenAL enabled, but not all games are optimized for OpenAL to begin with. Actually, most recent games have very good decent gaming engines which post-process on the CPU with very little CPU usage so the importance of the XFI is diminishing. Moreover you cant do HDMI on an XFI unless you have an Auzentech HomeTheater HD which is a big investment, so). And the number of recent games which can do 7.1 absolutely fine over HDMI are now more than those games just limited upto 5.1, hence the justification of a 7.1 setup.
Audio/Video playback use cases:
The guide is being written to accommodate *most commonly available* audio/video use cases, and may not satisfy all. Heres what I want to accomplish:
a) avi/mp4/mkv/mov files with any video format + 2ch mp3/ aac audio here I like the 2ch audio to be upmixed from 2ch to 7.1 using Dolby Prologic IIx - Movie
b) I mostly listen to mp3s or wmas for music here I like the mp3 audio to be upmixed from 2ch to 7.1 using a stereo matrix (Dolby Prologic IIx Music mode is not punchy enough for me)
c) mov/mp4/mkv files with any video format + AAC 5.1 audio here Id like to upmix 5.1 audio to 7.1 using Dolby Prologic IIx Movie
d) avi/vob/m2ts/mkv files with any video format + Dolby Digital/EX/Plus/True HD or DTS/ES/HR/HD-MA here Id like audio to be bitstreamed to the A/V receiver completely untouched
- here if the audio is 2ch Id like to upmix from 2ch to 7.1 using Dolby Prologic IIx or DTS Neo:6, if the audio is 5.1 Id like to upmix from 5.1 to 7.1 using Dolby Prologic IIx or DTS Neo:6
e) If you need to do BluRay there are many other guides which describe how to use MPC-HC, but if you ask me PowerDVD is best suited for BluRay (especially navigating the menus). Personally, I dont own a BluRay drive, mostly play BluRay rips.
f) 8ch FLAC / LPCM audio should be played back as is (no upmixing or messing around)
Im very sure that I havent covered many other scenarios, but my usage is limited to just thisI do hope this touches most use cases though.
Before we accomplish this, do consider the below:
- When a HDMI audio setup is set to 7.1, all 2ch stereo audio plays through the front speakers only you dont really have options to upmix this to 7.1 in the GPUs HDMI audio controllers available today (I hate Microsofts speaker fill, so Im not considering that) previously with Creative XFI or Asus Xonar you had options to use CMSS-3D/Dolby Prologic IIx/DTS Neo to accomplish the same you dont get these options out of the HDMI audio drivers from GPU
- Similarly, when a HDMI audio setup is set to 7.1, all 5.1 audio plays fine through the designated speakers but then youre wasting your 2 x Surr.back speakers, theyre going to sit idle.
- Remember the goal of using all 8 speakers for most cases? Ok, so heres how I accomplish it:
- Pre-requisite: Install the latest DirectX runtime and VC++ 2010 runtimes from Microsoft
7) Install MPC-HC with default options (recommend selecting reset settings during install), and launch MPC-HC
8) associate your video files to MPC-HC (under player->formats)
9) From the menu, Go to View-> Options -> Under Playback->Output-> and set the following:
a) DirectShow Video -> EVR Custom Pres.
b) Real Media Video & QuickTime Video -> DirectX 9
c) VMR and EVR CP Renderer settings -> Resizer -> Bilinear (PS 2.0)
10) Go to Internal Filters -> and set the following:
a) Source filters tick all of them in the list
b) Transform filters tick all of them in the list
11) Under Transform filters double click on either AAC/AC3/DTS/LPCM/Mpeg Audio and set
a) Output Sample format to 24bit
b) AC3 decoder settings to SPDIF, enable dynamic range control, enable LFE, and set speakers to 3 Front + 2 Rear
c) DTS decoder settings to SPDIF, enable LFE, and set speakers to 3 Front + 2 Rear
d) AAC decoder settings - UNCHECK downmix to stereo
12) Under View-> Renderer settings
a) Under Presentation -> Enable D3D FullScreen GUI Support, 10bit RGB Output, Force 10-bit RGB Input, and Full Floating Point Processing
Most LCD Panels support 10-bit RGB nowadays, and should work fine
b) Under VSync -> Enable the first 3 VSync options
Note: if you see corruption or any rendering issues, then Under View-> Renderer settings -> Reset -> Just choose Reset to default Renderer settings, and youll be ok
MPC-HC settings are done, with this you should be able to play everything fine, Dolby Digital 5.1 or EX & DTS 5.1 or ES audio will bitstream to your A/V receiver.
Also, note that by default, MPC-HC will also bitstream H.264/VC1/Mpeg2 video to your GPU i.e. accelerate it on your GPU.
The above picture is just an example. Note that when video is accelerated on the GPU, the GPU is at a dedicated lower core/shader/mem clocked power state which consumes lesser power (0.91V in my case) than the max core/shader/mem clocked power state designated for gaming (1.025V in my case). With this, youre also offloading stuff from the CPU to the GPU, so your CPU also goes down to a low power state (C1E or C3/C4 if enabled) 0.89V in my case.
But, what we dont get with this setup as is:
a) 2ch audio will remain 2ch audio - > without any upmixing
b) 5.1 audio will remain 5.1 ch audio -> without any upmixing
c) Dolby TrueHD/Plus audio will NOT bitstream to receiver, but MPC-HC will automatically fall back to the decoder to speakers option and even though its set to 3 Front + 2 Rear, you will get proper decoded 7.1 output
d) DTS MA/HR audio will not bitstream to receiver, but the core-DTS track will get bitstreamed out as regular DTS 5.1. If you choose Decode to speakers instead of SPDIF, you will you will get proper decoded 7.1 output
- But if your GPU supports HD audio bitstreaming and your A/V receiver supports it as well, we can cover these scenarios; open MPC-HC, Go to View -> Options -> Internal Filters -> Transform filters and UN-CHECK the following: AAC, AC3, DTS, and Mpeg Audio
We will control these using ffdshow.
13) Install ffdshow with default options until you get to the Speaker Setup page here choose DISABLE mixer
14) After install, launch ffdshows Audio Decoder configuration; here scroll down to Output
a) Under Pass-through (SPDIF, HDMI) tick all the Dolby and DTS formats
b) Under Output format for uncompressed streams
Enable 24bit integer
- Enable AC3 (SPDIF encode mode)
15) Apply, save and quit
Heres what will happen now: whenever you play something over MPC-HC, if there is AAC/AC3/DTS or Mpeg Audio as part of the file, it bypasses MPC-HCs audio filters and passes over controls to ffdshow. The rest are decoded by MPC-HC.
Lets visit our use cases
a) Avi/mp4/mkv/mov files with any video format + 2ch mp3/ aac audio
-> The 2ch mp3/aac will be encoded to a Dolby 2.0 stream on the fly, your windows setup is bypassed, and a Dolby 2.0 stream is bitstreamed to your receiver. Upmix it to 7.1 on your receiver using PL-IIx Movie/Music or DTS Neo: 6
b) I mostly listen to mp3s or wmas for music
-> If you play mp3s through MPC-HC, behavior will be the same as above, upmix to 7.1 on your receiver using Dolby Prologic-IIx Music
-> But my preference is actually to play this in Winamp, and choose All channel stereo on my Onkyo Receiver (known as 7.1 Stereo in the Denons in think) this matrixes stereo sound to all my 8 speakers. Left is copied to LS & LBS, Right is copied to RS & RBS, and Center is mixed with both. If you sit in the middle of your speaker setup, audio is really punchy, and youll still hear stereo spanning from lefts to the rights (though not surround)
- Under Winamps Options-> Playback -> Just remember to enable Allow 24bit, and Allow Surround sound
c) mov/mp4/mkv files with any video format + AAC 5.1 audio
-> The 5.1 AAC audio will be encoded to a Dolby Digital 5.1 stream on the fly, your windows setup is bypassed, and a Dolby 5.1 stream is bitstreamed to your receiver. Upmix it to 7.1 on your receiver using PL-IIx Movie/Music or DTS Neo: 6
-> Now I know there are folks who will state that encoding is lossy and I agree; but note here that youre encoding an already lossy stream (AAC) to a 640kbps DD stream, there wont be any more losses cause its really rare that you see a AAC 5.1 audio encoded over 448kbps, lets alone 640kbps.
d) avi/vob/m2ts/mkv files with any video format + Dolby Digital/EX/Plus/True HD or DTS/ES/HR/HD-MA
- The Dolby flavored 2.0 or 5.1 or 7.1 audio/DTS flavored 2.0 or 5.1 or 7.1 audio completely bypasses your windows setup and is cleanly bitstreamed to the receiver as is
- And yes, Dolby TrueHD and DTS Master audio are bitstreamed flawlessly using this method!!
- If you see a 2ch stream - upmix from 2ch to 7.1 using Dolby Prologic IIx or DTS Neo: 6, if you see a 5.1 stream - upmix from 5.1 to 7.1 using Dolby Prologic IIx or DTS Neo:6 on your receiver
e) If you need to do BluRay.
- Yes, you can play BluRay using MPC-HC, video will be accelerated over the GPU, and DD/DTS audio will be bitstreamed to receiver
f) 8ch FLAC / LPCM audio should be played back as is (no upmixing or messing around)
- This will be decoded as is, because were letting MPC-HC maintain control over these formats, and ffdshow does not interfere
Remember to set your receiver settings for upmixing:
- Whenever you see Dolby flavored 2.0 or 5.1 audio/DTS flavored 2.0 5.1 audio or PCM 2.0/Multichannel 5.1 audio, upmix using Dolby Prologic IIx movie/music or DTS Neo6 cinema/music (depending on what youre playing)
- Note that you can also use Audyssey DSX or similarly THX Cinema/Music for upmixing if your receiver supports it; its your choice
a) In this 7.1 setup, WMV files with 5.1 audio will play as 5.1 without upmixing. I havent found a suitable way to not let the Microsoft WMA/V decoder take precedence over ffdshow for me to encode it into a 5.1 DD stream (like how we do with AAC 5.1)
b) Similarly, 5.1 FLAC or LPCM 5.1 will also play as 5.1. Since these are mostly lossless formats, I wouldnt want to convert this to a lossy 5.1 DD stream ever!
I) if you have an older GPU that just supports 7.1 LPCM, but does not support HD audio bitstreaming, or if you have a receiver that does not support HD audio bitstreaming, then in step 14(a), just dont tick the HD formats TrueHD & DTS HD. Here ffdshow will decode these tracks to 7.1 LPCM over HDMI.
II) If your setup is 7.1, but most of your content is 5.1 (in lieu of 7.1 use cases detailed in the guide above) and you want to also cover the Caveats listed above (WMV/FLAC/LPCM which are 5.1) but if you still want to enjoy 7.1 audio always, then:
a) In step 5, choose 5.1 speakers
b) Between steps 12 and 13, in MPC-HCs Transform filters, do NOT uncheck AAC, leave it enabled because you dont need to encode it to DD 5.1 using ffdshow. Instead, let it be decoded using MPC-HC as 5.1 LPCM over HDMI; and you can apply Dolby Prologic IIx or DTS Neo: 6 on your A/V receiver to upmix a 5.1 Multichannel PCM audio stream to 7.1. Yes, it works absolutely fine as long as the Multichannel PCM data is upto 96KHz (in my Onkyo s case).
Whew! Hope this helps, feel free to post your feedback/comments
HTPC Guide for HDMI audio.doc 208.5k . file