[mythtv] [PATCH] Workaround for hangs when ffwd/rewinding video

Matt Holgate matt-bulk-mythtv at holgate.org.uk
Tue Sep 26 18:52:45 UTC 2006


Paul Andreassen wrote:

> I've just noticed that I can no longer pause and move frame by frame.

I can't reproduce this myself - frame advance/rewind seem to work fine 
for me.

Does this happen every time? Is there anything useful in the 
mythfrontend log? Were you literally pressing pause then using the fast 
forward/rewind buttons? And are you running 0.20-fixes (I'm not running 
the *very* latest 0.20-fixes, rather one checked out soon after the 
release).

I noticed that there are potentially other race conditions with calls to 
PauseVideo()/UnpauseVideo() - both the StartPlaying() thread and the 
input thread can call these functions, potentially interfering with each 
other. This is especially problematic when we end up in an infinite loop 
(like the case which my patch works around).

My fix was a workaround for one manifestation of this race, but there 
are potentially others (for example, if the user quickly pauses the 
video while the ffwd code is trying to unpause it, we end up in another 
infinite loop):

                   UnpauseVideo();
                     while (GetVideoPause())
                        usleep(1000);


I wonder if we need some extra synchronisation here? I don't know the 
code well enough to comment, but perhaps a reference count and lock on 
the video pause/unpause would help?

thanks in advance for any help with this,
Matt.


More information about the mythtv-dev mailing list