summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-02-07 20:14:19 +0000
committerCarl Hetherington <cth@carlh.net>2018-02-07 20:14:19 +0000
commit8bfe295dcc4e1753ee1c89310108bc6bc034cd61 (patch)
tree289ccc6ecca26e97248a79a966921edc74b5e08a /src
parent42a6035c187305bd4c541bb1ab87b242b58beb7e (diff)
Fix ignore/referencing logic.
Diffstat (limited to 'src')
-rw-r--r--src/lib/dcp_decoder.cc17
-rw-r--r--src/lib/dcp_decoder.h2
-rw-r--r--src/lib/decoder_part.h4
-rw-r--r--src/lib/player.cc10
-rw-r--r--src/wx/subtitle_view.cc4
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;