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

D Richard Felker III dalias at aerifal.cx
Sun Apr 11 23:34:27 CEST 2004


On Fri, Apr 09, 2004 at 05:37:46PM -0700, John Stebbins wrote:
> 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?

Proper hardware should never require a busy loop; it just has a
"switch buffers at next vblank" command you send to the card. Are you
sure you're using the real backend scaler and not a stupid
blitter-based xv port?

Rich




More information about the MPlayer-advusers mailing list