Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

bool Impala::Core::Stream::Lavc::VideoAccessStrategy::JumpValidForFrame ( int  frameNr,
const VideoIndex videoIndex 
) const [inline, private]

Attempt a jump to the specified frame using the specified index, and evaluate whether the jump was successfull (i.e.

frame accurate).

Definition at line 680 of file VideoAccessStrategy.h.

References CurrentFrameMatchesFrame(), Impala::Core::Stream::Lavc::VideoAccessObject::CurrentFrameToRgb(), GetJumpFlags(), Impala::Core::Stream::Lavc::VideoIndex::GetSeekInfo(), ILOG_DEBUG, Impala::Core::Stream::Lavc::VideoIndex::IsSeekable(), Jump(), mVao, NextFrameMatchesFrame(), and NrOfFrames().

Referenced by IndexValidTraversingBackwards(), and IndexValidTraversingForwards().

00681     {
00682         int seekableFrame = -1;
00683         UInt64 seekTarget = -1;
00684         videoIndex.GetSeekInfo(frameNr, &seekableFrame, &seekTarget);
00685         static const bool MUST_BE_KEY = true;
00686         const int flushMode = 2; // flush (if applies) after the jump
00687         Jump(seekTarget, GetJumpFlags(), MUST_BE_KEY, flushMode);
00688         mVao->CurrentFrameToRgb();
00689         if (!CurrentFrameMatchesFrame(seekableFrame))
00690         {
00691             ILOG_DEBUG("Index failed for (seekable) frame " << frameNr);
00692             return false;
00693         }
00694         ILOG_DEBUG("Jump validated for (seekable) frame " << frameNr);
00695 
00696         // now read sequentially some frames and validate these as well
00697         bool includedOneSeekable = false;
00698         while (++frameNr < NrOfFrames())
00699         {
00700             if (videoIndex.IsSeekable(frameNr))
00701                 if (includedOneSeekable)
00702                     break;
00703                 else
00704                     includedOneSeekable = true;
00705 
00706             if (!NextFrameMatchesFrame(frameNr, videoIndex))
00707                 return false;
00708         }
00709 
00710         return true;
00711     }

Here is the call graph for this function:


Generated on Fri Mar 19 11:19:01 2010 for ImpalaSrc by  doxygen 1.5.1