Merge branch 'master' of ssh://git.carlh.net/home/carl/git/dcpomatic
[dcpomatic.git] / src / lib / player.cc
index f8471c752cb1838ad5841af2eb068d04acc8b96c..bb0aef458153034bb9b26cc2cbdfaa3cec5ce857 100644 (file)
@@ -89,6 +89,7 @@ Player::Player (shared_ptr<const Film> film, shared_ptr<const Playlist> playlist
        , _playlist (playlist)
        , _have_valid_pieces (false)
        , _ignore_video (false)
+       , _ignore_audio (false)
        , _ignore_text (false)
        , _always_burn_open_subtitles (false)
        , _fast (false)
@@ -126,6 +127,11 @@ Player::setup_pieces ()
                        continue;
                }
 
+               if (_ignore_video && _ignore_audio && i->text.empty()) {
+                       /* We're only interested in text and this content has none */
+                       continue;
+               }
+
                shared_ptr<Decoder> decoder = decoder_factory (i, _film->log(), _fast);
                FrameRateChange frc (i->active_video_frame_rate(), _film->video_frame_rate());
 
@@ -138,6 +144,10 @@ Player::setup_pieces ()
                        decoder->video->set_ignore (true);
                }
 
+               if (decoder->audio && _ignore_audio) {
+                       decoder->audio->set_ignore (true);
+               }
+
                if (_ignore_text) {
                        BOOST_FOREACH (shared_ptr<TextDecoder> i, decoder->text) {
                                i->set_ignore (true);
@@ -444,6 +454,14 @@ Player::set_ignore_video ()
 {
        boost::mutex::scoped_lock lm (_mutex);
        _ignore_video = true;
+       _have_valid_pieces = false;
+}
+
+void
+Player::set_ignore_audio ()
+{
+       _ignore_audio = true;
+       _have_valid_pieces = false;
 }
 
 void