X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Ftypes.h;h=a1b40f29939c87a050dd9f4a04cd85f591de8c0b;hb=c28b3d6f168607aca9995282b96647eb64a26dc9;hp=01560ba81fdedbd9eb643a816adb002b45acaace;hpb=373f010a7f04add1f49169cbaa60cb7ae5f508d4;p=dcpomatic.git diff --git a/src/lib/types.h b/src/lib/types.h index 01560ba81..a1b40f299 100644 --- a/src/lib/types.h +++ b/src/lib/types.h @@ -26,6 +26,10 @@ #include class Content; +class VideoContent; +class AudioContent; +class SubtitleContent; +class FFmpegContent; class AudioBuffers; /** The version number of the protocol used to communicate @@ -34,12 +38,17 @@ class AudioBuffers; */ #define SERVER_LINK_VERSION 1 -typedef int64_t Time; +typedef int64_t DCPTime; #define TIME_MAX INT64_MAX -#define TIME_HZ ((Time) 96000) -typedef int64_t OutputAudioFrame; -typedef int OutputVideoFrame; +#define TIME_HZ ((DCPTime) 96000) +typedef int64_t ContentTime; +typedef int64_t AudioFrame; +typedef int VideoFrame; typedef std::vector > ContentList; +typedef std::vector > VideoContentList; +typedef std::vector > AudioContentList; +typedef std::vector > SubtitleContentList; +typedef std::vector > FFmpegContentList; template struct TimedAudioBuffers @@ -60,7 +69,8 @@ struct TimedAudioBuffers enum VideoFrameType { VIDEO_FRAME_TYPE_2D, - VIDEO_FRAME_TYPE_3D_LEFT_RIGHT + VIDEO_FRAME_TYPE_3D_LEFT_RIGHT, + VIDEO_FRAME_TYPE_3D_TOP_BOTTOM }; enum Eyes @@ -87,6 +97,21 @@ 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);