Definition at line 565 of file Walker.h. References Impala::Core::Stream::RgbDataSrc::FrameNr(), Impala::Core::Stream::RgbDataSrc::GotoFrame(), ILOG_DEBUG, ILOG_ERROR, ILOG_INFO, ILOG_NDC_POP, ILOG_NDC_PUSH, and Impala::QuidId(). Referenced by Impala::Application::VidSet::mainVidSet(). 00566 { 00567 if ((mQuids == 0) || (mQuids->Size() == 0)) 00568 { 00569 ILOG_ERROR("DoWalkQuids: no quids loaded"); 00570 return; 00571 } 00572 if (startFile >= mVideoSet->NrFiles()) 00573 { 00574 ILOG_ERROR("DoWalkQuids: startFile out of range"); 00575 return; 00576 } 00577 if (numberFiles == -1) 00578 numberFiles = mVideoSet->NrFiles(); 00579 if (startFile + numberFiles >= mVideoSet->NrFiles()) 00580 numberFiles = mVideoSet->NrFiles() - startFile; 00581 00582 for (size_t l=0 ; l<mListeners.size() ; l++) 00583 { 00584 mListeners[l]->HandleNewWalk(mVideoSet); 00585 mListeners[l]->HandleNewWalk(mVideoSet, mQuidWalkName); 00586 if (mSegmentation) 00587 mListeners[l]->HandleNewWalk(mVideoSet, mSegmentation); 00588 } 00589 ILOG_DEBUG("fileId range = " << startFile << " - " 00590 << startFile+numberFiles); 00591 for (int fileId=startFile ; fileId<startFile+numberFiles ; fileId++) 00592 { 00593 ILOG_DEBUG("fileId = " << fileId); 00594 ILOG_NDC_PUSH("video " << fileId); 00595 int numberQuids = mConfig.numberQuids; 00596 int startQ = mQuids->GetFirstQuidObject(fileId); 00597 int numberQ = mQuids->GetNrQuidsObject(fileId); 00598 if (numberQ == 0) 00599 continue; 00600 00601 int lastQ = startQ + numberQ; 00602 ILOG_INFO("quids are " << startQ << " - " << lastQ << " (nr = " 00603 << numberQ << ")"); 00604 if (mConfig.startQuid < numberQ) 00605 startQ += mConfig.startQuid; 00606 if (numberQuids == -1) 00607 numberQuids = numberQ; 00608 bool done = false; 00609 int qIdx = startQ; 00610 ILOG_DEBUG("processing " << startQ << " - " << lastQ << " (max " 00611 << numberQuids << ")"); 00612 Stream::RgbDataSrc* src = 0; 00613 if (!mConfig.virtualWalk) 00614 src = mVideoSet->GetVideo(fileId); 00615 for (size_t l=0 ; l<mListeners.size() ; l++) 00616 mListeners[l]->HandleNewFile(mVideoSet, fileId, src); 00617 while (!done) 00618 { 00619 ILOG_DEBUG("quidIdx " << qIdx); 00620 Quid quid = mQuids->Get1(qIdx); 00621 if (src) 00622 { 00623 int frameNr = QuidId(quid); 00624 ILOG_DEBUG("GotoFrame " << frameNr); 00625 src->GotoFrame(frameNr); 00626 ILOG_DEBUG("src at " << src->FrameNr()); 00627 } 00628 for (size_t l=0 ; l<mListeners.size() ; l++) 00629 mListeners[l]->HandleNewFrame(mVideoSet, fileId, src); 00630 if (--numberQuids <= 0) 00631 done = true; 00632 if (++qIdx >= lastQ) 00633 done = true; 00634 } 00635 for (size_t l=0 ; l<mListeners.size() ; l++) 00636 mListeners[l]->HandleDoneFile(mVideoSet, fileId, src); 00637 if (src) 00638 delete src; 00639 ILOG_NDC_POP; 00640 } 00641 00642 for (size_t l=0 ; l<mListeners.size() ; l++) 00643 mListeners[l]->HandleDoneWalk(mVideoSet); 00644 }
Here is the call graph for this function:
|