I tried to implement video playback into one of my apps, successfully using VLC. before that I did benchmark which of available players that are supported in .NET is the best, from perspective of cpu/gpu usage. also how easy it is to implement, if too many problems I stray away from it, unless it's really good. After successfully implementing VLC I realized that VLC uses 0.5% GPU usage when video is idle/paused, after video is loaded in player, even when user presses stop to "eject" media, the VLC uses 0.5% of GPU on my system.. I decided to use SuspendThread() from kernel.dll on Windows to suspend all VLC threads, then RestoreThread() to unsuspend them when I need the player, but after some time decided it had too many problems with that approach and it felt janky.. Then I read online why VLC would use 0.5% GPU when it's not rendering anything, and the answer was found on some VLC thread (forum) is that is a good thing, and it should be like that, and.. so it felt "like everything else in the world that's successfull", a superior product with detrimental flaw, in VLC case that is video player with least GPU/CPU usage, with the penalty that the window itself uses 0.5% GPU, so if user likes to leave apps running, like a VLC player with Seinfeld episodes running and minimized for when one wants to watch it, and another VLC with X-Files, and another 1 or 2 with porn, and 1 that is playing song in background, that all will use 2-3% GPU in the background, at all times. After that I had reason to use K-Lite codec pack, which has detrimental flaw of hideous installation process (custom installation, not "install typical", or "full installation" which installs bloat, and adds bunch of registry junk and assigns all known video and other media formats when I want just the codecs)