From 4eb8edfa1aea3aa932bcf0f7bb3f626460f58b3c Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 31 Jul 2012 12:54:03 +0100 Subject: Lazy digest building. --- src/asset.cc | 18 ++++++++++++++++-- src/asset.h | 5 ++++- src/picture_asset.cc | 4 +--- src/sound_asset.cc | 4 +--- 4 files changed, 22 insertions(+), 9 deletions(-) (limited to 'src') 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 << " \n" << " urn:uuid:" << _uuid << "\n" << " " << _mxf_name << "\n" - << " " << _digest << "\n" + << " " << digest() << "\n" << " " << filesystem::file_size(mxf_path()) << "\n" << " application/mxf\n" << " \n"; @@ -114,7 +114,7 @@ Asset::equals (shared_ptr 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 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 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 get_path) if (ASDCP_FAILURE (mxf_writer.Finalize())) { throw MiscError ("could not finalise audio MXF"); } - - _digest = make_digest (mxf_path().string(), _progress); } void -- cgit v1.2.3