X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fvideo_content.cc;h=976bc3aa02429736d66fc2b4a235943f8a2a408b;hp=ba656e4c2410330da76bfb4a193facc646137c8d;hb=b6c780d3107557d452c6612d715d01e2be52dbda;hpb=e725a6b4bce2a05275ee611965c62d6803f3bf7c 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 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 f, DCPTime s, ContentTime len) @@ -75,7 +75,7 @@ VideoContent::VideoContent (shared_ptr 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 f, boost::filesystem::path p) @@ -85,7 +85,7 @@ VideoContent::VideoContent (shared_ptr 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 f, cxml::ConstNodePtr node, int version) @@ -116,8 +116,11 @@ VideoContent::VideoContent (shared_ptr 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 ("FadeIn")); _fade_out = ContentTime (node->number_child ("FadeOut")); @@ -186,15 +189,17 @@ VideoContent::as_xml (xmlpp::Node* node) const node->add_child("VideoFrameType")->add_child_text (raw_convert (static_cast (_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 (_fade_in.get ())); node->add_child("FadeOut")->add_child_text (raw_convert (_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 (); } @@ -375,6 +383,17 @@ VideoContent::video_size_after_3d_split () const assert (false); } +void +VideoContent::unset_colour_conversion () +{ + { + boost::mutex::scoped_lock lm (_mutex); + _colour_conversion = boost::optional (); + } + + signal_changed (VideoContentProperty::COLOUR_CONVERSION); +} + void VideoContent::set_colour_conversion (ColourConversion c) {