summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-07-26 15:07:09 +0100
committerCarl Hetherington <cth@carlh.net>2018-07-26 15:07:09 +0100
commit53e1b97984f7e8c7bf1b16a9f3a333578545ec10 (patch)
tree4ec161be97788d98d1e67d1d339b79923e1f4ee4 /src/lib
parent8484d278ec6905502bd1178cc58d8cb7b3c12df0 (diff)
Add support for ignoring everything except text in the player.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/player.cc18
-rw-r--r--src/lib/player.h2
2 files changed, 20 insertions, 0 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc
index 8b2ade1dc..790d9a718 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -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);
@@ -437,6 +447,14 @@ void
Player::set_ignore_video ()
{
_ignore_video = true;
+ _have_valid_pieces = false;
+}
+
+void
+Player::set_ignore_audio ()
+{
+ _ignore_audio = true;
+ _have_valid_pieces = false;
}
void
diff --git a/src/lib/player.h b/src/lib/player.h
index 223db86b3..3d774e1d9 100644
--- a/src/lib/player.h
+++ b/src/lib/player.h
@@ -78,6 +78,7 @@ public:
void set_video_container_size (dcp::Size);
void set_ignore_video ();
+ void set_ignore_audio ();
void set_ignore_text ();
void set_always_burn_open_subtitles ();
void set_fast ();
@@ -154,6 +155,7 @@ private:
/** true if the player should ignore all video; i.e. never produce any */
bool _ignore_video;
+ bool _ignore_audio;
/** true if the player should ignore all text; i.e. never produce any */
bool _ignore_text;
bool _always_burn_open_subtitles;