Definition at line 258 of file StrategyIgnoringNativeIndex.h. References Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Add(), Impala::Core::Stream::Lavc::VideoAccessObject::CurrentFilePosition(), Impala::Core::Stream::Lavc::VideoAccessObject::CurrentPacketFlags(), Impala::Core::Stream::Lavc::VideoAccessObject::CurrentPacketIsVideo(), Impala::Core::Stream::Lavc::VideoAccessObject::CurrentPacketSize(), Impala::Core::Stream::Lavc::VideoAccessObject::DecodeFrame(), Impala::Core::Stream::Lavc::VideoAccessObject::FrameIsKey(), Impala::Core::Stream::Lavc::VideoAccessObject::FrameType(), Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Get2(), Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Get3(), Impala::Core::Table::TableTem< Col1T, Col2T, Col3T, Col4T, Col5T, Col6T, Col7T, Col8T, Col9T >::Get4(), ILOG_DEBUG, ILOG_ERROR, Impala::Core::Stream::Lavc::VideoAccessStrategy::mBadFrameCount, Impala::Core::Stream::Lavc::VideoAccessStrategy::mLeadingBadFrameCount, Impala::Core::Stream::Lavc::VideoAccessStrategy::mPackets, Impala::Core::Stream::Lavc::VideoAccessStrategy::mVao, and Impala::Core::Stream::Lavc::VideoAccessStrategy::ProcessFrame(). Referenced by ScanOnePacket(). 00259 { 00260 const int size = mVao->CurrentPacketSize(); 00261 const int flags = mVao->CurrentPacketFlags(); 00262 const UInt64 posAfterRead = mVao->CurrentFilePosition(); 00263 00264 if (validating) 00265 { 00266 if (mPackets->Get2(packetNr) != size || 00267 mPackets->Get3(packetNr) != flags || 00268 mPackets->Get4(packetNr) != posAfterRead) 00269 { 00270 ILOG_ERROR("Packet " << packetNr << " not reproducable"); 00271 return; 00272 } 00273 } 00274 else 00275 mPackets->Add(packetNr, size, flags, posAfterRead); 00276 00277 if (mVao->CurrentPacketIsVideo()) 00278 { 00279 int frameDecoded = 0; 00280 const int len = mVao->DecodeFrame(&frameDecoded); 00281 00282 // libavcodec's packet flags usage is not clear, 00283 // but this appeared to work out fine: 00284 const bool ignorePacket = (frameDecoded <= 0) && (flags != 0); 00285 00286 if (!ignorePacket) 00287 { 00288 const bool frameValid = (len >= 0 && frameDecoded > 0); 00289 bool frameIsKey = false; 00290 if (frameValid) 00291 { 00292 frameIsKey = (mVao->FrameType() == 'I' && mVao->FrameIsKey()); 00293 } 00294 else 00295 { 00296 ILOG_DEBUG("DecodeFrame() failed (" << frameDecoded << 00297 ") and returned: " << len ); 00298 mBadFrameCount++; 00299 if (mBadFrameCount >= *frameCount) 00300 mLeadingBadFrameCount++; 00301 } 00302 00303 const int frameNr = (*frameCount)++; 00304 ProcessFrame(frameValid, frameIsKey, frameNr, validating); 00305 } 00306 } 00307 }
Here is the call graph for this function:
|