Merge branch 'master' of ssh://carlh.dnsalias.org/home/carl/git/libdcp
[libdcp.git] / src / picture_frame.h
index bb347294b839a1e45ad23b0ef8081da918dc6d35..ad51abed2e233500b5cb1f5ef36a000c4c7b101d 100644 (file)
 #include <string>
 #include <stdint.h>
 #include <boost/shared_ptr.hpp>
+#include "types.h"
 
 namespace ASDCP {
        namespace JP2K {
                class FrameBuffer;
+               class SFrameBuffer;
        }
 }
 
 namespace libdcp {
 
-class RGBAFrame;       
+class ARGBFrame;
 
-class PictureFrame
+/** A single frame of a 2D (monoscopic) picture asset */       
+class MonoPictureFrame
 {
 public:
-       PictureFrame (std::string mxf_path, int n);
-       ~PictureFrame ();
+       MonoPictureFrame (std::string mxf_path, int n);
+       ~MonoPictureFrame ();
 
-       uint8_t const * data () const;
-       int size () const;
-
-       boost::shared_ptr<RGBAFrame> rgba_frame () const;
+       boost::shared_ptr<ARGBFrame> argb_frame (int reduce = 0) const;
+       ASDCP::JP2K::FrameBuffer* j2k_frame () const {
+               return _buffer;
+       }
 
 private:
        ASDCP::JP2K::FrameBuffer* _buffer;
 };
 
+/** A single frame of a 3D (stereoscopic) picture asset */     
+class StereoPictureFrame
+{
+public:
+       StereoPictureFrame (std::string mxf_path, int n);
+       ~StereoPictureFrame ();
+
+       boost::shared_ptr<ARGBFrame> argb_frame (Eye eye, int reduce = 0) const;
+       ASDCP::JP2K::SFrameBuffer* j2k_frame () const {
+               return _buffer;
+       }
+
+private:
+       ASDCP::JP2K::SFrameBuffer* _buffer;
+};
+
 }