summaryrefslogtreecommitdiff
path: root/src/lib/dcp_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-08-23 00:27:12 +0100
committerCarl Hetherington <cth@carlh.net>2016-08-24 10:01:52 +0100
commitdf28b0e939bd0f12ae31e6f7ba94fa954496b3b8 (patch)
tree9dcdf8708fe678fc1419e90dc6fdc3f8da8fafb2 /src/lib/dcp_decoder.cc
parent2f1d460898f40844d47d6a3b858449ac09d8b342 (diff)
Allow import of OV/VF DCPs (#906).
Diffstat (limited to 'src/lib/dcp_decoder.cc')
-rw-r--r--src/lib/dcp_decoder.cc18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/lib/dcp_decoder.cc b/src/lib/dcp_decoder.cc
index a4207f144..2e3ed374a 100644
--- a/src/lib/dcp_decoder.cc
+++ b/src/lib/dcp_decoder.cc
@@ -51,7 +51,7 @@ using boost::shared_ptr;
using boost::dynamic_pointer_cast;
DCPDecoder::DCPDecoder (shared_ptr<const DCPContent> c, shared_ptr<Log> log)
- : _dcp_content (c)
+ : DCP (c)
, _decode_referenced (false)
{
video.reset (new VideoDecoder (this, c, log));
@@ -66,13 +66,15 @@ DCPDecoder::DCPDecoder (shared_ptr<const DCPContent> c, shared_ptr<Log> log)
)
);
- dcp::DCP dcp (c->directory ());
- dcp.read (false, 0, true);
- if (c->kdm ()) {
- dcp.add (dcp::DecryptedKDM (c->kdm().get (), Config::instance()->decryption_chain()->key().get ()));
+ shared_ptr<dcp::CPL> cpl;
+ BOOST_FOREACH (shared_ptr<dcp::CPL> i, cpls ()) {
+ if (_dcp_content->cpl() && i->id() == _dcp_content->cpl().get()) {
+ cpl = i;
+ }
}
- DCPOMATIC_ASSERT (dcp.cpls().size() == 1);
- _reels = dcp.cpls().front()->reels ();
+
+ DCPOMATIC_ASSERT (cpl);
+ _reels = cpl->reels ();
_reel = _reels.begin ();
_offset = 0;
@@ -178,7 +180,7 @@ DCPDecoder::next_reel ()
void
DCPDecoder::get_readers ()
{
- if (_reel == _reels.end()) {
+ if (_reel == _reels.end() || !_dcp_content->can_be_played ()) {
_mono_reader.reset ();
_stereo_reader.reset ();
_sound_reader.reset ();