#include "format.h"
#include "log.h"
#include "dcp_video_frame.h"
+#include "playlist.h"
#include "i18n.h"
int const Writer::_maximum_frames_in_memory = 8;
-Writer::Writer (shared_ptr<Film> f)
+Writer::Writer (shared_ptr<Film> f, shared_ptr<Playlist> p)
: _film (f)
+ , _playlist (p)
, _first_nonexistant_frame (0)
, _thread (0)
, _finish (false)
_picture_asset_writer = _picture_asset->start_write (_first_nonexistant_frame > 0);
- AudioMapping m (_film->audio_channels ());
+ AudioMapping m (_playlist->audio_channels ());
if (m.dcp_channels() > 0) {
_sound_asset.reset (
N_("audio.mxf"),
_film->dcp_frame_rate (),
m.dcp_channels (),
- dcp_audio_sample_rate (_film->audio_stream()->sample_rate())
+ dcp_audio_sample_rate (_playlist->audio_frame_rate())
)
);
boost::filesystem::path to;
to /= _film->dir (_film->dcp_name());
to /= N_("video.mxf");
-
- boost::filesystem::create_hard_link (from, to);
+
+ boost::system::error_code ec;
+ boost::filesystem::create_hard_link (from, to, ec);
+ if (ec) {
+ /* hard link failed; copy instead */
+ boost::filesystem::copy_file (from, to);
+ _film->log()->log ("Hard-link failed; fell back to copying");
+ }
/* And update the asset */