The problem isn’t VLC, or even the drivers; it’s Windows, or to be more specific, Aero.
In Windows XP, the hardware-accelerated overlay surface of the video-card was not used by Windows, and thus was free for programs to use to write data directly to the video card’s output. (Have you ever tried to get a screencap of a video and gotten a black rectangle when you pasted it? That was because you captured the overlay surface, not the actual video.)
In Windows 7, the Aero interface occupies the overlay surface to do its extensive fancy looking graphics and transparencies without slowing the system to a crawl. As a result, other programs cannot use the overlay (most video-cards only have one), and so videos have to resort to using software-rendering (eg using the CPU instead of GPU) to display the video instead. (Presumably, switching the screen into a full-screen mode, an app can use the overlay, though Alt-Tabbing to the desktop would then cause problems or at the least a delay as the video-card’s drivers are switch. Of course this is just theory, I have no actual evidence of programs using hardware-acceleration while Aero is running.)
As you discovered, the software-rendered display looks fairly different from the accelerated display. You also figured out that you can use the Direct-X output module to use acceleration, but that requires disabling Aero. Imran mentioned using OpenGL, but that is also a software-rendered module.
So here’s the scenario when viewing videos in Windows 7. You have a two basic choices:
- Disable Aero and use either a Windows Basic or Windows classic theme, but gain hardware-accelerated video.
- Keep Aero and use OpenGL (or other) output modules in your video player to render them in software. If you pick the default one, it will not look as good, but if you pick one that looks better (eg blending, smoothing, etc.) it will use more CPU.