diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-05-20 13:23:26 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-05-20 13:23:26 +0100 |
| commit | 39bc73fe192f932ed6695eb87b19de446e8b4f55 (patch) | |
| tree | 4811b0642b7fcd73206b037da4ffb342e90ce6dc /src/lib/image.cc | |
| parent | bb0a36c3a6bea9cd1ebdde7b8a3a04765e317569 (diff) | |
| parent | 884093edac5f63d26c02d411c73dfb52376ccf8f (diff) | |
Merge master.
Diffstat (limited to 'src/lib/image.cc')
| -rw-r--r-- | src/lib/image.cc | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/lib/image.cc b/src/lib/image.cc index 432cfbd54..d4ec6f99a 100644 --- a/src/lib/image.cc +++ b/src/lib/image.cc @@ -22,6 +22,7 @@ */ #include <iostream> +#include <openssl/md5.h> extern "C" { #include <libswscale/swscale.h> #include <libavutil/pixfmt.h> @@ -40,6 +41,7 @@ using std::min; using std::cout; using std::cerr; using std::list; +using std::stringstream; using boost::shared_ptr; using dcp::Size; @@ -662,3 +664,24 @@ merge (list<PositionImage> images) return PositionImage (merged, all.position ()); } + +string +Image::digest () const +{ + MD5_CTX md5_context; + MD5_Init (&md5_context); + + for (int i = 0; i < components(); ++i) { + MD5_Update (&md5_context, data()[i], line_size()[i]); + } + + 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 (); +} |
