Support encoding of MPEG2 DCPs.
[dcpomatic.git] / src / lib / reel_writer.h
index 30abdd5635dea0eeee65ab91a711d4af88d7998f..f6273f8e9349b320d826e9bfa79f2d88afdf50b4 100644 (file)
 #include "weak_film.h"
 #include <dcp/atmos_asset_writer.h>
 #include <dcp/file.h>
+#include <dcp/ffmpeg_image.h>
 #include <dcp/j2k_picture_asset_writer.h>
+#include <dcp/mono_mpeg2_picture_frame.h>
+#include <dcp/mpeg2_picture_asset_writer.h>
 
 
 class AudioBuffers;
@@ -46,6 +49,7 @@ namespace dcp {
        class MonoJ2KPictureAssetWriter;
        class J2KPictureAsset;
        class J2KPictureAssetWriter;
+       class MPEG2PictureAsset;
        class Reel;
        class ReelAsset;
        class ReelPictureAsset;
@@ -70,11 +74,12 @@ public:
                );
 
        void write (std::shared_ptr<const dcp::Data> encoded, Frame frame, Eyes eyes);
-       void fake_write (int size);
+       void fake_write(dcp::J2KFrameInfo const& info);
        void repeat_write (Frame frame, Eyes eyes);
        void write (std::shared_ptr<const AudioBuffers> audio);
        void write(PlayerText text, TextType type, boost::optional<DCPTextTrack> track, dcpomatic::DCPTimePeriod period, FontIdMap const& fonts, std::shared_ptr<dcpomatic::Font> chosen_interop_font);
        void write (std::shared_ptr<const dcp::AtmosFrame> atmos, AtmosMetadata metadata);
+       void write(std::shared_ptr<dcp::MonoMPEG2PictureFrame> image);
 
        void finish (boost::filesystem::path output_dcp);
        std::shared_ptr<dcp::Reel> create_reel (
@@ -131,9 +136,11 @@ private:
 
        dcp::ArrayData _default_font;
 
-       std::shared_ptr<dcp::J2KPictureAsset> _picture_asset;
+       std::shared_ptr<dcp::J2KPictureAsset> _j2k_picture_asset;
+       std::shared_ptr<dcp::MPEG2PictureAsset> _mpeg2_picture_asset;
        /** picture asset writer, or 0 if we are not writing any picture because we already have one */
-       std::shared_ptr<dcp::J2KPictureAssetWriter> _picture_asset_writer;
+       std::shared_ptr<dcp::J2KPictureAssetWriter> _j2k_picture_asset_writer;
+       std::shared_ptr<dcp::MPEG2PictureAssetWriter> _mpeg2_picture_asset_writer;
        std::shared_ptr<dcp::SoundAsset> _sound_asset;
        std::shared_ptr<dcp::SoundAssetWriter> _sound_asset_writer;
        std::shared_ptr<dcp::SubtitleAsset> _subtitle_asset;