From 4c45d2563b9c806a24bbebf032a8735474b293d3 Mon Sep 17 00:00:00 2001 From: Abhinav Badola Date: Mon, 1 Oct 2012 22:10:24 +0000 Subject: [PATCH] #813: Corrected a minor size glitche in riffvideo.cpp --- src/asfvideo.cpp | 6 ++++-- src/matroskavideo.cpp | 1 + src/quicktimevideo.cpp | 32 +++++++++++++++++++++++++++----- src/quicktimevideo.hpp | 6 ++++++ src/riffvideo.cpp | 2 +- 5 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/asfvideo.cpp b/src/asfvideo.cpp index 197d8b49..fecb5a26 100644 --- a/src/asfvideo.cpp +++ b/src/asfvideo.cpp @@ -356,10 +356,12 @@ namespace Exiv2 { std::memset(buf.pData_, 0x0, buf.size_); io_->read(buf.pData_, 8); - size = static_cast(getUint64_t(buf)); + size = static_cast(getUint64_t(buf)); - if(tv) + if(tv) { + std::cerr<<"\n"<label_<<"=>"<seek(cur_pos + size, BasicIo::beg); diff --git a/src/matroskavideo.cpp b/src/matroskavideo.cpp index 54409cae..d9cafcb2 100644 --- a/src/matroskavideo.cpp +++ b/src/matroskavideo.cpp @@ -548,6 +548,7 @@ namespace Exiv2 { if (skip && !ignore) return; const uint64_t bufMinSize = 200; + #ifndef SUPPRESS_WARNINGS if (!ignore && size > bufMinSize) { EXV_WARNING << "Size " << size << " of Matroska tag 0x" diff --git a/src/quicktimevideo.cpp b/src/quicktimevideo.cpp index 5a05ad3b..0b82b5e9 100644 --- a/src/quicktimevideo.cpp +++ b/src/quicktimevideo.cpp @@ -535,11 +535,12 @@ namespace Exiv2 { @return Returns true, if Tag is found in the ignoreList[] */ bool dataIgnoreList (Exiv2::DataBuf& buf) { - const char ignoreList[7][5] = { + const char ignoreList[8][5] = { "moov", "mdia", "minf", "dinf", "alis", "stbl", "cmov", + "meta", }; - for(int i = 0 ; i < 7 ; ++i) + for(int i = 0 ; i < 8 ; ++i) if(equalsQTimeTag(buf, ignoreList[i])) return true; @@ -666,7 +667,7 @@ namespace Exiv2 { io_->read(buf.pData_, 4); if(size < 8) return; -// std::cerr<<"\n("<read(buf.pData_, size); if (currentStream_ == Video) @@ -745,7 +749,7 @@ namespace Exiv2 { } else { -// std::cerr<<" Unprocessed"; + std::cerr<<" Unprocessed"; discard(size); } } // QuickTimeVideo::tagDecoder @@ -774,6 +778,24 @@ namespace Exiv2 { io_->seek(cur_pos + size, BasicIo::beg); } // QuickTimeVideo::previewTagDecoder + void QuickTimeVideo::keysTagDecoder(unsigned long size) + { + DataBuf buf(4); + uint64_t cur_pos = io_->tell(); + io_->read(buf.pData_, 4); + xmpData_["Xmp.video.PreviewDate"] = getULong(buf.pData_, bigEndian); + io_->read(buf.pData_, 2); + xmpData_["Xmp.video.PreviewVersion"] = getShort(buf.pData_, bigEndian); + + io_->read(buf.pData_, 4); + if(equalsQTimeTag(buf, "PICT")) + xmpData_["Xmp.video.PreviewAtomType"] = "QuickDraw Picture"; + else + xmpData_["Xmp.video.PreviewAtomType"] = Exiv2::toString(buf.pData_); + + io_->seek(cur_pos + size, BasicIo::beg); + } // QuickTimeVideo::keysTagDecoder + void QuickTimeVideo::trackApertureTagDecoder(unsigned long size) { DataBuf buf(4), buf2(2); @@ -878,7 +900,7 @@ namespace Exiv2 { td = find(userDatatags, Exiv2::toString( buf.pData_)); tv = find(userDataReferencetags, Exiv2::toString( buf.pData_)); -// std::cerr<<" =>("<("<read(buf.pData_, bufMinSize); xmpData_["Xmp.video.Container"] = buf.pData_;