Definition at line 498 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(). 00499 { 00500 if ((mQuids == 0) || (mQuids->Size() == 0)) 00501 { 00502 ILOG_ERROR("DoWalkQuids: no quids loaded"); 00503 return; 00504 } 00505 if (startFile >= mVideoSet->NrFiles()) 00506 { 00507 ILOG_ERROR("DoWalkQuids: startFile out of range"); 00508 return; 00509 } 00510 if (numberFiles == -1) 00511 numberFiles = mVideoSet->NrFiles(); 00512 if (startFile + numberFiles >= mVideoSet->NrFiles()) 00513 numberFiles = mVideoSet->NrFiles() - startFile; 00514 00515 for (size_t l=0 ; l<mListeners.size() ; l++) 00516 { 00517 mListeners[l]->HandleNewWalk(mVideoSet); 00518 mListeners[l]->HandleNewWalk(mVideoSet, mQuidWalkName); 00519 if (mSegmentation) 00520 mListeners[l]->HandleNewWalk(mVideoSet, mSegmentation); 00521 } 00522 ILOG_DEBUG("fileId range = " << startFile << " - " 00523 << startFile+numberFiles); 00524 for (int fileId=startFile ; fileId<startFile+numberFiles ; fileId++) 00525 { 00526 ILOG_DEBUG("fileId = " << fileId); 00527 ILOG_NDC_PUSH("video " << fileId); 00528 int numberQuids = mConfig.numberQuids; 00529 int startQ = mQuids->GetFirstQuidObject(fileId); 00530 int numberQ = mQuids->GetNrQuidsObject(fileId); 00531 if (numberQ == 0) 00532 continue; 00533 00534 int lastQ = startQ + numberQ; 00535 ILOG_INFO("quids are " << startQ << " - " << lastQ << " (nr = " 00536 << numberQ << ")"); 00537 if (mConfig.startQuid < numberQ) 00538 startQ += mConfig.startQuid; 00539 if (numberQuids == -1) 00540 numberQuids = numberQ; 00541 bool done = false; 00542 int qIdx = startQ; 00543 ILOG_DEBUG("processing " << startQ << " - " << lastQ << " (max " 00544 << numberQuids << ")"); 00545 Stream::RgbDataSrc* src = 0; 00546 if (!mConfig.virtualWalk) 00547 src = mVideoSet->GetVideo(fileId); 00548 for (size_t l=0 ; l<mListeners.size() ; l++) 00549 mListeners[l]->HandleNewFile(mVideoSet, fileId, src); 00550 while (!done) 00551 { 00552 ILOG_DEBUG("quidIdx " << qIdx); 00553 Quid quid = mQuids->Get1(qIdx); 00554 if (src) 00555 { 00556 int frameNr = QuidId(quid); 00557 ILOG_DEBUG("GotoFrame " << frameNr); 00558 src->GotoFrame(frameNr); 00559 ILOG_DEBUG("src at " << src->FrameNr()); 00560 } 00561 for (size_t l=0 ; l<mListeners.size() ; l++) 00562 mListeners[l]->HandleNewFrame(mVideoSet, fileId, src); 00563 if (--numberQuids <= 0) 00564 done = true; 00565 if (++qIdx >= lastQ) 00566 done = true; 00567 } 00568 for (size_t l=0 ; l<mListeners.size() ; l++) 00569 mListeners[l]->HandleDoneFile(mVideoSet, fileId, src); 00570 if (src) 00571 delete src; 00572 ILOG_NDC_POP; 00573 } 00574 00575 for (size_t l=0 ; l<mListeners.size() ; l++) 00576 mListeners[l]->HandleDoneWalk(mVideoSet); 00577 }
Here is the call graph for this function:
|