summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-06-08 14:58:53 +0100
committerCarl Hetherington <cth@carlh.net>2015-06-08 14:58:53 +0100
commit9facdf75a2776319fc5826cfa3dd85340f3c8879 (patch)
treedfc19da6dd5b3aefd2cacbec817336058d9c6c02 /src/lib
parent9334a6e5ea4ba89c243b2e5d6bdb02db6aa012ff (diff)
Fix detection of same-frame to speed up simple encodes (#548).
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/player.cc12
-rw-r--r--src/lib/player.h4
-rw-r--r--src/lib/player_video.cc4
3 files changed, 17 insertions, 3 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc
index 0ddd835ad..215b48ee4 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -74,6 +74,7 @@ Player::Player (shared_ptr<const Film> f, shared_ptr<const Playlist> p)
, _playlist (p)
, _have_valid_pieces (false)
, _ignore_video (false)
+ , _burn_subtitles (f->burn_subtitles ())
{
_playlist_changed_connection = _playlist->Changed.connect (bind (&Player::playlist_changed, this));
_playlist_content_changed_connection = _playlist->ContentChanged.connect (bind (&Player::content_changed, this, _1, _2, _3));
@@ -385,7 +386,7 @@ Player::get_video (DCPTime time, bool accurate)
copy (c.begin(), c.end(), back_inserter (sub_images));
/* Text subtitles (rendered to an image) */
- if (!ps.text.empty ()) {
+ if (_burn_subtitles && !ps.text.empty ()) {
list<PositionImage> s = render_subtitles (ps.text, _video_container_size);
copy (s.begin (), s.end (), back_inserter (sub_images));
}
@@ -631,3 +632,12 @@ Player::set_ignore_video ()
{
_ignore_video = true;
}
+
+/** Set whether or not this player should burn text subtitles into the image.
+ * @param burn true to burn subtitles, false to not.
+ */
+void
+Player::set_burn_subtitles (bool burn)
+{
+ _burn_subtitles = burn;
+}
diff --git a/src/lib/player.h b/src/lib/player.h
index 14aee002a..52dffec24 100644
--- a/src/lib/player.h
+++ b/src/lib/player.h
@@ -93,6 +93,8 @@ public:
void set_video_container_size (dcp::Size);
void set_ignore_video ();
+ void set_enable_subtitles (bool enable);
+ void set_burn_subtitles (bool burn);
PlayerStatistics const & statistics () const;
@@ -158,6 +160,8 @@ private:
/** true if the player should ignore all video; i.e. never produce any */
bool _ignore_video;
+ /** true if the player should burn subtitles into the video */
+ bool _burn_subtitles;
boost::shared_ptr<AudioProcessor> _audio_processor;
diff --git a/src/lib/player_video.cc b/src/lib/player_video.cc
index 81e01329a..0375fa01b 100644
--- a/src/lib/player_video.cc
+++ b/src/lib/player_video.cc
@@ -197,8 +197,7 @@ PlayerVideo::inter_position () const
bool
PlayerVideo::same (shared_ptr<const PlayerVideo> other) const
{
- if (_in != other->_in ||
- _crop != other->_crop ||
+ if (_crop != other->_crop ||
_fade.get_value_or(0) != other->_fade.get_value_or(0) ||
_inter_size != other->_inter_size ||
_out_size != other->_out_size ||
@@ -206,6 +205,7 @@ PlayerVideo::same (shared_ptr<const PlayerVideo> other) const
_part != other->_part ||
_colour_conversion != other->_colour_conversion ||
!_subtitle.same (other->_subtitle)) {
+
return false;
}