1

Our streaming media player is an in house C++/DirectShow application and runs on XP and greater.

One of our most widely used streaming codecs is WMV, as it's widely supported.

We've noticed that output from WMV media streams looks different on Windows 7 clients than on Windows XP.

Windows 7 output looks much more pixelated / blocky for WMV streams. An identical stream (coming from a media server) on Windows XP appears much smoother / less pixelated.

The same playback graph is used on both platforms and the same media server is used to encode and stream to both clients.

W7 client has the windows media codec that comes as part of the windows media player application.

Has anyone else noticed this issue, or can anyone comment on what I might check / correct on the Windows 7 platform?

2 Answers2

3

From communication with Chris P, a Microsoft MVP:

The VMR9 renderer on Windows 7 appears not to support the texture smoothing properties, as such all video looks like crap. The only viable solution that I've found is to use the EVR or a custom renderer It doesn't implement any of these features (but gives no error if you enable it):

MixerPref9_BiLinearFiltering, 
MixerPref9_AnisotropicFiltering, 
MixerPref9_PyramidalQuadFiltering, 
MixerPref9_GaussianQuadFiltering

instead it always seems to use MixerPref9_PointFiltering.

  • 1
    You can find VMR9 mixer prefs documented here: http://msdn.microsoft.com/en-us/library/dd407366(VS.85).aspx –  Nov 11 '10 at 08:12
1

The problem of course is not in WMV per se. It's the implementation of the Video Renderer filter that is different in Windows Vista and in Windows 7. And the deeper reason for this is that with Aero turned on there are no overlay surfaces. So you have to search for other means of rendering on Windows 7.

facetus
  • 1,091
  • 6
  • 20
  • can you be more specific? With aero turned on? Are you saying that if the user turns off Aero and reverts to "basic" display mode, "overlay surfaces" will be available? What do you mean by overlay surfaces? Do you suggest trying EVR as an alternative renderer for W7? –  Nov 09 '10 at 19:53
  • 2
    “Surface” is a term originated from DirectDraw. This is a memory chunk with a rectangular piece of video, can be a whole frame, can be a part, can be RGB or even YUV. It can be located in video memory directly or in system memory. “Overlay” means that this surface can be displayed on the top of the main frame buffer and resized by the video card. Usual rendering in XP is just create an overlay surface in YUV format and make the video card convert it to RGB, resize and display it. YUV overlays are impossible with Aero turned on. Yes, you have to consider another renderer or turn off Aero. – facetus Nov 09 '10 at 21:19
  • noxmetus - thanks for your very valuable input. I'll have a look into this issue again later this morning (meetings first...) –  Nov 10 '10 at 08:05
  • To any others looking for answers on this, I also asked the question on the directshow developers forum on msdn: http://social.msdn.microsoft.com/Forums/en/windowsdirectshowdevelopment/thread/c03c1269-7df8-497a-ad84-90a5e1887deb –  Nov 10 '10 at 16:13
  • The VMR9 doesn't use overlay surfaces, so it shouldn't make any difference whether overlay surfaces are available or not. – Paul Groke Feb 05 '13 at 23:37