X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fvideo_content.cc;h=d0eab4dbf93f870344b7c34228ed14d7813ad26d;hb=8053593f2ccff66287c43d20a8f28be9919bff75;hp=3478368555b8139944144170b05ab67198134d4b;hpb=8d31298c71df875d88e9f22061645d54309875eb;p=dcpomatic.git diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc index 347836855..d0eab4dbf 100644 --- a/src/lib/video_content.cc +++ b/src/lib/video_content.cc @@ -26,6 +26,8 @@ #include "compose.hpp" #include "config.h" #include "colour_conversion.h" +#include "util.h" +#include "film.h" #include "i18n.h" @@ -289,3 +291,21 @@ VideoContent::video_size_after_crop () const { return crop().apply (video_size_after_3d_split ()); } + +/** @param t A time offset from the start of this piece of content. + * @return Corresponding frame index. + */ +VideoContent::Frame +VideoContent::time_to_content_video_frames (Time t) const +{ + shared_ptr film = _film.lock (); + assert (film); + + FrameRateConversion frc (video_frame_rate(), film->video_frame_rate()); + + /* Here we are converting from time (in the DCP) to a frame number in the content. + Hence we need to use the DCP's frame rate and the double/skip correction, not + the source's rate. + */ + return t * film->video_frame_rate() / (frc.factor() * TIME_HZ); +}