Adjust AudioMerger to non-signalling API.
[dcpomatic.git] / src / lib / types.h
index f9e9b2f4b6668e62328014a19da6ba8eb9cf07f8..e1487ed4d708c07925f4978bafedc85a0035e0c4 100644 (file)
 #define DCPOMATIC_TYPES_H
 
 #include <vector>
+#include <stdint.h>
 #include <boost/shared_ptr.hpp>
 #include <libdcp/util.h>
 
 class Content;
+class AudioBuffers;
 
+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 int64_t ContentAudioFrame;
-typedef int ContentVideoFrame;
-typedef double Time;
+
+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;
+};
+
+enum VideoFrameType
+{
+       VIDEO_FRAME_TYPE_2D,
+       VIDEO_FRAME_TYPE_3D_LEFT_RIGHT
+};
+
+enum Eyes
+{
+       EYES_BOTH,
+       EYES_LEFT,
+       EYES_RIGHT,
+       EYES_COUNT
+};
 
 /** @struct Crop
  *  @brief A description of the crop of an image or video.
@@ -37,6 +71,7 @@ typedef double Time;
 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;
@@ -51,60 +86,12 @@ struct Crop
 extern bool operator== (Crop const & a, Crop const & b);
 extern bool operator!= (Crop const & a, Crop const & b);
 
-/** @struct Position
- *  @brief A position.
- */
-struct Position
-{
-       Position ()
-               : x (0)
-               , y (0)
-       {}
-
-       Position (int x_, int y_)
-               : x (x_)
-               , y (y_)
-       {}
-
-       /** x coordinate */
-       int x;
-       /** y coordinate */
-       int y;
+enum Resolution {
+       RESOLUTION_2K,
+       RESOLUTION_4K
 };
 
-/** @struct Rect
- *  @brief A rectangle.
- */
-struct Rect
-{
-       Rect ()
-               : x (0)
-               , y (0)
-               , width (0)
-               , height (0)
-       {}
-
-       Rect (int x_, int y_, int w_, int h_)
-               : x (x_)
-               , y (y_)
-               , width (w_)
-               , height (h_)
-       {}
-
-       int x;
-       int y;
-       int width;
-       int height;
-
-       Position position () const {
-               return Position (x, y);
-       }
-
-       libdcp::Size size () const {
-               return libdcp::Size (width, height);
-       }
-
-       Rect intersection (Rect const & other) const;
-};
+std::string resolution_to_string (Resolution);
+Resolution string_to_resolution (std::string);
 
 #endif