summaryrefslogtreecommitdiff
path: root/src/lib/util.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-06-03 14:30:42 +0100
committerCarl Hetherington <cth@carlh.net>2014-06-03 14:30:42 +0100
commitc5b3d91fab31fde4c21e1cc5bb5adb1d6d26fcca (patch)
treea88349c4c4e6e8304d92161529a5ca3dc5271a7b /src/lib/util.cc
parentfd26b3243015824bebe8ec41c6b4a0d81748e81a (diff)
Include audio mapping in the digest used to distinguish different
audio analyses so that the analyses are re-computed when the mapping changes. Reported-by: Matthias Damm
Diffstat (limited to 'src/lib/util.cc')
-rw-r--r--src/lib/util.cc34
1 files changed, 4 insertions, 30 deletions
diff --git a/src/lib/util.cc b/src/lib/util.cc
index a5111b7dc..e81165365 100644
--- a/src/lib/util.cc
+++ b/src/lib/util.cc
@@ -44,7 +44,6 @@
#endif
#include <glib.h>
#include <openjpeg.h>
-#include <openssl/md5.h>
#include <magick/MagickCore.h>
#include <magick/version.h>
#include <libdcp/version.h>
@@ -70,6 +69,7 @@ extern "C" {
#include "job.h"
#include "cross.h"
#include "video_content.h"
+#include "md5_digester.h"
#ifdef DCPOMATIC_WINDOWS
#include "stack.hpp"
#endif
@@ -424,23 +424,6 @@ split_at_spaces_considering_quotes (string s)
return out;
}
-string
-md5_digest (void const * data, int size)
-{
- MD5_CTX md5_context;
- MD5_Init (&md5_context);
- MD5_Update (&md5_context, data, size);
- unsigned char digest[MD5_DIGEST_LENGTH];
- MD5_Final (digest, &md5_context);
-
- stringstream s;
- for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) {
- s << std::hex << std::setfill('0') << std::setw(2) << ((int) digest[i]);
- }
-
- return s.str ();
-}
-
/** @param job Optional job for which to report progress */
string
md5_digest (vector<boost::filesystem::path> files, shared_ptr<Job> job)
@@ -448,8 +431,7 @@ md5_digest (vector<boost::filesystem::path> files, shared_ptr<Job> job)
boost::uintmax_t const buffer_size = 64 * 1024;
char buffer[buffer_size];
- MD5_CTX md5_context;
- MD5_Init (&md5_context);
+ MD5Digester digester;
vector<int64_t> sizes;
for (size_t i = 0; i < files.size(); ++i) {
@@ -468,7 +450,7 @@ md5_digest (vector<boost::filesystem::path> files, shared_ptr<Job> job)
while (remaining > 0) {
int const t = min (remaining, buffer_size);
fread (buffer, 1, t, f);
- MD5_Update (&md5_context, buffer, t);
+ digester.add (buffer, t);
remaining -= t;
if (job) {
@@ -479,15 +461,7 @@ md5_digest (vector<boost::filesystem::path> files, shared_ptr<Job> job)
fclose (f);
}
- unsigned char digest[MD5_DIGEST_LENGTH];
- MD5_Final (digest, &md5_context);
-
- stringstream s;
- for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) {
- s << std::hex << std::setfill('0') << std::setw(2) << ((int) digest[i]);
- }
-
- return s.str ();
+ return digester.get ();
}
static bool