X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fstereo_picture_frame.h;h=13c02232ebaf52fcc4434954e61da9667f84ac2f;hb=d39880eef211a296fa8ef4712cdef5945d08527c;hp=8879280438bfd32e07bbfd8cb4efee78f9cfef95;hpb=d652289994b6e5c2f70a1e60c7c7bc11d0085837;p=libdcp.git diff --git a/src/stereo_picture_frame.h b/src/stereo_picture_frame.h index 88792804..13c02232 100644 --- a/src/stereo_picture_frame.h +++ b/src/stereo_picture_frame.h @@ -36,7 +36,7 @@ #include "types.h" #include "asset_reader.h" -#include +#include #include #include #include @@ -52,25 +52,38 @@ namespace ASDCP { namespace dcp { + class OpenJPEGImage; -class DecryptionContext; +class StereoPictureFrame; + /** A single frame of a 3D (stereoscopic) picture asset */ class StereoPictureFrame : public boost::noncopyable { public: StereoPictureFrame (); - ~StereoPictureFrame (); - boost::shared_ptr xyz_image (Eye eye, int reduce = 0) const; + std::shared_ptr xyz_image (Eye eye, int reduce = 0) const; + + class Part : public Data + { + public: + uint8_t const * data () const; + uint8_t * data (); + int size () const; + + private: + friend class StereoPictureFrame; + + Part (std::shared_ptr buffer, Eye eye); + ASDCP::JP2K::FrameBuffer& mono () const; - uint8_t const * left_j2k_data () const; - uint8_t* left_j2k_data (); - int left_j2k_size () const; + std::shared_ptr _buffer; + Eye _eye; + }; - uint8_t const * right_j2k_data () const; - uint8_t* right_j2k_data (); - int right_j2k_size () const; + std::shared_ptr left () const; + std::shared_ptr right () const; private: /* XXX: this is a bit of a shame, but I tried friend StereoPictureAssetReader and it's @@ -78,9 +91,9 @@ private: */ friend class AssetReader; - StereoPictureFrame (ASDCP::JP2K::MXFSReader* reader, int n, boost::shared_ptr); + StereoPictureFrame (ASDCP::JP2K::MXFSReader* reader, int n, std::shared_ptr); - ASDCP::JP2K::SFrameBuffer* _buffer; + std::shared_ptr _buffer; }; }