diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-02-07 20:14:19 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-02-07 20:14:19 +0000 |
| commit | 8bfe295dcc4e1753ee1c89310108bc6bc034cd61 (patch) | |
| tree | 289ccc6ecca26e97248a79a966921edc74b5e08a /src | |
| parent | 42a6035c187305bd4c541bb1ab87b242b58beb7e (diff) | |
Fix ignore/referencing logic.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/dcp_decoder.cc | 17 | ||||
| -rw-r--r-- | src/lib/dcp_decoder.h | 2 | ||||
| -rw-r--r-- | src/lib/decoder_part.h | 4 | ||||
| -rw-r--r-- | src/lib/player.cc | 10 | ||||
| -rw-r--r-- | src/wx/subtitle_view.cc | 4 |
5 files changed, 17 insertions, 20 deletions
diff --git a/src/lib/dcp_decoder.cc b/src/lib/dcp_decoder.cc index 3379f8e90..14b791aa2 100644 --- a/src/lib/dcp_decoder.cc +++ b/src/lib/dcp_decoder.cc @@ -77,14 +77,7 @@ DCPDecoder::DCPDecoder (shared_ptr<const DCPContent> c, shared_ptr<Log> log, boo cpl = cpls().front (); } - if (!_decode_referenced) { - if (c->reference_video()) { - video->set_ignore(); - } - if (c->reference_audio()) { - audio->set_ignore(); - } - } + set_decode_referenced (false); _reels = cpl->reels (); @@ -93,6 +86,7 @@ DCPDecoder::DCPDecoder (shared_ptr<const DCPContent> c, shared_ptr<Log> log, boo get_readers (); } + bool DCPDecoder::pass () { @@ -299,9 +293,12 @@ DCPDecoder::seek (ContentTime t, bool accurate) } void -DCPDecoder::set_decode_referenced () +DCPDecoder::set_decode_referenced (bool r) { - _decode_referenced = true; + _decode_referenced = r; + + video->set_ignore (_dcp_content->reference_video() && !_decode_referenced); + audio->set_ignore (_dcp_content->reference_audio() && !_decode_referenced); } void diff --git a/src/lib/dcp_decoder.h b/src/lib/dcp_decoder.h index 7238f3bb2..483c057ac 100644 --- a/src/lib/dcp_decoder.h +++ b/src/lib/dcp_decoder.h @@ -45,7 +45,7 @@ public: return _reels; } - void set_decode_referenced (); + void set_decode_referenced (bool r); void set_forced_reduction (boost::optional<int> reduction); bool pass (); diff --git a/src/lib/decoder_part.h b/src/lib/decoder_part.h index a9568be8a..1d0473fa5 100644 --- a/src/lib/decoder_part.h +++ b/src/lib/decoder_part.h @@ -35,8 +35,8 @@ public: virtual ContentTime position () const = 0; - void set_ignore () { - _ignore = true; + void set_ignore (bool i) { + _ignore = i; } bool ignore () const { diff --git a/src/lib/player.cc b/src/lib/player.cc index b011fffdc..0f20dc7ec 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -129,19 +129,19 @@ Player::setup_pieces () } if (decoder->video && _ignore_video) { - decoder->video->set_ignore (); + decoder->video->set_ignore (true); } if (decoder->subtitle && _ignore_subtitle) { - decoder->subtitle->set_ignore (); + decoder->subtitle->set_ignore (true); } shared_ptr<DCPDecoder> dcp = dynamic_pointer_cast<DCPDecoder> (decoder); - if (dcp && _play_referenced) { + if (dcp) { + dcp->set_decode_referenced (_play_referenced); if (_play_referenced) { - dcp->set_decode_referenced (); + dcp->set_forced_reduction (_dcp_decode_reduction); } - dcp->set_forced_reduction (_dcp_decode_reduction); } shared_ptr<Piece> piece (new Piece (i, decoder, frc)); diff --git a/src/wx/subtitle_view.cc b/src/wx/subtitle_view.cc index bb336d16b..bf8391371 100644 --- a/src/wx/subtitle_view.cc +++ b/src/wx/subtitle_view.cc @@ -70,10 +70,10 @@ SubtitleView::SubtitleView (wxWindow* parent, shared_ptr<Film> film, shared_ptr< } if (decoder->video) { - decoder->video->set_ignore (); + decoder->video->set_ignore (true); } if (decoder->audio) { - decoder->audio->set_ignore (); + decoder->audio->set_ignore (true); } _subs = 0; |
