[mythtv] XvMC VLD Decoding stuttering problems on some videos

Terry Barnaby terry1 at beam.ltd.uk
Mon Sep 25 20:12:28 UTC 2006


Terry Barnaby wrote:
> Terry Barnaby wrote:
>> Stuart Auchterlonie wrote:
>>> On Fri, Sep 22, 2006 at 08:42:29PM +0100, Terry Barnaby wrote:
>>>> Does anyone have any clues on where to look to solve this problem ?
>>>>
>>>>
>>> Right this is interesting
>>>
>>> Working:
>>>> 2006-09-20 07:14:15.557 XvMCSurfaceTypes::find(w 544, h 576, chroma 1, vld 1, idct 0, mpeg2, sub-width 0, sub-height 0, disp, p<= 68, 680 <=p, port, surfNum)
>>> Not working:
>>>> 2006-09-20 07:15:52.405 XvMCSurfaceTypes::find(w 720, h 576, chroma 1, vld 1, idct 0, mpeg2, sub-width 0, sub-height 0, disp, p<= 68, 680 <=p, port, surfNum)
>>> So the difference between the streams is 544x576 vs 720x576.
>>>
>>>
>>> Stuart
>>>
>>> _______________________________________________
>>> mythtv-dev mailing list
>>> mythtv-dev at mythtv.org
>>> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
>> Yes, it is a different resolution. It is probably also from a different 
>> DVB-T channel and so has probably other MPEG differences.
>>
>> I have further tracked this down to the system occasionally taking a 
>> long time (> 200ms) in XvMCPutSlice2(). So this points to the XvMCVLD 
>> library/via X driver/hardware although this does not tally with the fact 
>> that xine plays the same video file fine ...
>>
>> I will investigate a bit further.
>>
>> Terry
>> _______________________________________________
>> mythtv-dev mailing list
>> mythtv-dev at mythtv.org
>> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev
> 
> Hi, got a bit further, it was'nt XvMCPutSlice2() taking > 200ms it was
> the X11L performed as part of X11S. So something has locked the internal
> MytTv XServer lock but not released it ....
> Any ideas ? Will test a bit further.
> 
> Terry
> 
> _______________________________________________
> mythtv-dev mailing list
> mythtv-dev at mythtv.org
> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev

Hi, a bit stuck now.
Basically the X11L lock for XvMCPutSlice2 in VideoOutputXv::DrawSlice 
occasionally take a long time to lock (> 300ms). This causes the video 
output stage to run out of decoded video frames and hence a Prebuffering 
pause.
It looks like the thread holding the lock is doing the XSync in 
VideoOutputXv::Show. However the XSync call never takes longer than a 
few ms and hence should not be holding up the XvMCPutSlice2 for 300ms.
So, could it be that the display output thread (which is running 
real-time ??) is running hard and not letting the decoder thread get a 
look in occasionally ??

Any ideas ??

Terry


More information about the mythtv-dev mailing list