Over a year ago I put together a quick guide on how to set up Bitstreaming HD Audio using FFDShow. At the time FFDShow was really the only game in town for bitstreaming HD Audio from a PC, but slowly over the past year things have evolved and more solutions have come about. One solution in particular that has been growing in popularity are the LAV Filters, which is a DirectShow Media Splitter and Decoders. Below is a list of some information provided by Nevcairiel, developer of LAV Filters.
State of the project
LAVFSplitter is a multi-format media splitter that uses libavformat (the demuxing library from ffmpeg) to demux all sorts of media files. Note that this list only lists properly tested formats/codecs, many others may just work!
MKV/WebM, AVI, MP4/MOV, MPEG-TS/PS (including basic EVO support), FLV, OGG, and many more that are supported by ffmpeg!
H264, VC-1, MPEG-2, MPEG4-ASP (Divx/Xvid), VP8, MJPEG and many more.
AAC, AC3, DTS(-HD), TrueHD, MP3/MP2, Vorbis, LPCM and more.
VOB, DVB Subs, PGS, SRT, SSA/ASS, Text
Support for opening BluRay playlists (.mpls), as well as the index.bdmv file, which will try to detect the main movie playlist!
BluRay support is still in an early stage, and there are still many improvements and new features planned!
Other Notable Features
- Full Stream switching
- MKV Embedded Fonts
- Audio Bitstreaming (through LAV Audio)
These features will be implemented “soon”, and “when its done”
- Improved BluRay support (Title selection from within the player)
- Audio Up/Downmixing
Features for the much more distant future
These features might make it in one day, no guarantees, no time frame
- BluRay Menu support
- WMV Video streams don’t show any video when connected to a MS DMO decoder. (Thus, WMV will not be registered for yet)
- TrueHD decoding does not work when used in conjunction with the MPC-HC/Gabest MPEG Splitter. This is a bug in the MPC-HC splitter, one that the audio decoders in MPC-HC and ffdshow work around, instead of fixing it in the splitter. I will not do these kinds of hacks.
- DTS Express cannot be bitstreamed and only be decoded when using the ArcSoft DTS Decoder.
Frequently asked Question
Q: DirectVobSub will not load with LAVFSplitter
A: Make sure to use the “DirectVobSub” filter when adding it to the preferred filters list, and NOT “DirectVobSub (auto-loading version)”. The latter will NOT work.
Q: Will there ever be a “LAV Video Decoder”?
A: Its planned – not soon, though.
Q: Will you write a Subtitle Filter?
A: No. Subtitles should be drawn by the renderer onto the finished image, and currently there is no way to make that a custom filter. Plus, me personally, i don’t care much for subs.
Q: Can LAV Audio decode DTS-HD?
A: Kind of. On its own, it cannot. But, LAV Audio supports using the ArcSoft DTS decoder, which allows decoding of full DTS-HD. Just drop the “dtsdecoderdll.dll” from the TMT3/5 Codecs directory into LAV Audio’s directory, and enjoy.
Q: I do not get any audio when using ffdshow as a post processor. What gives?
A: When using ffdshow as post-processor, under some circumstances, you might need to force ffdshow to only use one output format. In this case, i recommend turning off all output formats except one, preferably either 24-bit int or 32-bit float.
So really just to clarify, the LAV Splitter can replace popular splitters such as Haail and the LAV Audio Decoder can replace FFDShow Audio Decoder. One item in particular that I like about the LAV Splitter is that it can filter out and present only forced subtitles. Once again I will be using MPC HC as my player of choice for this setup.
- Windows 7 x32 HTPC w/ Sapphire 5670 GPU connected to Receiver via HDMI
- Onkyo TX-SR906 AVR, 5.1 speaker setup connected to TV via HDMI
- Panasonic Viera TH-58PZ800U Plasma HDTV
- PC running Windows (preferably Windows 7). Either an AMD 5xxx/5xxx GPU, Intel i3/i5 Clarkdale/Sandy Bridge CPU, or NVidia 4xx/5xx GPU (I don’t know off the top of my head specifically which ones support HD Audio). The last requirement is only necessary if you want to bitstream HD Audio.
- A Receiver that can decode the DTS(MA) and TrueHD. Once again, only necessary if you are looking to bitstream HD Audio.
Files to Download:
Setup and Install (keep in mind I am installing/using both the LAV Splitter and LAV Audio):
1. Install LAV Filter:
First thing you may notice is that when you go to install LAV Filter if you do not have Microsoft Visual C++ 2010 SP1 you will be required to install.
With Visual C++ 2010 installed next up is to being the LAV Filters install process.
As with a typical software install you will be asked where you want to install.
Next you will have the option to install the LAV Splitter and/or LAV Audio.
Choose if you would like to create a Start Menu Folder
Assign what file formats you want the LAV Splitter to handle. I just stuck with the default formats.
Now with all the options selected select “Install”
If everything went well you should now be greeted by the typical “Wizard has completed”
2. Setting Up MPC HC:
Open up MPC HC and under View -> Options go to Internal Filters and ensure that any Source Filters you want LAV used for are unchecked (so for my test I made sure Matroska and MPEG PS/TS/PVA were unchecked)
Next up go to Options -> External Filters and add “LAV Splitter”, “LAV Splitter Source”, and “LAV Audio Decoder”, setting them as Prefer.
Double-click on “LAV Splitter” which will bring up the LAV Splitter options. Since I want only forced subtitles delivered I make sure that option is enabled (obviously if you plan on using multiple subtitle streams then you don’t want to enable this option).
Double-click on “LAV Audio Decoder” to set your audio options. This is particularly important if you want to use LAV Audio Decoder to bitstream HD Audio formats.
3. Final Check:
Since for me the goal of using LAV Filters was to get HD Audio bitstream support as well as support for forced subtitles, there are a couple of checks to do to make sure everything is working as expected. First off I like to run Graphstudio while playing a video in MPC HC to confirm that LAV is being used.
Next up is to play one of my movies that contain forced subs (District 9 being my test movie) to confirm that the forced subtitles are being delivered. As you can see below MediaInfo shows six subtitle streams available yet in MPC HC only one subtitle stream (the forced subtitles) are presented.
Of course the last test if to confirm on my Receiver that DTS(MA) and/or TrueHD lights up. Unfortunately I didn’t take a picture but you will have to take my word for it that HD audio was bitstreamed properly
If you happen to be following Nevcairiel most likely you have also come across talk of LAV CUDID and madVR. madVR is a high quality video renderer developed by madshi that many consider to give the best picture quality. The issue is that using madVR you lose DXVA, so it can be a very CPU intensive process. A way around this is using the LAV CUDID Decoder developed by Nevcairiel, which is a high quality hardware decoder. However, the catch is that the LAV CUDID Decoder only works with NVidia GPUs, so Intel or AMD GPU users are out of luck. Right now using NVidia GPU + LAV CUDID + madVR + LAV Filters seems to be the sweet spot when it comes to video playback. However, since I don’t currently own a NVidia GPU I have no way of testing out. Hit up the LAV CUDID and madVR links if you are interested in getting more information.