Try to fix up paths for video MXFs, hashes and temporarily-stored frames.
[dcpomatic.git] / src / lib / writer.cc
index 56cfa43a77df948cb2cd7610ca1ef4d2aee57a36..16ed5c3493cdf717f08e20607bd2f8756441364f 100644 (file)
@@ -42,7 +42,7 @@ Writer::Writer (shared_ptr<Film> f)
        _picture_asset.reset (
                new libdcp::MonoPictureAsset (
                        _film->dir (_film->dcp_name()),
-                       "video.mxf",
+                       _film->video_mxf_path(),
                        DCPFrameRate (_film->frames_per_second()).frames_per_second,
                        _film->format()->dcp_size()
                        )
@@ -164,9 +164,9 @@ Writer::thread ()
                        lock.unlock ();
                        _film->log()->log (String::compose ("Writer pulls %1 back from disk", fetch));
                        shared_ptr<const EncodedData> encoded;
-                       if (boost::filesystem::exists (_film->frame_out_path (fetch, false))) {
+                       if (boost::filesystem::exists (_film->j2c_path (fetch, false))) {
                                /* It's an actual frame (not a repeat-last); load it in */
-                               encoded.reset (new EncodedData (_film->frame_out_path (fetch, false)));
+                               encoded.reset (new EncodedData (_film->j2c_path (fetch, false)));
                        }
                        lock.lock ();
 
@@ -194,7 +194,10 @@ Writer::finish ()
        _thread = 0;
 
        _picture_asset_writer->finalize ();
-       _sound_asset_writer->finalize ();
+
+       if (_sound_asset_writer) {
+               _sound_asset_writer->finalize ();
+       }
 
        int const frames = _last_written_frame + 1;
        int const duration = frames - _film->trim_start() - _film->trim_end();
@@ -203,8 +206,11 @@ Writer::finish ()
        
        _picture_asset->set_entry_point (_film->trim_start ());
        _picture_asset->set_duration (duration);
-       _sound_asset->set_entry_point (_film->trim_start ());
-       _sound_asset->set_duration (duration);
+
+       if (_sound_asset) {
+               _sound_asset->set_entry_point (_film->trim_start ());
+               _sound_asset->set_duration (duration);
+       }
        
        libdcp::DCP dcp (_film->dir (_film->dcp_name()));
        DCPFrameRate dfr (_film->frames_per_second ());