[mythtv] sound + xvmc + livetv = problem, why?

jd mythdev at penyball.cix.co.uk
Sun Jan 29 22:48:00 UTC 2006


> Anyone have an idea what might be happening here?

Dunno guv? :)

I've been trying to pin this down for a couple of weeks because it's been 
stopping me migrating to SVN for 'live' and I so want the current svn + 
the radio patch.

At the moment I've only a subjective view - fwiw my 2c:-

What seems to be happening is that the audio/video is thrashing in trying 
to get sync - logs showing audio in front/video in front etc. You can get 
lucky in changing back and forth between channels (possibly quiet 
audio/video patch) when the thing will start in sync and stay in sync 
- in my case combined front/backend on an epia 10k running at 20%cpu 
(720x576 no HD signal on UK freeview)

More often it starts out of sync and stays out- when its out of sync and 
thrashing cpu is maxed out. (pausing sometimes fixes it)   So its sort of 
self perpetuating, catchup seems to need cpu cycles which are not there - 
and the catchup goes too far anyway.

With this viewpoint I'd bumped the ringbuffer cache and added the EIT 
caching patches - these freed up some cpu and made it more likely that a 
channel change would solve the problem - but not reliably. Of course 
compiling with debug makes the problem more visible!  (Actually 8675 with 
the EIT cache patch was usable - but current (8765) isn't)

I'vd been trying to understand the sync algorithm - but haven't got there 
yet :( - I thought I'd solved it with the change below when I realised 
avsync_adjustment could be +ve/-ve

{{{
Index: mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (revision 8766)
+++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (working copy)
@@ -1625,7 +1625,9 @@
         if (buffer)
             videoOutput->PrepareFrame(buffer, ps);

-        videosync->WaitForFrame(avsync_adjustment);
+        if ( avsync_adjustment >= 0 )
+            videosync->WaitForFrame(avsync_adjustment);
+
         if (!resetvideo)
             videoOutput->Show(m_scan);
}}}

However whilst this gives me relatively reliable startup the stuttering 
starts after 30-40s or so.

(All this on 2.6.14, UK-PAL, EPIA 10k,bttv & ttusb_dec drivers)

cheers & good luck
jim






More information about the mythtv-dev mailing list