[mythtv] XVideo XvMC VLD broken

Terry Barnaby terry1 at beam.ltd.uk
Fri May 6 06:03:34 UTC 2005


Terry Barnaby wrote:
> Hi Daniel,
> 
> XvMC VLD in a Via M10K box is now working better, but still not right.
> The main problem now is that sometimes channel changes work and
> sometimes they don't.
> I have tracked this down to an issue with the OSD.
> When the channel change fails the code is stuck in
> VideoOutputXv::GetAvailableOSD() in the loop:
>     while (!xvmc_osd_available.size())
>     {
>         xvmc_osd_lock.unlock();
>         usleep(50);
>         xvmc_osd_lock.lock();
>     }
> The error messages from mythfront end are:
>     "Timed out waiting for free video buffers."
> 
> I suspect there is a race hazard between the OSD for the channel
> change and the re-initialisation of the XvMC system in:
> VideoOutputXv::InputChanged().
> 
> I suspect that VideoOutputXv::InputChanged() should close down
> the OSD before doing anything and then re-initialise after deleting
> and re-instating the Video buffers.
> Actually, is it actually necessary to delete and re-create the
> Video buffers (could be done only if frame size has changed) ??
> I actualy removed the deletion and re-creation of the video buffers
> and the channel channes appeared to work Ok then.
> 
> I can look into this a bit more but you might be able to see the
> cause and solution from the information above.
> 
> Terry
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> mythtv-dev mailing list
> mythtv-dev at mythtv.org
> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev

Hi Daniel,

Your OSD fix in CVS has certainly fixed the problem with changing
channels due to the OSD locks. Thanks. Things are much better now.
However I have still had a channel change fail after quite a few
changes. Here is an example where two channel changes worked Ok
and the third failed. On the third case I get a frozen piucture
and heavily stuttery sound.
I will continue to investigate.
In this case the error messages where:


adding pes stream at pid 0x258 with type 2
adding pes stream at pid 0x259 with type 3
closing filter for pid 0x262
closing filter for pid 0x263
2005-05-06 06:58:14.747 Prebuffer wait timed out 10 times.
2005-05-06 06:58:14.837 AvFormatDecoder: Video has changed from 0x0 to 
720x576.
2005-05-06 06:58:16.486 prebuffering pause
2005-05-06 06:58:16.993 prebuffering pause
2005-05-06 06:58:17.149 prebuffering pause
2005-05-06 06:58:17.307 prebuffering pause
2005-05-06 06:58:17.423 prebuffering pause
2005-05-06 06:58:17.485 prebuffering pause
2005-05-06 06:58:17.737 prebuffering pause
2005-05-06 06:58:19.988 ERROR: child     A        is already in available
adding pes stream at pid 0x262 with type 2
adding pes stream at pid 0x263 with type 3
closing filter for pid 0x258
closing filter for pid 0x259
2005-05-06 06:58:21.967 Prebuffer wait timed out 10 times.
2005-05-06 06:58:22.275 AvFormatDecoder: Video has changed from 0x0 to 
720x576.
2005-05-06 06:58:24.727 prebuffering pause
2005-05-06 06:58:24.865 prebuffering pause
2005-05-06 06:58:25.005 prebuffering pause
2005-05-06 06:58:25.145 prebuffering pause
2005-05-06 06:58:25.280 prebuffering pause
2005-05-06 06:58:25.403 prebuffering pause
2005-05-06 06:58:25.447 prebuffering pause
2005-05-06 06:58:25.466 prebuffering pause
2005-05-06 06:58:29.167 ERROR: child      B       is already in available
2005-05-06 06:58:31.148 Prebuffer wait timed out 10 times.
adding pes stream at pid 0x200 with type 2
adding pes stream at pid 0x28a with type 4
closing filter for pid 0x262
closing filter for pid 0x263
2005-05-06 06:58:31.454 AvFormatDecoder: Video has changed from 0x0 to 
704x576.
2005-05-06 06:58:32.598 prebuffering pause
2005-05-06 06:58:34.119 prebuffering pause
2005-05-06 06:58:34.194 prebuffering pause
2005-05-06 06:58:34.278 prebuffering pause
2005-05-06 06:58:34.354 prebuffering pause
2005-05-06 06:58:34.435 prebuffering pause
2005-05-06 06:58:34.505 prebuffering pause
2005-05-06 06:58:34.564 prebuffering pause
2005-05-06 06:58:34.624 prebuffering pause
2005-05-06 06:58:34.626 prebuffering pause
2005-05-06 06:58:34.646 prebuffering pause
2005-05-06 06:58:34.666 prebuffering pause
2005-05-06 06:58:34.686 prebuffering pause
2005-05-06 06:58:34.706 prebuffering pause
2005-05-06 06:58:34.726 prebuffering pause
2005-05-06 06:58:34.746 prebuffering pause
2005-05-06 06:58:34.766 prebuffering pause
2005-05-06 06:58:34.786 prebuffering pause
2005-05-06 06:58:34.806 prebuffering pause
2005-05-06 06:58:34.811 Prebuffer wait timed out 10 times.
2005-05-06 06:58:34.811 Prebuffer wait timed out, and not enough free 
frames. Discarding buffers.
2005-05-06 06:58:34.822 AddInheritence future   C      NOT in used or in 
limbo. AAAddL
2005-05-06 06:58:34.826 prebuffering pause
2005-05-06 06:58:34.838 AddInheritence future   C      NOT in used or in 
limbo. AAAddU
2005-05-06 06:58:34.852 AddInheritence past   C      NOT in used or in 
done. AAAddU
2005-05-06 06:58:34.944 prebuffering pause
2005-05-06 06:58:34.958 GetNextFreeFrame() served a busy frame C. 
Dropping. UUUdAA
2005-05-06 06:58:35.062 prebuffering pause
2005-05-06 06:58:35.066 prebuffering pause
2005-05-06 06:58:35.086 prebuffering pause
2005-05-06 06:58:35.106 prebuffering pause


Terry


More information about the mythtv-dev mailing list