Take ISDCF metadata from templates.
[dcpomatic.git] / src / lib / dcp_content.cc
index 43d6911f57412d2f412623e36365fdaacad51f3b..ad489917d65c41e6a328ec6b0dd0f37b046085e9 100644 (file)
@@ -456,6 +456,9 @@ DCPContent::can_reference (function<shared_ptr<ContentPart> (shared_ptr<const Co
        } 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
@@ -497,6 +500,9 @@ DCPContent::can_reference_audio (list<string>& why_not) const
        } 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()) {
@@ -518,6 +524,9 @@ DCPContent::can_reference_subtitle (list<string>& why_not) const
        } 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()) {
@@ -534,7 +543,9 @@ void
 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;