+ So for a 3hr film, ie F = 3 * 60 * 60 = 10800, the acceptable
+ FPS error is 1/F ~= 0.0001 ~= 1e-4
+*/
+#define VIDEO_FRAME_RATE_EPSILON (1e-4)
+
+/** Port on which EncodeServer listens for frame encoding requests */
+#define ENCODE_FRAME_PORT (Config::instance()->server_port_base())
+/** Port on which EncodeServer listens for DCPOMATIC_HELLO from masters */
+#define HELLO_PORT (Config::instance()->server_port_base()+1)
+/** Port on which EncodeServerFinder in the main DCP-o-matic listens for replies to DCPOMATIC_HELLO from servers */
+#define MAIN_SERVER_PRESENCE_PORT (Config::instance()->server_port_base()+2)
+/** Port on which EncodeServerFinder in the batch converter listens for replies to DCPOMATIC_HELLO from servers */
+#define BATCH_SERVER_PRESENCE_PORT (Config::instance()->server_port_base()+3)
+/** Port on which batch converter listens for job requests */
+#define BATCH_JOB_PORT (Config::instance()->server_port_base()+4)
+/** Port on which player listens for play requests */
+#define PLAYER_PLAY_PORT (Config::instance()->server_port_base()+5)
+
+typedef std::vector<std::shared_ptr<Content>> ContentList;
+typedef std::vector<std::shared_ptr<FFmpegContent>> FFmpegContentList;
+
+typedef int64_t Frame;
+
+enum class Eyes