/*
- Copyright (C) 2013-2017 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2013-2018 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
using std::cerr;
using std::list;
using std::vector;
+using std::runtime_error;
using boost::shared_ptr;
using boost::optional;
using boost::bind;
using boost::dynamic_pointer_cast;
+using namespace dcpomatic;
static void
help ()
" -t, --valid-to valid to time (in local time zone of the cinema) (e.g. \"2014-09-28 01:41:51\")\n"
" -d, --valid-duration valid duration (e.g. \"1 day\", \"4 hours\", \"2 weeks\")\n"
" -F, --formulation modified-transitional-1, multiple-modified-transitional-1, dci-any or dci-specific [default modified-transitional-1]\n"
- " -a, --disable-forensic-marking-picture disable forensic of pictures essences\n"
- " -a, --disable-forensic-marking-audio disable forensic of audio essences (optionally above a given channel, e.g 12)\n"
+ " -a, --disable-forensic-marking-picture disable forensic marking of pictures essences\n"
+ " -a, --disable-forensic-marking-audio disable forensic marking of audio essences (optionally above a given channel, e.g 12)\n"
" -z, --zip ZIP each cinema's KDMs into its own file\n"
" -v, --verbose be verbose\n"
" -c, --cinema specify a cinema, either by name or email address\n"
"For example:\n\n"
"Create KDMs for my_great_movie to play in all of Fred's Cinema's screens for the next two weeks and zip them up.\n"
"(Fred's Cinema must have been set up in DCP-o-matic's KDM window)\n\n"
- "\tdcpomatic_kdm -c \"Fred's Cinema\" -f now -d \"2 weeks\" -z my_great_movie\n\n";
+ "\t" << program_name << " -c \"Fred's Cinema\" -f now -d \"2 weeks\" -z my_great_movie\n\n";
}
static void
void
write_files (
- list<ScreenKDM> screen_kdms,
+ list<shared_ptr<ScreenKDM> > screen_kdms,
bool zip,
boost::filesystem::path output,
dcp::NameFormat container_name_format,
values['e'] = dcp::LocalTime(valid_to).date() + " " + dcp::LocalTime(valid_to).time_of_day(true, false);
try {
- list<ScreenKDM> screen_kdms = film->make_kdms (
+ list<shared_ptr<ScreenKDM> > screen_kdms = film->make_kdms (
screens, cpl, valid_from, valid_to, formulation, disable_forensic_marking_picture, disable_forensic_marking_audio
);
} catch (KDMError& e) {
cerr << program_name << ": " << e.what() << "\n";
exit (EXIT_FAILURE);
+ } catch (runtime_error& e) {
+ cerr << program_name << ": " << e.what() << "\n";
+ exit (EXIT_FAILURE);
}
}
values['e'] = dcp::LocalTime(valid_to).date() + " " + dcp::LocalTime(valid_to).time_of_day(true, false);
try {
- list<ScreenKDM> screen_kdms;
+ list<shared_ptr<ScreenKDM> > screen_kdms;
BOOST_FOREACH (shared_ptr<Screen> i, screens) {
if (!i->recipient) {
continue;
}
screen_kdms.push_back (
- ScreenKDM (
- i,
- kdm_from_dkdm (
- dkdm,
- i->recipient.get(),
- i->trusted_device_thumbprints(),
- dcp::LocalTime(valid_from, i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute()),
- dcp::LocalTime(valid_to, i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute()),
- formulation,
- disable_forensic_marking_picture,
- disable_forensic_marking_audio
+ shared_ptr<ScreenKDM>(
+ new DCPScreenKDM(
+ i,
+ kdm_from_dkdm(
+ dkdm,
+ i->recipient.get(),
+ i->trusted_device_thumbprints(),
+ dcp::LocalTime(valid_from, i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute()),
+ dcp::LocalTime(valid_to, i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute()),
+ formulation,
+ disable_forensic_marking_picture,
+ disable_forensic_marking_audio
+ )
)
)
);
case 'C':
{
/* Make a new screen and add it to the current cinema */
- shared_ptr<Screen> screen (new Screen (screen_description, dcp::Certificate (dcp::file_to_string (optarg)), vector<TrustedDevice>()));
+ dcp::CertificateChain chain (dcp::file_to_string(optarg));
+ shared_ptr<Screen> screen (new Screen (screen_description, "", chain.leaf(), vector<TrustedDevice>()));
if (cinema) {
cinema->add_screen (screen);
}