diff options
| -rw-r--r-- | src/asset.cc | 18 | ||||
| -rw-r--r-- | src/asset.h | 5 | ||||
| -rw-r--r-- | src/picture_asset.cc | 4 | ||||
| -rw-r--r-- | src/sound_asset.cc | 4 |
4 files changed, 22 insertions, 9 deletions
diff --git a/src/asset.cc b/src/asset.cc index 8063603a..de299d34 100644 --- a/src/asset.cc +++ b/src/asset.cc @@ -51,7 +51,7 @@ Asset::write_to_pkl (ostream& s) const s << " <Asset>\n" << " <Id>urn:uuid:" << _uuid << "</Id>\n" << " <AnnotationText>" << _mxf_name << "</AnnotationText>\n" - << " <Hash>" << _digest << "</Hash>\n" + << " <Hash>" << digest() << "</Hash>\n" << " <Size>" << filesystem::file_size(mxf_path()) << "</Size>\n" << " <Type>application/mxf</Type>\n" << " </Asset>\n"; @@ -114,7 +114,7 @@ Asset::equals (shared_ptr<const Asset> other, EqualityFlags flags) const if (flags & MXF_BITWISE) { - if (_digest != other->_digest) { + if (digest() != other->digest()) { notes.push_back ("MXF digests differ"); } @@ -148,3 +148,17 @@ Asset::equals (shared_ptr<const Asset> other, EqualityFlags flags) const return notes; } + +string +Asset::digest () const +{ + if (_digest.empty ()) { + _digest = make_digest (mxf_path().string(), 0); + } + + return _digest; +} + + + + diff --git a/src/asset.h b/src/asset.h index f6d17256..cf161104 100644 --- a/src/asset.h +++ b/src/asset.h @@ -78,6 +78,7 @@ protected: void fill_writer_info (ASDCP::WriterInfo* w) const; boost::filesystem::path mxf_path () const; + std::string digest () const; /** Directory that our MXF file is in */ std::string _directory; @@ -91,8 +92,10 @@ protected: int _length; /** Our UUID */ std::string _uuid; + +private: /** Digest of our MXF */ - std::string _digest; + mutable std::string _digest; }; } diff --git a/src/picture_asset.cc b/src/picture_asset.cc index c3bf39e8..abf9fcd9 100644 --- a/src/picture_asset.cc +++ b/src/picture_asset.cc @@ -74,7 +74,7 @@ PictureAsset::PictureAsset (string directory, string mxf_name, int fps, int leng , _width (width) , _height (height) { - _digest = make_digest (mxf_path().string(), 0); + } string @@ -123,8 +123,6 @@ PictureAsset::construct (sigc::slot<string, int> get_path) if (ASDCP_FAILURE (mxf_writer.Finalize())) { throw MiscError ("error in finalising video MXF"); } - - _digest = make_digest (mxf_path().string(), _progress); } void diff --git a/src/sound_asset.cc b/src/sound_asset.cc index dae66f90..9a738a08 100644 --- a/src/sound_asset.cc +++ b/src/sound_asset.cc @@ -57,7 +57,7 @@ SoundAsset::SoundAsset (string directory, string mxf_name, int fps, int length) : Asset (directory, mxf_name, 0, fps, length) , _channels (0) { - _digest = make_digest (mxf_path().string(), 0); + } string @@ -161,8 +161,6 @@ SoundAsset::construct (sigc::slot<string, Channel> get_path) if (ASDCP_FAILURE (mxf_writer.Finalize())) { throw MiscError ("could not finalise audio MXF"); } - - _digest = make_digest (mxf_path().string(), _progress); } void |
