#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 <libdcp/util.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 int64_t Time;
-#define TIME_MAX INT64_MAX
-#define TIME_HZ ((Time) 96000)
-typedef int64_t OutputAudioFrame;
-typedef int OutputVideoFrame;
typedef std::vector<boost::shared_ptr<Content> > ContentList;
-typedef std::vector<boost::shared_ptr<VideoContent> > VideoContentList;
typedef std::vector<boost::shared_ptr<AudioContent> > AudioContentList;
-typedef std::vector<boost::shared_ptr<SubtitleContent> > SubtitleContentList;
typedef std::vector<boost::shared_ptr<FFmpegContent> > FFmpegContentList;
-template<class T>
-struct TimedAudioBuffers
-{
- TimedAudioBuffers ()
- : time (0)
- {}
-
- TimedAudioBuffers (boost::shared_ptr<AudioBuffers> a, T t)
- : audio (a)
- , time (t)
- {}
-
- boost::shared_ptr<AudioBuffers> audio;
- T time;
-};
+typedef int64_t Frame;
enum VideoFrameType
{
VIDEO_FRAME_TYPE_2D,
VIDEO_FRAME_TYPE_3D_LEFT_RIGHT,
VIDEO_FRAME_TYPE_3D_TOP_BOTTOM,
- VIDEO_FRAME_TYPE_3D_ALTERNATE
+ VIDEO_FRAME_TYPE_3D_ALTERNATE,
+ /** This content is all the left frames of some 3D */
+ VIDEO_FRAME_TYPE_3D_LEFT,
+ /** This content is all the right frames of some 3D */
+ VIDEO_FRAME_TYPE_3D_RIGHT
};
enum Eyes
EYES_COUNT
};
+enum Part
+{
+ PART_LEFT_HALF,
+ PART_RIGHT_HALF,
+ PART_TOP_HALF,
+ PART_BOTTOM_HALF,
+ PART_WHOLE
+};
+
+enum ReelType
+{
+ REELTYPE_SINGLE,
+ REELTYPE_BY_VIDEO_CONTENT,
+ REELTYPE_BY_LENGTH
+};
+
/** @struct Crop
* @brief A description of the crop of an image or video.
*/
{
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;
/** Number of pixels to remove from the bottom */
int bottom;
- libdcp::Size apply (libdcp::Size s, int minimum = 4) const {
+ dcp::Size apply (dcp::Size s, int minimum = 4) const {
s.width -= left + right;
s.height -= top + bottom;
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);
std::string resolution_to_string (Resolution);
Resolution string_to_resolution (std::string);
+enum Protocol {
+ PROTOCOL_SCP,
+ PROTOCOL_FTP
+};
+
#endif