Daniel Kristjansson wrote:
On Sun, 2005-06-26 at 21:06 +0200, Steven wrote:

Hi,

It been a while since I updated my EPIA-M frontend to CVS but today I did.
I compiled using ./configure --cpu=pentium-mmx --enable-xvmc
and all seems well but there are strange hickups in blackback.
This is in the log :
2005-06-26 20:52:53.265 prebuffering pause
2005-06-26 20:52:59.436 prebuffering pause
2005-06-26 20:53:01.669 prebuffering pause
2005-06-26 20:53:02.237 WriteAudio: buffer underrun
2005-06-26 20:53:02.239 prebuffering pause
2005-06-26 20:53:03.303 prebuffering pause
2005-06-26 20:53:15.209 prebuffering paus

I have xvmc off, xvmc-vld on , bob deint on, extra audio buffering on,
libmpeg2 off, video as timebase on and chmod+s and realtime priority on.

Anyone else seeing these?


I believe there is a patch out there that will up the number of XvMC
buffers when using VLD to 16. That should resolve the problem if you
are only using XvMC w/VLD. I haven't applied it yet because MythTV
should be using 16 buffers already whenever they are available, I
don't want to put in a fix for VLD that will break regular XvMC when
it is VLD is enabled at compile time.

-- Daniel



------------------------------------------------------------------------

_______________________________________________
mythtv-dev mailing list
mythtv-dev@mythtv.org
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
Hi,

Enclosed is the patch. This should only affect XvMC VLD decoding.
As stated it is not ideal. I think that videoout_xv.cpp should
determine how many surfaces the Video driver can support prior
to creating the video buffers and then set the number of
video buffers to this limited to a maximum of 16 ?

Terry
Index: libs/libmythtv/videoout_xv.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/videoout_xv.cpp,v
retrieving revision 1.140
diff -u -r1.140 videoout_xv.cpp
--- libs/libmythtv/videoout_xv.cpp	5 May 2005 16:39:42 -0000	1.140
+++ libs/libmythtv/videoout_xv.cpp	11 May 2005 08:48:00 -0000
@@ -528,11 +528,28 @@
     if (mcodecid > kCodec_NORMAL_END)
     {
         // Create ffmpeg VideoFrames    
-        vbuffers.Init(8 /*numdecode*/, false /*extra_for_pause*/,
-                      1+XVMC_OSD_RES_NUM /*need_free*/,
-                      5-XVMC_OSD_RES_NUM /*needprebuffer_normal*/,
-                      5-XVMC_OSD_RES_NUM /*needprebuffer_small*/,
-                      1 /*keepprebuffer*/, true /*use_frame_locking*/);
+
+	// This is a temprary hack to initialise more buffers for the XvMC
+	// VLD codec. Idealy this should workout how many surfaces the XvMC
+	// implementation has and use an appropriate number of buffers.
+        bool vld, idct, mc;
+        myth2av_codecid(myth_codec_id, vld, idct, mc);
+	
+	if(vld){
+        	vbuffers.Init(16 /*numdecode*/, false /*extra_for_pause*/,
+                	      1+XVMC_OSD_RES_NUM /*need_free*/,
+                	      5-XVMC_OSD_RES_NUM /*needprebuffer_normal*/,
+                	      5-XVMC_OSD_RES_NUM /*needprebuffer_small*/,
+                	      1 /*keepprebuffer*/, true /*use_frame_locking*/);
+	}
+	else {
+        	vbuffers.Init(8 /*numdecode*/, false /*extra_for_pause*/,
+                	      1+XVMC_OSD_RES_NUM /*need_free*/,
+                	      5-XVMC_OSD_RES_NUM /*needprebuffer_normal*/,
+                	      5-XVMC_OSD_RES_NUM /*needprebuffer_small*/,
+                	      1 /*keepprebuffer*/, true /*use_frame_locking*/);
+	}
+
         done = InitXvMC(mcodecid);
 
         if (!done)
_______________________________________________
mythtv-dev mailing list
mythtv-dev@mythtv.org
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev

Reply via email to