using boost::shared_ptr;
using boost::optional;
using boost::dynamic_pointer_cast;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
+using dcp::ArrayData;
using dcp::Data;
using dcp::raw_convert;
using namespace dcpomatic;
}
void
-ReelWriter::write (optional<Data> encoded, Frame frame, Eyes eyes)
+ReelWriter::write (shared_ptr<const Data> encoded, Frame frame, Eyes eyes)
{
if (!_picture_asset_writer) {
/* We're not writing any data */
return;
}
- dcp::FrameInfo fin = _picture_asset_writer->write (encoded->data().get (), encoded->size());
+ dcp::FrameInfo fin = _picture_asset_writer->write (encoded->data(), encoded->size());
write_frame_info (frame, eyes, fin);
_last_written[eyes] = encoded;
}
}
dcp::FrameInfo fin = _picture_asset_writer->write (
- _last_written[eyes]->data().get(),
+ _last_written[eyes]->data(),
_last_written[eyes]->size()
);
write_frame_info (frame, eyes, fin);
shared_ptr<dcp::ReelClosedCaptionAsset> a = maybe_add_text<dcp::ReelClosedCaptionAsset> (
i->second, reel_picture_asset->actual_duration(), reel, refs, fonts, _film, _period
);
- a->set_annotation_text (i->first.name);
- a->set_language (i->first.language);
+ if (a) {
+ a->set_annotation_text (i->first.name);
+ a->set_language (i->first.language);
+ }
}
- map<dcp::Marker, DCPTime> markers = _film->markers ();
- map<dcp::Marker, DCPTime> reel_markers;
- for (map<dcp::Marker, DCPTime>::const_iterator i = markers.begin(); i != markers.end(); ++i) {
+ Film::Markers markers = _film->markers ();
+ _film->add_ffoc_lfoc (markers);
+ Film::Markers reel_markers;
+ for (Film::Markers::const_iterator i = markers.begin(); i != markers.end(); ++i) {
if (_period.contains(i->second)) {
reel_markers[i->first] = i->second;
}
}
if (!asset) {
- string lang = _film->subtitle_language ();
+ vector<dcp::LanguageTag> lang = _film->subtitle_languages ();
if (_film->interop ()) {
shared_ptr<dcp::InteropSubtitleAsset> s (new dcp::InteropSubtitleAsset ());
s->set_movie_title (_film->name ());
if (type == TEXT_OPEN_SUBTITLE) {
- s->set_language (lang.empty() ? "Unknown" : lang);
+ s->set_language (lang.empty() ? "Unknown" : lang.front().to_string());
} else {
s->set_language (track->language);
}
s->set_content_title_text (_film->name ());
s->set_metadata (mxf_metadata());
if (type == TEXT_OPEN_SUBTITLE && !lang.empty()) {
- s->set_language (lang);
+ s->set_language (lang.front().to_string());
} else {
s->set_language (track->language);
}
/* Read the data from the asset and hash it */
dcpomatic_fseek (asset_file, info.offset, SEEK_SET);
- Data data (info.size);
- size_t const read = fread (data.data().get(), 1, data.size(), asset_file);
+ ArrayData data (info.size);
+ size_t const read = fread (data.data(), 1, data.size(), asset_file);
LOG_GENERAL ("Read %1 bytes of asset data; wanted %2", read, info.size);
if (read != static_cast<size_t> (data.size ())) {
LOG_GENERAL ("Existing frame %1 is incomplete", frame);
ok = false;
} else {
Digester digester;
- digester.add (data.data().get(), data.size());
+ digester.add (data.data(), data.size());
LOG_GENERAL ("Hash %1 vs %2", digester.get(), info.hash);
if (digester.get() != info.hash) {
LOG_GENERAL ("Existing frame %1 failed hash check", frame);