summaryrefslogtreecommitdiff
path: root/src/lib/active_text.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-08-05 01:15:45 +0100
committerCarl Hetherington <cth@carlh.net>2018-08-05 01:15:45 +0100
commit3a7b6acdb993864f319a6ceb3bc4c3fb7d4aaefd (patch)
tree6f516185b6155b13cddfcd6be8fdf9e5bc52f86a /src/lib/active_text.cc
parent7c45c2c7b0904446bbc8cd175fe1deab54c61c15 (diff)
Get closed caption view data from the butler, rather than the player.
You can't introduce the butler (so that the player is ahead of time) and then ask the player what should be in the frame that is being displayed "now"; the player will already have moved on.
Diffstat (limited to 'src/lib/active_text.cc')
-rw-r--r--src/lib/active_text.cc40
1 files changed, 7 insertions, 33 deletions
diff --git a/src/lib/active_text.cc b/src/lib/active_text.cc
index 5f4440728..2988c04a3 100644
--- a/src/lib/active_text.cc
+++ b/src/lib/active_text.cc
@@ -30,38 +30,6 @@ using boost::weak_ptr;
using boost::shared_ptr;
using boost::optional;
-void
-ActiveText::add (DCPTimePeriod period, list<PlayerText>& pc, list<Period> p) const
-{
- BOOST_FOREACH (Period i, p) {
- DCPTimePeriod test (i.from, i.to.get_value_or(DCPTime::max()));
- optional<DCPTimePeriod> overlap = period.overlap (test);
- if (overlap && overlap->duration() > DCPTime(period.duration().get() / 2)) {
- pc.push_back (i.subs);
- }
- }
-}
-
-list<PlayerText>
-ActiveText::get (DCPTimePeriod period) const
-{
- boost::mutex::scoped_lock lm (_mutex);
-
- list<PlayerText> ps;
-
- for (Map::const_iterator i = _data.begin(); i != _data.end(); ++i) {
-
- shared_ptr<const TextContent> caption = i->first.lock ();
- if (!caption || !caption->use()) {
- continue;
- }
-
- add (period, ps, i->second);
- }
-
- return ps;
-}
-
/** Get the open captions that should be burnt into a given period.
* @param period Period of interest.
* @param always_burn_captions Always burn captions even if their content is not set to burn.
@@ -85,7 +53,13 @@ ActiveText::get_burnt (DCPTimePeriod period, bool always_burn_captions) const
continue;
}
- add (period, ps, i->second);
+ BOOST_FOREACH (Period j, i->second) {
+ DCPTimePeriod test (j.from, j.to.get_value_or(DCPTime::max()));
+ optional<DCPTimePeriod> overlap = period.overlap (test);
+ if (overlap && overlap->duration() > DCPTime(period.duration().get() / 2)) {
+ ps.push_back (j.subs);
+ }
+ }
}
return ps;