What happens is the mpeg player often blocks to wait the normal priority X to render the frames. Without knowing such dependency between mpeg player and X, the existing Linux scheduler would select other tasks to run and thus results in poor video playback quality. This problem is generally known as priority inversion. You may want to check out ``what really happened on Mars'' to get a better idea of how serious the priority inversion problem can be.
Certainly, this very problem can be solved by setting the priority of X to nice -10 (like what Redhat etc. does). However, inter-process communication mechanisms like pipe, socket and signal etc. are widely used in modern applications, and thus the inter-process dependencies are everywhere in today's computer systems. It's not possible for a system administrator to find out all the dependencies and set the priorities properly. Obviously, we need a system that can dynamically detects the dependencies among the tasks and take the dependency information into account when scheduling. swap-sched is such a system.