#include "cross.h"
#include "job.h"
#include "log.h"
+#include "dcpomatic_log.h"
#include "digester.h"
#include "font.h"
#include "compose.hpp"
#include "i18n.h"
-#define LOG_GENERAL(...) _film->log()->log (String::compose (__VA_ARGS__), LogEntry::TYPE_GENERAL);
-#define LOG_GENERAL_NC(...) _film->log()->log (__VA_ARGS__, LogEntry::TYPE_GENERAL);
-#define LOG_WARNING_NC(...) _film->log()->log (__VA_ARGS__, LogEntry::TYPE_WARNING);
-#define LOG_ERROR(...) _film->log()->log (String::compose (__VA_ARGS__), LogEntry::TYPE_ERROR);
-
using std::list;
using std::string;
using std::cout;
throw OpenFileError (info_file, errno, read);
}
dcpomatic_fseek (file, frame_info_position (frame, eyes), SEEK_SET);
- fwrite (&info.offset, sizeof (info.offset), 1, file);
- fwrite (&info.size, sizeof (info.size), 1, file);
- fwrite (info.hash.c_str(), 1, info.hash.size(), file);
+ checked_fwrite (&info.offset, sizeof (info.offset), file, info_file);
+ checked_fwrite (&info.size, sizeof (info.size), file, info_file);
+ checked_fwrite (info.hash.c_str(), info.hash.size(), file, info_file);
fclose (file);
}
{
dcp::FrameInfo info;
dcpomatic_fseek (file, frame_info_position (frame, eyes), SEEK_SET);
- fread (&info.offset, sizeof (info.offset), 1, file);
- fread (&info.size, sizeof (info.size), 1, file);
+ checked_fread (&info.offset, sizeof(info.offset), file, _film->info_file(_period));
+ checked_fread (&info.size, sizeof(info.size), file, _film->info_file(_period));
char hash_buffer[33];
- fread (hash_buffer, 1, 32, file);
+ checked_fread (hash_buffer, 32, file, _film->info_file(_period));
hash_buffer[32] = '\0';
info.hash = hash_buffer;
}
template <class T>
-void
+shared_ptr<T>
maybe_add_text (
shared_ptr<dcp::SubtitleAsset> asset,
int64_t picture_duration,
liberation_normal = "/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf";
}
- /* Add all the fonts to the subtitle content */
+ /* Add the font to the subtitle content */
BOOST_FOREACH (shared_ptr<Font> j, fonts) {
- asset->add_font (j->id(), j->file(FontFiles::NORMAL).get_value_or(liberation_normal));
+ asset->add_font (j->id(), j->file().get_value_or(liberation_normal));
}
if (dynamic_pointer_cast<dcp::InteropSubtitleAsset> (asset)) {
}
reel->add (reel_asset);
}
+
+ return reel_asset;
}
shared_ptr<dcp::Reel>
}
reel->add (reel_sound_asset);
- maybe_add_text<dcp::ReelSubtitleAsset> (_subtitle_asset, reel_picture_asset->duration(), reel, refs, fonts, _film, _period);
+ maybe_add_text<dcp::ReelSubtitleAsset> (_subtitle_asset, reel_picture_asset->duration(), reel, refs, fonts, _film, _period);
for (map<DCPTextTrack, shared_ptr<dcp::SubtitleAsset> >::const_iterator i = _closed_caption_assets.begin(); i != _closed_caption_assets.end(); ++i) {
- maybe_add_text<dcp::ReelClosedCaptionAsset> (i->second, reel_picture_asset->duration(), reel, refs, fonts, _film, _period);
+ shared_ptr<dcp::ReelClosedCaptionAsset> a = maybe_add_text<dcp::ReelClosedCaptionAsset> (
+ i->second, reel_picture_asset->duration(), reel, refs, fonts, _film, _period
+ );
+ a->set_annotation_text (i->first.name);
+ a->set_language (i->first.language);
}
return reel;
if (!asset) {
string lang = _film->subtitle_language ();
- if (lang.empty ()) {
- lang = "Unknown";
- }
if (_film->interop ()) {
shared_ptr<dcp::InteropSubtitleAsset> s (new dcp::InteropSubtitleAsset ());
s->set_movie_title (_film->name ());
- s->set_language (lang);
+ if (lang.empty()) {
+ s->set_language ("Unknown");
+ } else {
+ s->set_language (lang);
+ }
s->set_reel_number (raw_convert<string> (_reel_index + 1));
asset = s;
} else {
shared_ptr<dcp::SMPTESubtitleAsset> s (new dcp::SMPTESubtitleAsset ());
s->set_content_title_text (_film->name ());
- s->set_language (lang);
+ if (!lang.empty()) {
+ s->set_language (lang);
+ }
s->set_edit_rate (dcp::Fraction (_film->video_frame_rate (), 1));
s->set_reel_number (_reel_index + 1);
s->set_time_code_rate (_film->video_frame_rate ());