z
02-14-2007, 10:24 PM
DXVA WMV decoding support:
XP - DirectShow - DXVA 1.0 - unrestricted
XP - WMP (WMFSDK) - DXVA 1.0 - minimum bitrate 1Mbps, maximum framerate 30 fps - "High quality" mode recommended
Vista - DirectShow - DXVA 1.0 - only in VMR7 and VMR9, but not EVR
Vista - WMP (MF) - DXVA 2.0 - unrestricted, uses EVR
Vista - WMP (WMFSDK) - unsupported
WMP doesn't use DirectShow for ASF playback. It uses WM Format SDK (in XP and older) and Media Foundation SDK (in Vista and later).
WMV AP external deinterlacing support:
("external" implies deinterlacing in the renderer - but could be software or hardware, depending on video driver support)
XP - DirectShow - supported only when DXVA decoding is used, otherwise just passes through as is
XP - WMP (WMFSDK) - supported with and without DXVA decoding - "High quality" mode recommended
Vista - DirectShow - supported with and without DXVA decoding
Vista - WMP (MF) - supported with and without DXVA decoding
Vista - WMP (WMFSDK) - supported
The list assumes latest WMP (v11) is installed in all cases! Prior to v11, the WMV decoder really lacked good support for DXVA decoding and interlaced content, so anybody wanting those two features in XP should really consider upgrading their WMP or at least their WMFSDK runtime.
----------------
The postprocessing step needs to be implemented by the video card maker with the rest of the DXVA support. Once the WMV decoder hands off the video samples to the DXVA driver for processing, it's gone and never comes back to the WMV decoder - so any kind of postprocessing, be it deblocking or range expansion, needs to be done by the GPU. I believe the decoder signals the need for deblocking+deringing through the DXVA API, but it's up to the video driver whether they want to respect that or not.
When DXVA support was added to WMP/WMFSDK in v10, it was defined to only kick in for content that truly needed it. The line was drawn at 1 Mbps. In other words, content under 1 Mbps never plays back through DXVA in WMP - regardless of the DXVA setting. Another interesting limitation of the WMFSDK pipeline is that no video content with framerate > 30 fps will play through DXVA.
Neither of these restrictions exist in DirectShow or Media Foundation (Vista WMP).
In general, I'd avoid overlays and always use either VMR7 Mixing Mode ("High Quality mode") or WMR9 in DShow. This will ensure correct AR signaling (if the decoder supports it) in the renderer and highest quality deinterlacing. In fact, I don't think DXVA deinterlacing and DXVA decoding are dependant on each other. I'm pretty sure you can get DXVA deinterlacing without DXVA decoding. Using "High quality mode" in WMP should enable this in WMP - the hardware bobber should kick in for any interlaced WMV content, and you can verify this by checking the framerate in Statistics - it should be doubled.
Unfortunately, a separate limitation in the XP WMV decoder restricts external deinterlacing to WMP/WMFSDK playback path only. Renderer deinterlacing will not work in DirectShow under XP, due to the decoder not exposing VideoInfoHeader2 (needed for interlaced signaling) for compatibility reasons. The restriction does not exist in Vista at all. In other words, if you want good deinterlacing for WMV content in XP - you have to use WMP. We fought a hard battle to get the VideoInfoHeader2 support working correctly in XP, but it didn't make the final cut.
[Only registered and activated users can see links]
XP - DirectShow - DXVA 1.0 - unrestricted
XP - WMP (WMFSDK) - DXVA 1.0 - minimum bitrate 1Mbps, maximum framerate 30 fps - "High quality" mode recommended
Vista - DirectShow - DXVA 1.0 - only in VMR7 and VMR9, but not EVR
Vista - WMP (MF) - DXVA 2.0 - unrestricted, uses EVR
Vista - WMP (WMFSDK) - unsupported
WMP doesn't use DirectShow for ASF playback. It uses WM Format SDK (in XP and older) and Media Foundation SDK (in Vista and later).
WMV AP external deinterlacing support:
("external" implies deinterlacing in the renderer - but could be software or hardware, depending on video driver support)
XP - DirectShow - supported only when DXVA decoding is used, otherwise just passes through as is
XP - WMP (WMFSDK) - supported with and without DXVA decoding - "High quality" mode recommended
Vista - DirectShow - supported with and without DXVA decoding
Vista - WMP (MF) - supported with and without DXVA decoding
Vista - WMP (WMFSDK) - supported
The list assumes latest WMP (v11) is installed in all cases! Prior to v11, the WMV decoder really lacked good support for DXVA decoding and interlaced content, so anybody wanting those two features in XP should really consider upgrading their WMP or at least their WMFSDK runtime.
----------------
The postprocessing step needs to be implemented by the video card maker with the rest of the DXVA support. Once the WMV decoder hands off the video samples to the DXVA driver for processing, it's gone and never comes back to the WMV decoder - so any kind of postprocessing, be it deblocking or range expansion, needs to be done by the GPU. I believe the decoder signals the need for deblocking+deringing through the DXVA API, but it's up to the video driver whether they want to respect that or not.
When DXVA support was added to WMP/WMFSDK in v10, it was defined to only kick in for content that truly needed it. The line was drawn at 1 Mbps. In other words, content under 1 Mbps never plays back through DXVA in WMP - regardless of the DXVA setting. Another interesting limitation of the WMFSDK pipeline is that no video content with framerate > 30 fps will play through DXVA.
Neither of these restrictions exist in DirectShow or Media Foundation (Vista WMP).
In general, I'd avoid overlays and always use either VMR7 Mixing Mode ("High Quality mode") or WMR9 in DShow. This will ensure correct AR signaling (if the decoder supports it) in the renderer and highest quality deinterlacing. In fact, I don't think DXVA deinterlacing and DXVA decoding are dependant on each other. I'm pretty sure you can get DXVA deinterlacing without DXVA decoding. Using "High quality mode" in WMP should enable this in WMP - the hardware bobber should kick in for any interlaced WMV content, and you can verify this by checking the framerate in Statistics - it should be doubled.
Unfortunately, a separate limitation in the XP WMV decoder restricts external deinterlacing to WMP/WMFSDK playback path only. Renderer deinterlacing will not work in DirectShow under XP, due to the decoder not exposing VideoInfoHeader2 (needed for interlaced signaling) for compatibility reasons. The restriction does not exist in Vista at all. In other words, if you want good deinterlacing for WMV content in XP - you have to use WMP. We fought a hard battle to get the VideoInfoHeader2 support working correctly in XP, but it didn't make the final cut.
[Only registered and activated users can see links]