X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fvideo_content.cc;h=d3ba6c1ab1f3d50d89806290b8eb8ed12b2b54aa;hb=dffc146e5387a0b3f7a671d845d6c3051b0e7067;hp=2b953f75bf8b60e9707ccb12a00e9a8b2b4dacc7;hpb=001cc50440d2cdc9edb70223454342c881acac2c;p=dcpomatic.git diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc index 2b953f75b..d3ba6c1ab 100644 --- a/src/lib/video_content.cc +++ b/src/lib/video_content.cc @@ -32,7 +32,6 @@ #include "log.h" #include #include -#include #include #include #include @@ -141,7 +140,6 @@ VideoContent::VideoContent (Content* parent, cxml::ConstNodePtr node, int versio _scale = VideoContentScale (node->node_child ("Scale")); } - if (node->optional_node_child ("ColourConversion")) { _colour_conversion = ColourConversion (node->node_child ("ColourConversion"), version); } @@ -243,10 +241,14 @@ VideoContent::take_from_examiner (shared_ptr d) _sample_aspect_ratio = ar; _yuv = yuv; - /* Guess correct scale from size and sample aspect ratio */ - _scale = VideoContentScale ( - Ratio::nearest_from_ratio (double (_size.width) * ar.get_value_or (1) / _size.height) - ); + if (Config::instance()->default_scale_to ()) { + _scale = VideoContentScale (Config::instance()->default_scale_to ()); + } else { + /* Guess correct scale from size and sample aspect ratio */ + _scale = VideoContentScale ( + Ratio::nearest_from_ratio (double (_size.width) * ar.get_value_or (1) / _size.height) + ); + } } LOG_GENERAL ("Video length obtained from header as %1 frames", _length); @@ -432,7 +434,7 @@ VideoContent::processing_description () const if (scaled != container_size) { d += String::compose ( _("\nPadded with black to fit container %1 (%2x%3)"), - film->container()->nickname (), + film->container()->container_nickname (), container_size.width, container_size.height ); @@ -457,7 +459,7 @@ void VideoContent::add_properties (list& p) const { p.push_back (UserProperty (UserProperty::VIDEO, _("Length"), length (), _("video frames"))); - p.push_back (UserProperty (UserProperty::VIDEO, _("Size"), size().width + "x" + size().height)); + p.push_back (UserProperty (UserProperty::VIDEO, _("Size"), String::compose ("%1x%2", size().width, size().height))); } void @@ -525,3 +527,35 @@ VideoContent::set_fade_out (Frame t) { maybe_set (_fade_out, t, VideoContentProperty::FADE_OUT); } + +void +VideoContent::take_settings_from (shared_ptr 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 (DCPTime& pos) const +{ + pos = pos.round (_parent->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()); + } +}