X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Ftypes.h;h=4e1f59ca87fb122baea9acad6c63b71f5e83061d;hb=e6f28e7cda23c1ba3c49cc1bf2dc1491c2f87160;hp=fcf45ffa04ccb17cc7fc144f9eca01e4efe5d615;hpb=77fd65d0dd95506b5b51802ab58b6bd5eae60dc7;p=dcpomatic.git diff --git a/src/lib/types.h b/src/lib/types.h index fcf45ffa0..4e1f59ca8 100644 --- a/src/lib/types.h +++ b/src/lib/types.h @@ -23,15 +23,58 @@ #include #include #include -#include +#include +#include "dcpomatic_time.h" class Content; +class VideoContent; +class AudioContent; +class SubtitleContent; +class FFmpegContent; +class AudioBuffers; -typedef int64_t Time; -#define TIME_MAX INT64_MAX -#define TIME_HZ ((Time) 96000) -typedef int64_t OutputAudioFrame; -typedef int OutputVideoFrame; +/** The version number of the protocol used to communicate + * with servers. Intended to be bumped when incompatibilities + * are introduced. + */ +#define SERVER_LINK_VERSION 1 + +typedef std::vector > ContentList; +typedef std::vector > VideoContentList; +typedef std::vector > AudioContentList; +typedef std::vector > SubtitleContentList; +typedef std::vector > FFmpegContentList; + +struct TimedAudioBuffers +{ + TimedAudioBuffers () + : time (0) + {} + + TimedAudioBuffers (boost::shared_ptr a, DCPTime t) + : audio (a) + , time (t) + {} + + boost::shared_ptr audio; + DCPTime time; +}; + +enum VideoFrameType +{ + VIDEO_FRAME_TYPE_2D, + VIDEO_FRAME_TYPE_3D_LEFT_RIGHT, + VIDEO_FRAME_TYPE_3D_TOP_BOTTOM, + VIDEO_FRAME_TYPE_3D_ALTERNATE +}; + +enum Eyes +{ + EYES_BOTH, + EYES_LEFT, + EYES_RIGHT, + EYES_COUNT +}; /** @struct Crop * @brief A description of the crop of an image or video. @@ -39,6 +82,7 @@ typedef int OutputVideoFrame; 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) {} /** Number of pixels to remove from the left-hand side */ int left; @@ -48,9 +92,32 @@ struct Crop int top; /** Number of pixels to remove from the bottom */ int bottom; + + dcp::Size apply (dcp::Size s, int minimum = 4) const { + s.width -= left + right; + s.height -= top + bottom; + + if (s.width < minimum) { + s.width = minimum; + } + + if (s.height < minimum) { + s.height = minimum; + } + + return s; + } }; extern bool operator== (Crop const & a, Crop const & b); extern bool operator!= (Crop const & a, Crop const & b); +enum Resolution { + RESOLUTION_2K, + RESOLUTION_4K +}; + +std::string resolution_to_string (Resolution); +Resolution string_to_resolution (std::string); + #endif