[mythtv] FW: [mythtv-users] CVS mythfrontend hangs uponentering"watch recordings" Problem with framesPlayed?

Shane Shrybman shrybman at aei.ca
Sun Dec 5 18:23:15 UTC 2004


On Sat, 2004-12-04 at 13:13, Asher Schaffer wrote:
> Any idea when this problem got introduced?  I'm reverting to 11/29 CVS
> right now, hope it isn't in there, as right now watching recorded
> shows is unuseable.
> 
> ______________________________________________________________________
Ok, I might have narrowed this down a bit but I need help. I think the
problem is with a improperly shared variable "framesPlayed" in
NuppleVideoPlayer.cpp.

bool NuppelVideoPlayer::DoFastForward(void)
{
    long long number = fftime - 1;
    long long desiredFrame = framesPlayed + number;

    if (paused && !editmode)
        decoder->setExactSeeks(true);
    decoder->DoFastForward(desiredFrame);
    decoder->setExactSeeks(exactseeks);

    ClearAfterSeek();
    return true;
}

I am guessing the problem occurs when the backend is recording and we
try to generate a preview image because framesPlayed is being updated by
the by the recording process and is also being used by
NuppelVideoPlayer::GetScreenGrab calling DoFastForward. This results in
the desiredFrame being waaay to big and looping to death in
DecoderBase::DoFastForward at this point:

while (desiredFrame > last_frame)
    {
        needflush = true;
        
        exitafterdecoded = true;
        GetFrame(-1);
        exitafterdecoded = false;

        if (!m_positionMap.empty())
            last_frame =
m_positionMap[m_positionMap.size()-1].index*                                                             keyframedist;         
        if (ateof)
            return false;
    }

This is my first experience with C++. So can anyone confirm or deny this
analysis? Possible solutions?

Regards,

Shane



More information about the mythtv-dev mailing list