Logging improvements to allow prettier displays in the server GUI.
[dcpomatic.git] / src / lib / types.h
index 35c7a91f9785865e1dada8d2449fa725f4149ae4..d0f4ec1f8955d20421aecabda5a1b720849be6eb 100644 (file)
 #ifndef DCPOMATIC_TYPES_H
 #define DCPOMATIC_TYPES_H
 
+#include "position.h"
+#include "rect.h"
+#include <dcp/util.h>
+#include <boost/shared_ptr.hpp>
 #include <vector>
 #include <stdint.h>
-#include <boost/shared_ptr.hpp>
-#include <dcp/util.h>
-#include "dcpomatic_time.h"
-#include "position.h"
 
 class Content;
 class VideoContent;
 class AudioContent;
 class SubtitleContent;
 class FFmpegContent;
-class AudioBuffers;
+
+namespace cxml {
+       class Node;
+}
+
+namespace xmlpp {
+       class Node;
+}
 
 /** The version number of the protocol used to communicate
  *  with servers.  Intended to be bumped when incompatibilities
- *  are introduced.
+ *  are introduced.  v2 uses 64+n
  */
-#define SERVER_LINK_VERSION 1
+#define SERVER_LINK_VERSION (64+0)
 
 typedef std::vector<boost::shared_ptr<Content> > ContentList;
 typedef std::vector<boost::shared_ptr<VideoContent> > VideoContentList;
@@ -46,24 +53,7 @@ typedef std::vector<boost::shared_ptr<AudioContent> > AudioContentList;
 typedef std::vector<boost::shared_ptr<SubtitleContent> > SubtitleContentList;
 typedef std::vector<boost::shared_ptr<FFmpegContent> > FFmpegContentList;
 
-typedef int64_t VideoFrame;
-typedef int64_t AudioFrame;
-
-/* XXX -> DCPAudio */
-struct TimedAudioBuffers
-{
-       TimedAudioBuffers ()
-               : time (0)
-       {}
-       
-       TimedAudioBuffers (boost::shared_ptr<AudioBuffers> a, DCPTime t)
-               : audio (a)
-               , time (t)
-       {}
-       
-       boost::shared_ptr<AudioBuffers> audio;
-       DCPTime time;
-};
+typedef int64_t Frame;
 
 enum VideoFrameType
 {
@@ -85,6 +75,15 @@ enum Eyes
        EYES_COUNT
 };
 
+enum Part
+{
+       PART_LEFT_HALF,
+       PART_RIGHT_HALF,
+       PART_TOP_HALF,
+       PART_BOTTOM_HALF,
+       PART_WHOLE
+};
+
 /** @struct Crop
  *  @brief A description of the crop of an image or video.
  */
@@ -92,6 +91,7 @@ struct Crop
 {
        Crop () : left (0), right (0), top (0), bottom (0) {}
        Crop (int l, int r, int t, int b) : left (l), right (r), top (t), bottom (b) {}
+       Crop (boost::shared_ptr<cxml::Node>);
 
        /** Number of pixels to remove from the left-hand side */
        int left;
@@ -113,9 +113,26 @@ struct Crop
                if (s.height < minimum) {
                        s.height = minimum;
                }
-               
+
                return s;
        }
+
+       void as_xml (xmlpp::Node *) const;
+};
+
+struct CPLSummary
+{
+       CPLSummary (std::string d, std::string i, std::string a, boost::filesystem::path f)
+               : dcp_directory (d)
+               , cpl_id (i)
+               , cpl_annotation_text (a)
+               , cpl_file (f)
+       {}
+
+       std::string dcp_directory;
+       std::string cpl_id;
+       std::string cpl_annotation_text;
+       boost::filesystem::path cpl_file;
 };
 
 extern bool operator== (Crop const & a, Crop const & b);
@@ -129,4 +146,9 @@ enum Resolution {
 std::string resolution_to_string (Resolution);
 Resolution string_to_resolution (std::string);
 
+enum Protocol {
+       PROTOCOL_SCP,
+       PROTOCOL_FTP
+};
+
 #endif