Add preference for default KDM duration (#2224).
[dcpomatic.git] / src / lib / reel_writer.cc
index 2b7292ff64814b3e9bdbe0af1036960b79ed37b6..7a2c9c67087b68d3b500817de039303042ca293b 100644 (file)
 
 */
 
-#include "reel_writer.h"
-#include "film.h"
+
+#include "audio_buffers.h"
+#include "compose.hpp"
+#include "config.h"
 #include "cross.h"
-#include "job.h"
-#include "log.h"
 #include "dcpomatic_log.h"
 #include "digester.h"
+#include "film.h"
 #include "font_data.h"
-#include "compose.hpp"
-#include "config.h"
-#include "audio_buffers.h"
 #include "image.h"
+#include "image_png.h"
+#include "job.h"
+#include "log.h"
+#include "reel_writer.h"
 #include <dcp/atmos_asset.h>
 #include <dcp/atmos_asset_writer.h>
 #include <dcp/certificate_chain.h>
 
 #include "i18n.h"
 
-using std::list;
-using std::string;
-using std::cout;
+
+using std::dynamic_pointer_cast;
 using std::exception;
+using std::list;
+using std::make_shared;
 using std::map;
 using std::set;
-using std::vector;
 using std::shared_ptr;
-using std::make_shared;
+using std::string;
+using std::vector;
+using std::weak_ptr;
 using boost::optional;
-using std::dynamic_pointer_cast;
 #if BOOST_VERSION >= 106100
 using namespace boost::placeholders;
 #endif
-using std::weak_ptr;
 using dcp::ArrayData;
 using dcp::Data;
 using dcp::raw_convert;
 using namespace dcpomatic;
 
+
 int const ReelWriter::_info_size = 48;
 
+
 static dcp::MXFMetadata
 mxf_metadata ()
 {
@@ -95,6 +99,7 @@ mxf_metadata ()
        return meta;
 }
 
+
 /** @param job Related job, or 0.
  *  @param text_only true to enable a special mode where the writer will expect only subtitles and closed captions to be written
  *  (no picture nor sound) and not give errors in that case.  This is used by the hints system to check the potential sizes of
@@ -197,6 +202,7 @@ ReelWriter::ReelWriter (
        _default_font = dcp::ArrayData(default_font_file());
 }
 
+
 /** @param frame reel-relative frame */
 void
 ReelWriter::write_frame_info (Frame frame, Eyes eyes, dcp::FrameInfo info) const
@@ -208,6 +214,7 @@ ReelWriter::write_frame_info (Frame frame, Eyes eyes, dcp::FrameInfo info) const
        checked_fwrite (info.hash.c_str(), info.hash.size(), handle->get(), handle->file());
 }
 
+
 dcp::FrameInfo
 ReelWriter::read_frame_info (shared_ptr<InfoFileHandle> info, Frame frame, Eyes eyes) const
 {
@@ -224,6 +231,7 @@ ReelWriter::read_frame_info (shared_ptr<InfoFileHandle> info, Frame frame, Eyes
        return frame_info;
 }
 
+
 long
 ReelWriter::frame_info_position (Frame frame, Eyes eyes) const
 {
@@ -241,6 +249,7 @@ ReelWriter::frame_info_position (Frame frame, Eyes eyes) const
        DCPOMATIC_ASSERT (false);
 }
 
+
 Frame
 ReelWriter::check_existing_picture_asset (boost::filesystem::path asset)
 {
@@ -299,6 +308,7 @@ ReelWriter::check_existing_picture_asset (boost::filesystem::path asset)
        return first_nonexistant_frame;
 }
 
+
 void
 ReelWriter::write (shared_ptr<const Data> encoded, Frame frame, Eyes eyes)
 {
@@ -340,6 +350,7 @@ ReelWriter::fake_write (int size)
        _picture_asset_writer->fake_write (size);
 }
 
+
 void
 ReelWriter::repeat_write (Frame frame, Eyes eyes)
 {
@@ -355,6 +366,7 @@ ReelWriter::repeat_write (Frame frame, Eyes eyes)
        write_frame_info (frame, eyes, fin);
 }
 
+
 void
 ReelWriter::finish (boost::filesystem::path output_dcp)
 {
@@ -685,7 +697,6 @@ ReelWriter::create_reel_text (
 }
 
 
-
 void
 ReelWriter::create_reel_markers (shared_ptr<dcp::Reel> reel) const
 {
@@ -699,7 +710,7 @@ ReelWriter::create_reel_markers (shared_ptr<dcp::Reel> reel) const
        }
 
        if (!reel_markers.empty ()) {
-               auto ma = make_shared<dcp::ReelMarkersAsset>(dcp::Fraction(film()->video_frame_rate(), 1), reel->duration(), 0);
+               auto ma = make_shared<dcp::ReelMarkersAsset>(dcp::Fraction(film()->video_frame_rate(), 1), reel->duration());
                for (auto const& i: reel_markers) {
                        DCPTime relative = i.second - _period.from;
                        auto hmsf = relative.split (film()->video_frame_rate());
@@ -768,6 +779,7 @@ try
         */
 }
 
+
 Frame
 ReelWriter::start () const
 {
@@ -840,7 +852,8 @@ ReelWriter::empty_text_asset (TextType type, optional<DCPTextTrack> track, bool
                                        dcp::Effect::NONE,
                                        dcp::Colour(),
                                        dcp::Time(),
-                                       dcp::Time()
+                                       dcp::Time(),
+                                       0
                                        )
                               );
                }
@@ -896,7 +909,7 @@ ReelWriter::write (PlayerText subs, TextType type, optional<DCPTextTrack> track,
        for (auto i: subs.bitmap) {
                asset->add (
                        make_shared<dcp::SubtitleImage>(
-                               i.image->as_png(),
+                               image_as_png(i.image),
                                dcp::Time(period.from.seconds() - _period.from.seconds(), tcr),
                                dcp::Time(period.to.seconds() - _period.from.seconds(), tcr),
                                i.rectangle.x, dcp::HAlign::LEFT, i.rectangle.y, dcp::VAlign::TOP,
@@ -906,6 +919,7 @@ ReelWriter::write (PlayerText subs, TextType type, optional<DCPTextTrack> track,
        }
 }
 
+
 bool
 ReelWriter::existing_picture_frame_ok (FILE* asset_file, shared_ptr<InfoFileHandle> info_file, Frame frame) const
 {