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

void Impala::Core::VideoSet::Walker::DoWalkKeyframes ( int  startFile,
int  numberFiles 
) [inline]

Definition at line 412 of file Walker.h.

References Impala::Core::Stream::RgbDataSrc::FrameNr(), Impala::Core::Stream::RgbDataSrc::GotoFrame(), ILOG_DEBUG, ILOG_ERROR, ILOG_INFO, ILOG_NDC_POP, and ILOG_NDC_PUSH.

Referenced by Impala::Application::VidSet::mainVidSet().

00413     {
00414         if (mKeyframes == 0)
00415         {
00416             ILOG_ERROR("DoWalkKeyframes: no keyframes loaded");
00417             return;
00418         }
00419         if (startFile >= mVideoSet->NrFiles())
00420         {
00421             ILOG_ERROR("DoWalkKeyframes: startFile out of range");
00422             return;
00423         }
00424         if (numberFiles == -1)
00425             numberFiles = mVideoSet->NrFiles();
00426         if (startFile + numberFiles >= mVideoSet->NrFiles())
00427             numberFiles = mVideoSet->NrFiles() - startFile;
00428 
00429         for (size_t l=0 ; l<mListeners.size() ; l++)
00430         {
00431             mListeners[l]->HandleNewWalk(mVideoSet);
00432             mListeners[l]->HandleNewWalk(mVideoSet, "Keyframes");
00433             mListeners[l]->HandleNewWalk(mVideoSet, mKeyframes, mKeyframeMask);
00434             if (mSegmentation)
00435                 mListeners[l]->HandleNewWalk(mVideoSet, mSegmentation);
00436         }
00437         ILOG_DEBUG("fileId range = " << startFile << " - "
00438                    << startFile+numberFiles);
00439         for (int fileId=startFile ; fileId<startFile+numberFiles ; fileId++)
00440         {
00441             ILOG_DEBUG("fileId = " << fileId);
00442             ILOG_NDC_PUSH("video " << fileId);
00443             Stream::RgbDataSrc* src = 0;
00444             if (mConfig.keyframeSrc)
00445                 src = new RgbDataSrcKeyframes(mVideoSet, mKeyframes, fileId);
00446             else if (!mConfig.virtualWalk)
00447                 src = mVideoSet->GetVideo(fileId);
00448             for (size_t l=0 ; l<mListeners.size() ; l++)
00449                 mListeners[l]->HandleNewFile(mVideoSet, fileId, src);
00450             int numberKeyframes = mConfig.numberKeyframes;
00451             int startK = mKeyframes->GetFirstKeyframeVideo(fileId);
00452             int numberK = mKeyframes->GetNrKeyframesVideo(fileId);
00453             int lastK = startK + numberK;
00454             ILOG_INFO("keyframes are " << startK << " - " << lastK << " (nr = "
00455                       << numberK << ")");
00456             if (mConfig.startKeyframe < numberK)
00457                 startK += mConfig.startKeyframe;
00458             if (numberKeyframes == -1)
00459                 numberKeyframes = numberK;
00460             //if (mConfig.startKeyframe + numberKeyframes <= numberK)
00461             //    numberK = numberKeyframes;
00462             //for (int k=startK ; k<startK+numberK ; k++)
00463             bool done = false;
00464             int k = startK;
00465             ILOG_DEBUG("processing " << startK << " - " << lastK << " (max "
00466                       << numberKeyframes << ")");
00467             while (!done)
00468             {
00469                 if ((!mKeyframeMask) || mKeyframeMask[k])
00470                 {
00471                     ILOG_DEBUG("keyframe " << k);
00472                     if (src)
00473                     {
00474                         ILOG_DEBUG("GotoFrame " << mKeyframes->GetFrameNr(k));
00475                         src->GotoFrame(mKeyframes->GetFrameNr(k));
00476                         ILOG_DEBUG("src at " << src->FrameNr());
00477                     }
00478                     for (size_t l=0 ; l<mListeners.size() ; l++)
00479                         mListeners[l]->HandleNewFrame(mVideoSet, fileId, src);
00480                     if (--numberKeyframes <= 0)
00481                         done = true;
00482                 }
00483                 if (++k >= lastK)
00484                     done = true;
00485             }
00486             for (size_t l=0 ; l<mListeners.size() ; l++)
00487                 mListeners[l]->HandleDoneFile(mVideoSet, fileId, src);
00488             if (src)
00489                 delete src;
00490             ILOG_NDC_POP;
00491         }
00492 
00493         for (size_t l=0 ; l<mListeners.size() ; l++)
00494             mListeners[l]->HandleDoneWalk(mVideoSet);
00495     }

Here is the call graph for this function:


Generated on Thu Jan 13 09:22:20 2011 for ImpalaSrc by  doxygen 1.5.1