/** \fn writeLegacyIndex */ bool aviIndexOdml::writeLegacyIndex() { // 3-write legacy index uint64_t pos; pos=_masterList->Tell(); ADM_info("Writting legacy index at %" PRIx64"\n",pos); //--- AviListAvi lst("idx1",_masterList->getFile()); lst.Begin(); int n=legacyIndexCount; ADMMemio memIo(4*4); #define ix32(a) memIo.write32(legacyIndex[i].a) uint32_t base=LMovie->TellBegin()+8; // movi tag for(int i=0;i<n;i++) { memIo.reset(); ix32(fcc);ix32(flags);memIo.write32(legacyIndex[i].offset-base);ix32(len); lst.WriteMem (memIo); } lst.End(); delete [] legacyIndex; legacyIndex=NULL; return true; }
// ***************************************************************************** // Main int main(int argc, char* const argv[]) { try { // Handle command line arguments Params params; if (params.getopt(argc, argv)) { params.usage(); return 1; } if (params.help_) { params.help(); return 2; } // Use MemIo to increase test coverage. Exiv2::BasicIo::AutoPtr fileIo(new Exiv2::FileIo(params.read_)); Exiv2::BasicIo::AutoPtr memIo(new Exiv2::MemIo); memIo->transfer(*fileIo); Exiv2::Image::AutoPtr readImg = Exiv2::ImageFactory::open(memIo); assert(readImg.get() != 0); readImg->readMetadata(); Exiv2::Image::AutoPtr writeImg = Exiv2::ImageFactory::open(params.write_); assert(writeImg.get() != 0); if (params.preserve_) writeImg->readMetadata(); if (params.iptc_) { writeImg->setIptcData(readImg->iptcData()); } if (params.exif_) { writeImg->setExifData(readImg->exifData()); } if (params.comment_) { writeImg->setComment(readImg->comment()); } if (params.xmp_) { writeImg->setXmpData(readImg->xmpData()); } try { writeImg->writeMetadata(); } catch (const Exiv2::AnyError&) { std::cerr << params.progname() << ": Could not write metadata to (" << params.write_ << ")\n"; return 8; } return 0; } catch (Exiv2::AnyError& e) { std::cerr << "Caught Exiv2 exception '" << e << "'\n"; return 10; } }
int ImageFactory::getType(const byte* data, long size) { MemIo memIo(data, size); return getType(memIo); }