[Mplayer-advusers] Bug? Anomalous CPU usage when playing HDTV clips.

John Stebbins stebbins at jetheaddev.com
Sat Apr 10 02:37:46 CEST 2004


Some additional info for anyone following this thread.

I got tired of groping in the dark on this, so I horked the
X sources, added some uSec timing measurements and profiled
whats going on for one of the drivers.  I did this on my desktop
machine which is a P4 2.6Ghz with intel i830 integrated graphics.

The color conversion and scaling is indeed being done completely
in hardware as I thought it should be.  The problem turns out
to be in a busy wait loop in the driver.  It appears to be waiting
for a vsync (as someone suggested earlier).  What I see is that 
sometimes, the timing between mplayer & the X driver are just right
so the busy wait finishes within usecs.  Then other times the timing
will get completely wrong and the busy wait will spin for as long
as 14 msec.  This is fairly modal behavior as well.  When the timing
gets short it tends to stay short for a while, and when it gets long
it tends to stay long.  The propensity for the code to get into the
long wait mode seems to increase when mplayer is "working harder".
So high resolutions or high frame rates exaggerates the problem.

This busy wait is disastrous for 720p HD because this format runs
at 60fps which is 16 ms per frame.  When X chews up 14 ms per frame,
that leaves just 2 ms for decoding.  Ouch!

I don't know yet if the radeon driver has exactly the same problem.
I'll be diving into that one next.

I'm not sure what to do about the busy wait.  I don't see an obvious
way to synchronize closely to vsync without waiting.  Any ideas anyone?

John





More information about the MPlayer-advusers mailing list