+
+ContentTime
+dcpomatic::min (ContentTime a, ContentTime b)
+{
+ if (a < b) {
+ return a;
+ }
+
+ return b;
+}
+
+
+ContentTime
+dcpomatic::max (ContentTime a, ContentTime b)
+{
+ if (a > b) {
+ return a;
+ }
+
+ return b;
+}
+
+
+string
+dcpomatic::to_string (ContentTime t)
+{
+ char buffer[64];
+#ifdef DCPOMATIC_WINDOWS
+ __mingw_snprintf (buffer, sizeof(buffer), "[CONT %" PRId64 " %fs]", t.get(), t.seconds());
+#else
+ snprintf (buffer, sizeof(buffer), "[CONT %" PRId64 " %fs]", t.get(), t.seconds());
+#endif
+ return buffer;
+}
+
+
+string
+dcpomatic::to_string (DCPTime t)
+{
+ char buffer[64];
+#ifdef DCPOMATIC_WINDOWS
+ __mingw_snprintf (buffer, sizeof(buffer), "[DCP %" PRId64 " %fs]", t.get(), t.seconds());
+#else
+ snprintf (buffer, sizeof(buffer), "[DCP %" PRId64 " %fs]", t.get(), t.seconds());
+#endif
+ return buffer;
+}
+
+
+string
+dcpomatic::to_string (DCPTimePeriod p)