summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-08-18 22:11:59 +0100
committerCarl Hetherington <cth@carlh.net>2013-08-18 22:11:59 +0100
commitb89cc774a89867caa97db4b082655569c7d69432 (patch)
tree7a2381e431ac37c1e23752ad5970ded4dd99f56a /src/lib
parente4b30a67b690755a3cd44678bd0671f06af8a36e (diff)
Add colour conversion identifier to video identifier.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/colour_conversion.cc21
-rw-r--r--src/lib/colour_conversion.h1
-rw-r--r--src/lib/video_content.cc3
3 files changed, 24 insertions, 1 deletions
diff --git a/src/lib/colour_conversion.cc b/src/lib/colour_conversion.cc
index cc25ccc67..5f8064dab 100644
--- a/src/lib/colour_conversion.cc
+++ b/src/lib/colour_conversion.cc
@@ -23,6 +23,7 @@
#include <libcxml/cxml.h>
#include "config.h"
#include "colour_conversion.h"
+#include "util.h"
#include "i18n.h"
@@ -116,6 +117,26 @@ ColourConversion::preset () const
return i;
}
+string
+ColourConversion::identifier () const
+{
+ double numbers[12];
+
+ int n = 0;
+ numbers[n++] = input_gamma;
+ numbers[n++] = input_gamma_linearised;
+ for (int i = 0; i < 3; ++i) {
+ for (int j = 0; j < 3; ++j) {
+ numbers[n++] = matrix (i, j);
+ }
+ }
+ numbers[n++] = output_gamma;
+
+ assert (n == 12);
+
+ return md5_digest (numbers, 12 * sizeof (double));
+}
+
PresetColourConversion::PresetColourConversion ()
: name (_("Untitled"))
{
diff --git a/src/lib/colour_conversion.h b/src/lib/colour_conversion.h
index f6b5bc9f3..893148466 100644
--- a/src/lib/colour_conversion.h
+++ b/src/lib/colour_conversion.h
@@ -45,6 +45,7 @@ public:
ColourConversion (boost::shared_ptr<cxml::Node>);
virtual void as_xml (xmlpp::Node *) const;
+ std::string identifier () const;
boost::optional<size_t> preset () const;
diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc
index 8b0ec4c99..3f6e171a5 100644
--- a/src/lib/video_content.cc
+++ b/src/lib/video_content.cc
@@ -225,7 +225,8 @@ VideoContent::identifier () const
<< "_" << crop().left
<< "_" << crop().right
<< "_" << crop().top
- << "_" << crop().bottom;
+ << "_" << crop().bottom
+ << "_" << colour_conversion().identifier ();
if (ratio()) {
s << "_" << ratio()->id ();