- /** Round up to the nearest sampling interval
- * at some sampling rate.
- * @param r Sampling rate.
- */
- DCPTime round_up (float r) {
- int64_t const n = rint (HZ / r);
- int64_t const a = _t + n - 1;
- return DCPTime (a - (a % n));
- }
+template<>
+Time<ContentTimeDifferentiator, DCPTimeDifferentiator>::Time (Time<DCPTimeDifferentiator, ContentTimeDifferentiator> d, FrameRateChange f);
+
+template<>
+Time<DCPTimeDifferentiator, ContentTimeDifferentiator>::Time (Time<ContentTimeDifferentiator, DCPTimeDifferentiator> d, FrameRateChange f);
+
+/** Time relative to the start or position of a piece of content in its native frame rate */
+typedef Time<ContentTimeDifferentiator, DCPTimeDifferentiator> ContentTime;
+/** Time relative to the start of the output DCP in its frame rate */
+typedef Time<DCPTimeDifferentiator, ContentTimeDifferentiator> DCPTime;
+
+template <class T>
+class TimePeriod
+{
+public:
+ TimePeriod () {}
+
+ TimePeriod (T f, T t)
+ : from (f)
+ , to (t)
+ {}