summaryrefslogtreecommitdiff
path: root/src/lib/dcp_subtitle_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-07-08 00:54:04 +0100
committerCarl Hetherington <cth@carlh.net>2018-07-08 00:54:04 +0100
commit64a6a87dd4a3fd43665242b8a8b2b35a675a7839 (patch)
treeb95db96940d5d5b30405fa1a3a15d0b773ed504b /src/lib/dcp_subtitle_decoder.cc
parentccc093b159c61e811e24f427860b72343185681e (diff)
Fix build with shared_ptr dcp::Subtitle and subclasses.
Diffstat (limited to 'src/lib/dcp_subtitle_decoder.cc')
-rw-r--r--src/lib/dcp_subtitle_decoder.cc22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/lib/dcp_subtitle_decoder.cc b/src/lib/dcp_subtitle_decoder.cc
index 965f9db61..46256e93e 100644
--- a/src/lib/dcp_subtitle_decoder.cc
+++ b/src/lib/dcp_subtitle_decoder.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2014-2016 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2014-2018 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -26,6 +26,7 @@
using std::list;
using std::cout;
using boost::shared_ptr;
+using boost::dynamic_pointer_cast;
using boost::bind;
DCPSubtitleDecoder::DCPSubtitleDecoder (shared_ptr<const DCPSubtitleContent> content, shared_ptr<Log> log)
@@ -47,8 +48,8 @@ DCPSubtitleDecoder::seek (ContentTime time, bool accurate)
Decoder::seek (time, accurate);
_next = _subtitles.begin ();
- list<dcp::SubtitleString>::const_iterator i = _subtitles.begin ();
- while (i != _subtitles.end() && ContentTime::from_seconds (_next->in().as_seconds()) < time) {
+ list<shared_ptr<dcp::Subtitle> >::const_iterator i = _subtitles.begin ();
+ while (i != _subtitles.end() && ContentTime::from_seconds ((*_next)->in().as_seconds()) < time) {
++i;
}
}
@@ -71,8 +72,13 @@ DCPSubtitleDecoder::pass ()
ContentTimePeriod const p = content_time_period (*_next);
while (_next != _subtitles.end () && content_time_period (*_next) == p) {
- s.push_back (*_next);
- ++_next;
+ shared_ptr<dcp::SubtitleString> ns = dynamic_pointer_cast<dcp::SubtitleString>(*_next);
+ if (ns) {
+ s.push_back (*ns);
+ ++_next;
+ }
+
+ /* XXX: image subtitles */
}
subtitle->emit_text (p, s);
@@ -80,10 +86,10 @@ DCPSubtitleDecoder::pass ()
}
ContentTimePeriod
-DCPSubtitleDecoder::content_time_period (dcp::SubtitleString s) const
+DCPSubtitleDecoder::content_time_period (shared_ptr<dcp::Subtitle> s) const
{
return ContentTimePeriod (
- ContentTime::from_seconds (s.in().as_seconds ()),
- ContentTime::from_seconds (s.out().as_seconds ())
+ ContentTime::from_seconds (s->in().as_seconds ()),
+ ContentTime::from_seconds (s->out().as_seconds ())
);
}