diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-04-20 00:29:55 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2019-04-20 00:29:55 +0100 |
| commit | 5fd2395577ff5eedca060e8b333129ad6de9aa27 (patch) | |
| tree | 12da92f8ca2122376e3310e3dd444f3dc810a574 | |
| parent | 75ef09f7ca0838357b55399916719655905e218a (diff) | |
Don't set up decoder parts for DCPs unless they can be playedv2.13.149
(i.e. are not encrypted and not missing assets). Fixes full audio
buffers on locates with large encrypted DCPs and no KDMs; in these
cases silent audio is created by the fill_audio() at the bottom of
Player::pass() but no video is created by anybody.
| -rw-r--r-- | src/lib/dcp_decoder.cc | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/lib/dcp_decoder.cc b/src/lib/dcp_decoder.cc index 85dd28006..8179ef009 100644 --- a/src/lib/dcp_decoder.cc +++ b/src/lib/dcp_decoder.cc @@ -60,15 +60,17 @@ DCPDecoder::DCPDecoder (shared_ptr<const Film> film, shared_ptr<const DCPContent , Decoder (film) , _decode_referenced (false) { - if (c->video) { - video.reset (new VideoDecoder (this, c)); - } - if (c->audio) { - audio.reset (new AudioDecoder (this, c->audio, fast)); - } - BOOST_FOREACH (shared_ptr<TextContent> i, c->text) { - /* XXX: this time here should be the time of the first subtitle, not 0 */ - text.push_back (shared_ptr<TextDecoder> (new TextDecoder (this, i, ContentTime()))); + if (c->can_be_played()) { + if (c->video) { + video.reset (new VideoDecoder (this, c)); + } + if (c->audio) { + audio.reset (new AudioDecoder (this, c->audio, fast)); + } + BOOST_FOREACH (shared_ptr<TextContent> i, c->text) { + /* XXX: this time here should be the time of the first subtitle, not 0 */ + text.push_back (shared_ptr<TextDecoder> (new TextDecoder (this, i, ContentTime()))); + } } list<shared_ptr<dcp::CPL> > cpl_list = cpls (); |
