summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-07-31 12:54:03 +0100
committerCarl Hetherington <cth@carlh.net>2012-07-31 12:54:03 +0100
commit4eb8edfa1aea3aa932bcf0f7bb3f626460f58b3c (patch)
treec4c67c3ece9a1e9bd49a1b7f8f87b0617c46eea8 /src
parente3636c080d3d24471e85f519d69af4c11d5ecbd0 (diff)
Lazy digest building.
Diffstat (limited to 'src')
-rw-r--r--src/asset.cc18
-rw-r--r--src/asset.h5
-rw-r--r--src/picture_asset.cc4
-rw-r--r--src/sound_asset.cc4
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