The list of changes appears to be small, but the changes are quite important. Let me add some comments:
(1) External DXVA2 decoders should now work just fine in native mode without needing "copyback". This should improve performance, especially for ATI/AMD users.
(2) DXVA2 scaling uses the GPU hardware/drivers to do image scaling. Scaling is done from NV12 -> NV12, so the GPU has to scale both luma and chroma, but madVR still has to upscale chroma to full resolution afterwards. Unfortunately most GPUs don't support YCbCr 4:4:4 output, so I can't do it any other way. Ok, I could let the GPU convert to 8bit RGB, but we really don't want that because then the GPU does the color conversion, in low bitdepth, without dithering.
Since scaling is done by the GPU hardware/drivers, scaling quality will differ depending on the GPU hardware/drivers. Also I've been told (not sure if it's true) that Intel has dedicated hardware circuits to do the scaling while NVidia and AMD are using pixel shaders instead. So it's possible that the performance benefit on Intel hardware might be bigger than on NVidia/AMD hardware. Please test this and let me know the quality of the scaling algorithms, and the performance compared to madVR scaling algorithms with your GPU. Please also note that the video settings in the GPU control panel may very well affect DXVA2 scaling results.
(3) Custom pixel shaders in MPC-HC should work just fine now with madVR. However, a new MPC-HC build will be necessary. I'll make the necessary changes available to the MPC-HC devs later today. For now I've uploaded a custom MPC-HC build here, so you can start playing with it:
http://madshi.net/mpc-hc.zip
Please note that madVR always runs custom pixel shaders in R'G'B' with black at 16.0/255.0 and white at 235.0/255.0. I'm not sure how EVR/VMR runs custom pixel shaders. Maybe I'll need to adjust this to match EVR/VMR, we'll have to wait and see.
(4) madVR now supports media player color controls (brightness, contrast, saturation and hue). Currently you can't adjust these settings inside of madVR, the media player has to do that, by using the official IVMRMixerControl9 interface.
For brightness and contrast, I'm not using the usual algorithms. The standard GPU brightness control adds a fixed value to every RGB channel, so it increases both the black and white levels by the same amount. The standard GPU contrast control stretches the data, so white and black levels move away from (or nearer to) each other. While these standard GPU controls appear somewhat intuitive, using them means that brightness and contrast fight with each other. When setting up your display, you have to change both all the time and go back and forth.
The madVR brightness control only modifies the white level, but keeps the black level identical. The madVR contrast control only modified the black level, but keeps the white level identical. The name "brightness" somewhat fits to what madVR does, but the "contrast" name doesn't really fit well. It's more like "blackness" or "black level". I decided to implement it this way because I think it makes setting up the displays easier. But this is open for discussion: If you don't like madVR's brightness/contrast behaviour, let me know, maybe we can find a better solution together.
The madVR saturation and hue settings work as usual, however I'm performing the modifications in linear light (which is the only correct way to do saturation/hue adjustments), while the other renderers and GPU drivers usually adjust these things in gamma corrected light.
(5) DXVA2 deinterlacing (and DXVA2 scaling, too) now works with all YCbCr formats which madVR supports, regardless of bitdepth and chroma format. *However*, since all GPUs perform the best deinterlacing only with NV12, madVR automatically converts all YCbCr formats down to NV12, when doing DXVA2 deinterlacing. And madVR does not contain high-quality downconversion routines for this yet. It's a simple round down at the moment. This might be improved in a (far away) future build. For now you might get slightly better quality by letting LAV Video Decoder downconvert to NV12. IIRC nevcairiel has implement some nice downconversion routines with dithering etc...
(6) When using any DXVA2 related functionality with madVR, there's a small blur added to the chroma channel, when using NVidia or Intel hardware. This does not happen with AMD hardware. Currently I've no way to fix this. But it has always been this way and nobody complained until now, so it doesn't seem to be much of a problem. I have it on my to do list to fix this, but it will require a new CUDA version from NVidia and I'll need Sandy Bridge hardware (which I currently don't have) to test a possible fix for Intel.
(7) The new default scaling settings are Lanczos3 AR for image upscaling, Catmull-Rom AR with Linear Light for downscaling and Bilinear for Chroma. I've selected these algorithms with an eye on performance, as well as quality. If your GPU is fast enough, you definitely want to use something better than Bilinear, but for users with slow GPUs the best quality compromise IMHO is to use Bilinear chroma upsampling. Just my personal opinion, of course, and everybody please feel free to disagree. For really fast GPUs my recommended settings now would be Jinc3 AR for both chroma and image upscaling and Catmull-Rom AR with Linear Light for image downscaling.