string const old_name = name ();
bool had_subtitles = static_cast<bool> (subtitle);
- job->set_progress_unknown ();
+ if (job) {
+ job->set_progress_unknown ();
+ }
Content::examine (job);
shared_ptr<DCPExaminer> examiner (new DCPExaminer (shared_from_this ()));
} catch (dcp::DCPReadError) {
/* We couldn't read the DCP; it's probably missing */
return false;
+ } catch (dcp::KDMDecryptionError) {
+ /* We have an incorrect KDM */
+ return false;
}
/* fr must contain reels(). It can also contain other reels, but it must at
{
shared_ptr<DCPDecoder> decoder;
try {
- decoder.reset (new DCPDecoder (shared_from_this(), film()->log()));
+ decoder.reset (new DCPDecoder (shared_from_this(), film()->log(), false));
} catch (dcp::DCPReadError) {
/* We couldn't read the DCP, so it's probably missing */
return false;
+ } catch (dcp::KDMDecryptionError) {
+ /* We have an incorrect KDM */
+ return false;
}
BOOST_FOREACH (shared_ptr<dcp::Reel> i, decoder->reels()) {
{
shared_ptr<DCPDecoder> decoder;
try {
- decoder.reset (new DCPDecoder (shared_from_this(), film()->log()));
+ decoder.reset (new DCPDecoder (shared_from_this(), film()->log(), false));
} catch (dcp::DCPReadError) {
/* We couldn't read the DCP, so it's probably missing */
return false;
+ } catch (dcp::KDMDecryptionError) {
+ /* We have an incorrect KDM */
+ return false;
}
BOOST_FOREACH (shared_ptr<dcp::Reel> i, decoder->reels()) {
}
void
-DCPContent::use_template (shared_ptr<const Content> c)
+DCPContent::take_settings_from (shared_ptr<const Content> c)
{
shared_ptr<const DCPContent> dc = dynamic_pointer_cast<const DCPContent> (c);
- DCPOMATIC_ASSERT (dc);
+ if (!dc) {
+ return;
+ }
_reference_video = dc->_reference_video;
_reference_audio = dc->_reference_audio;