summaryrefslogtreecommitdiff
path: root/src/lib/video_content.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/video_content.cc')
-rw-r--r--src/lib/video_content.cc20
1 files changed, 20 insertions, 0 deletions
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<const Film> 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);
+}