summaryrefslogtreecommitdiff
path: root/src/lib/dcp_subtitle_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-03-08 23:23:49 +0000
committerCarl Hetherington <cth@carlh.net>2019-03-08 23:23:49 +0000
commit6e5c998593842ff76f5d0ae5cab0d03cbe11b607 (patch)
treeac77b39139ac52e793cc530d736cc9c5d426b3af /src/lib/dcp_subtitle_decoder.cc
parentebc33f0cc5790fe8bd7f921da92c43a11fb0772b (diff)
Support PNG subs in DCPSubtitleDecoder (#1479).
Diffstat (limited to 'src/lib/dcp_subtitle_decoder.cc')
-rw-r--r--src/lib/dcp_subtitle_decoder.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/lib/dcp_subtitle_decoder.cc b/src/lib/dcp_subtitle_decoder.cc
index 6c95b8b1f..5d5e1f631 100644
--- a/src/lib/dcp_subtitle_decoder.cc
+++ b/src/lib/dcp_subtitle_decoder.cc
@@ -64,12 +64,13 @@ DCPSubtitleDecoder::pass ()
/* Gather all subtitles with the same time period that are next
on the list. We must emit all subtitles for the same time
- period with the same plain_text() call otherwise the
+ period with the same emit*() call otherwise the
TextDecoder will assume there is nothing else at the
- time of emit the first.
+ time of emitting the first.
*/
list<dcp::SubtitleString> s;
+ list<dcp::SubtitleImage> i;
ContentTimePeriod const p = content_time_period (*_next);
while (_next != _subtitles.end () && content_time_period (*_next) == p) {
@@ -79,7 +80,15 @@ DCPSubtitleDecoder::pass ()
++_next;
}
- /* XXX: image subtitles */
+ /* XXX: perhaps these image subs should also be collected together like the string ones are;
+ this would need to be done both here and in DCPDecoder.
+ */
+
+ shared_ptr<dcp::SubtitleImage> ni = dynamic_pointer_cast<dcp::SubtitleImage>(*_next);
+ if (ni) {
+ emit_subtitle_image (p, *ni, film()->frame_size(), only_text());
+ ++_next;
+ }
}
only_text()->emit_plain (p, s);