summaryrefslogtreecommitdiff
path: root/src/lib/video_content.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-10-25 14:47:43 +0100
committerCarl Hetherington <cth@carlh.net>2014-10-25 14:47:43 +0100
commitb6c780d3107557d452c6612d715d01e2be52dbda (patch)
tree3548fe3eef61f3b0145bb33a57a89f97bfa75f50 /src/lib/video_content.cc
parente725a6b4bce2a05275ee611965c62d6803f3bf7c (diff)
parent0dcbc398124f740e4fd7b552926f601a3e5c755e (diff)
Merge master.
Diffstat (limited to 'src/lib/video_content.cc')
-rw-r--r--src/lib/video_content.cc37
1 files changed, 28 insertions, 9 deletions
diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc
index ba656e4c2..976bc3aa0 100644
--- a/src/lib/video_content.cc
+++ b/src/lib/video_content.cc
@@ -65,7 +65,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f)
, _video_frame_type (VIDEO_FRAME_TYPE_2D)
, _scale (Config::instance()->default_scale ())
{
- setup_default_colour_conversion ();
+ set_default_colour_conversion ();
}
VideoContent::VideoContent (shared_ptr<const Film> f, DCPTime s, ContentTime len)
@@ -75,7 +75,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, DCPTime s, ContentTime len
, _video_frame_type (VIDEO_FRAME_TYPE_2D)
, _scale (Config::instance()->default_scale ())
{
- setup_default_colour_conversion ();
+ set_default_colour_conversion ();
}
VideoContent::VideoContent (shared_ptr<const Film> f, boost::filesystem::path p)
@@ -85,7 +85,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, boost::filesystem::path p)
, _video_frame_type (VIDEO_FRAME_TYPE_2D)
, _scale (Config::instance()->default_scale ())
{
- setup_default_colour_conversion ();
+ set_default_colour_conversion ();
}
VideoContent::VideoContent (shared_ptr<const Film> f, cxml::ConstNodePtr node, int version)
@@ -116,8 +116,11 @@ VideoContent::VideoContent (shared_ptr<const Film> f, cxml::ConstNodePtr node, i
} else {
_scale = VideoContentScale (node->node_child ("Scale"));
}
+
- _colour_conversion = ColourConversion (node->node_child ("ColourConversion"));
+ if (node->optional_node_child ("ColourConversion")) {
+ _colour_conversion = ColourConversion (node->node_child ("ColourConversion"));
+ }
if (version >= 32) {
_fade_in = ContentTime (node->number_child<int64_t> ("FadeIn"));
_fade_out = ContentTime (node->number_child<int64_t> ("FadeOut"));
@@ -186,15 +189,17 @@ VideoContent::as_xml (xmlpp::Node* node) const
node->add_child("VideoFrameType")->add_child_text (raw_convert<string> (static_cast<int> (_video_frame_type)));
_crop.as_xml (node);
_scale.as_xml (node->add_child("Scale"));
- _colour_conversion.as_xml (node->add_child("ColourConversion"));
+ if (_colour_conversion) {
+ _colour_conversion.get().as_xml (node->add_child("ColourConversion"));
+ }
node->add_child("FadeIn")->add_child_text (raw_convert<string> (_fade_in.get ()));
node->add_child("FadeOut")->add_child_text (raw_convert<string> (_fade_out.get ()));
}
void
-VideoContent::setup_default_colour_conversion ()
+VideoContent::set_default_colour_conversion ()
{
- _colour_conversion = PresetColourConversion (_("sRGB"), 2.4, true, dcp::colour_matrix::srgb_to_xyz, 2.6).conversion;
+ set_colour_conversion (PresetColourConversion (_("sRGB"), 2.4, true, dcp::colour_matrix::srgb_to_xyz, 2.6).conversion);
}
void
@@ -327,8 +332,11 @@ VideoContent::identifier () const
<< "_" << crop().right
<< "_" << crop().top
<< "_" << crop().bottom
- << "_" << scale().id()
- << "_" << colour_conversion().identifier ();
+ << "_" << scale().id();
+
+ if (colour_conversion()) {
+ s << "_" << colour_conversion().get().identifier ();
+ }
return s.str ();
}
@@ -376,6 +384,17 @@ VideoContent::video_size_after_3d_split () const
}
void
+VideoContent::unset_colour_conversion ()
+{
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ _colour_conversion = boost::optional<ColourConversion> ();
+ }
+
+ signal_changed (VideoContentProperty::COLOUR_CONVERSION);
+}
+
+void
VideoContent::set_colour_conversion (ColourConversion c)
{
{