diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-01-18 20:25:02 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-01-18 20:25:02 +0000 |
| commit | 2489080f9a5d2891da0fc313b2c0ac1450a630ad (patch) | |
| tree | 2f4fe733439db89943eb208713f034eb7df12b65 /src/picture_asset.h | |
| parent | c289685296d58228df0a88354e966105b242c915 (diff) | |
Allow incremental writing of picture MXFs.
Diffstat (limited to 'src/picture_asset.h')
| -rw-r--r-- | src/picture_asset.h | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/picture_asset.h b/src/picture_asset.h index d2c6f656..059e5926 100644 --- a/src/picture_asset.h +++ b/src/picture_asset.h @@ -22,6 +22,7 @@ */ #include <openjpeg.h> +#include "AS_DCP.h" #include "mxf_asset.h" #include "util.h" @@ -35,7 +36,7 @@ class StereoPictureFrame; class PictureAsset : public MXFAsset { public: - PictureAsset (std::string directory, std::string mxf_name, boost::signals2::signal<void (float)>* progress, int fps, int intrinsic_duration); + PictureAsset (std::string directory, std::string mxf_name, boost::signals2::signal<void (float)>* progress, int fps, int intrinsic_duration, Size size); /** Write details of this asset to a CPL stream. * @param s Stream. @@ -59,6 +60,31 @@ protected: Size _size; }; +class MonoPictureAsset; + +class MonoPictureAssetWriter +{ +public: + ~MonoPictureAssetWriter (); + + void write (uint8_t* data, int size); + void finalize (); + +private: + friend class MonoPictureAsset; + + MonoPictureAssetWriter (MonoPictureAsset *); + + ASDCP::JP2K::CodestreamParser _j2k_parser; + ASDCP::JP2K::FrameBuffer _frame_buffer; + ASDCP::JP2K::MXFWriter _mxf_writer; + ASDCP::WriterInfo _writer_info; + ASDCP::JP2K::PictureDescriptor _picture_descriptor; + MonoPictureAsset* _asset; + int _frames_written; + bool _finalized; +}; + /** A 2D (monoscopic) picture asset */ class MonoPictureAsset : public PictureAsset { @@ -103,6 +129,15 @@ public: Size size ); + MonoPictureAsset ( + std::string directory, + std::string mxf_name, + int fps, + Size size + ); + + boost::shared_ptr<MonoPictureAssetWriter> start_write (); + MonoPictureAsset (std::string directory, std::string mxf_name, int fps, int intrinsic_duration); boost::shared_ptr<const MonoPictureFrame> get_frame (int n) const; |
