+void
+VideoContent::add_properties (list<UserProperty>& p) const
+{
+ p.push_back (UserProperty (UserProperty::VIDEO, _("Length"), length (), _("video frames")));
+ p.push_back (UserProperty (UserProperty::VIDEO, _("Size"), String::compose ("%1x%2", size().width, size().height)));
+}
+
+void
+VideoContent::set_length (Frame len)
+{
+ maybe_set (_length, len, ContentProperty::LENGTH);
+}
+
+void
+VideoContent::set_left_crop (int c)
+{
+ maybe_set (_crop.left, c, VideoContentProperty::CROP);
+}
+
+void
+VideoContent::set_right_crop (int c)
+{
+ maybe_set (_crop.right, c, VideoContentProperty::CROP);
+}
+
+void
+VideoContent::set_top_crop (int c)
+{
+ maybe_set (_crop.top, c, VideoContentProperty::CROP);
+}
+
+void
+VideoContent::set_bottom_crop (int c)
+{
+ maybe_set (_crop.bottom, c, VideoContentProperty::CROP);
+}
+
+void
+VideoContent::set_scale (VideoContentScale s)
+{
+ maybe_set (_scale, s, VideoContentProperty::SCALE);
+}
+
+void
+VideoContent::set_frame_type (VideoFrameType t)
+{
+ maybe_set (_frame_type, t, VideoContentProperty::FRAME_TYPE);
+}
+
+void
+VideoContent::unset_colour_conversion ()
+{
+ maybe_set (_colour_conversion, boost::optional<ColourConversion> (), VideoContentProperty::COLOUR_CONVERSION);
+}
+
+void
+VideoContent::set_colour_conversion (ColourConversion c)
+{
+ maybe_set (_colour_conversion, c, VideoContentProperty::COLOUR_CONVERSION);
+}
+
+void
+VideoContent::set_fade_in (Frame t)
+{
+ maybe_set (_fade_in, t, VideoContentProperty::FADE_IN);
+}
+
+void
+VideoContent::set_fade_out (Frame t)
+{
+ maybe_set (_fade_out, t, VideoContentProperty::FADE_OUT);
+}
+
+void
+VideoContent::take_settings_from (shared_ptr<const VideoContent> c)
+{
+ if (c->_colour_conversion) {
+ set_colour_conversion (c->_colour_conversion.get());
+ } else {
+ unset_colour_conversion ();
+ }
+ set_frame_type (c->_frame_type);
+ set_left_crop (c->_crop.left);
+ set_right_crop (c->_crop.right);
+ set_top_crop (c->_crop.top);
+ set_bottom_crop (c->_crop.bottom);
+ set_scale (c->_scale);
+ set_fade_in (c->_fade_in);
+ set_fade_out (c->_fade_out);
+}
+
+void
+VideoContent::modify_position (shared_ptr<const Film> film, DCPTime& pos) const
+{
+ pos = pos.round (film->video_frame_rate());
+}
+
+void
+VideoContent::modify_trim_start (ContentTime& trim) const
+{
+ if (_parent->video_frame_rate()) {
+ trim = trim.round (_parent->video_frame_rate().get());
+ }