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

virtual void Impala::Core::VideoSet::ExportKeyframes::HandleNewFrame ( VideoSet vs,
int  fileId,
Stream::RgbDataSrc src 
) [inline, virtual]

Arrived at a new frame in a "normal" walk.

Reimplemented from Impala::Core::VideoSet::Listener.

Definition at line 105 of file ExportKeyframes.h.

References Impala::Core::Stream::RgbDataSrc::DataPtr(), Impala::FileNameExt(), Impala::Core::Stream::RgbDataSrc::FrameHeight(), Impala::Core::Stream::RgbDataSrc::FrameNr(), Impala::Core::Stream::RgbDataSrc::FrameWidth(), Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Get1(), Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Get3(), Impala::Core::Database::RawDataSet::GetContainerDirOfFile(), Impala::Core::Database::RawDataSet::GetDatabase(), Impala::Core::Database::RawDataSet::GetFile(), Impala::Core::Database::RawDataSet::GetFilePathImageData(), ILOG_ERROR, mArchive, mBuf, mBufSize, mCurKey, mForcePng, mImList, mImSet, mKeyframes, mScale, mSplitArchive, Impala::Core::Geometry::NEAREST, Impala::Core::Array::Scale(), Impala::StringReplace(), Impala::Core::Array::WriteJpg(), Impala::Core::Array::WriteJpgToMemory(), Impala::Core::Array::WritePng(), and Impala::Core::Array::WritePngToMemory().

00106     {
00107         if ((mKeyframes->Get1(mCurKey) != fileId) ||
00108             (mKeyframes->Get3(mCurKey) != src->FrameNr()))
00109         {
00110             if (mKeyframes->Get1(mCurKey) != fileId)
00111                 ILOG_ERROR("Wrong video: " << fileId << " instead of "
00112                            << mKeyframes->Get1(mCurKey));
00113             if (mKeyframes->Get3(mCurKey) != src->FrameNr())
00114                 ILOG_ERROR("Wrong frame: " << src->FrameNr() << " instead of "
00115                            << mKeyframes->Get3(mCurKey) << " for keyId "
00116                            << mCurKey);
00117             //mCurKey++;
00118             //return;
00119         }
00120         typedef Array::Array2dVec3UInt8 ArrayT;
00121         ArrayT* im = Array::ArrayCreate<ArrayT>
00122             (src->FrameWidth(), src->FrameHeight(), 0, 0, src->DataPtr(), true);
00123         ArrayT* sc = 0;
00124         if (mScale == 1.0)
00125             sc = im;
00126         else
00127             Array::Scale(sc, im, mScale, mScale, Geometry::NEAREST, true);
00128         if (mArchive || mSplitArchive)
00129         {
00130             size_t nrBytes = 0;
00131             String ext = FileNameExt(mImSet->GetFile(mCurKey));
00132             if ((ext == "png") || (mForcePng))
00133                 Array::WritePngToMemory(sc, mBuf, mBufSize, &nrBytes);
00134             else
00135                 Array::WriteJpgToMemory(sc, mBuf, mBufSize, &nrBytes);
00136             Array::Array2dScalarUInt8* data =
00137                 Array::MakeFromData<Array::Array2dScalarUInt8>((UInt8*) mBuf,
00138                                                                nrBytes, 1);
00139             mImList.push_back(data);
00140         }
00141         else
00142         {
00143 #ifndef REPOSITORY_USED // Here comes the deprecated stuff
00144             String fName = mImSet->GetFilePathImageData(mCurKey, true, false);
00145             if (mForcePng) // warning : no protection from override
00146                 fName = StringReplace(fName, ".jpg", ".png");
00147             if (fName.empty())
00148             {
00149                 ILOG_ERROR("Empty filename");
00150             }
00151             else
00152             {
00153                 if (FileNameExt(fName, true) == "jpg")
00154                     Array::WriteJpg(sc, fName, mImSet->GetDatabase());
00155                 else
00156                     Array::WritePng(sc, fName, mImSet->GetDatabase());
00157             }
00158 #else // REPOSITORY_USED
00159             String container = mImSet->GetContainerDirOfFile(mCurKey);
00160             String fName = mImSet->GetFile(mCurKey);
00161             if (mForcePng)
00162                 fName = StringReplace(fName, ".jpg", ".png");
00163             Persistency::ImageLocator loc(vs->GetLocator(), container, fName);
00164             Persistency::ImageRepository().Add(loc, sc);
00165 #endif // REPOSITORY_USED
00166         }
00167         if (sc != im)
00168             delete sc;
00169         delete im;
00170         mCurKey++;
00171     }

Here is the call graph for this function:


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