summaryrefslogtreecommitdiff
path: root/src/lib/dcp_decoder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/dcp_decoder.cc')
-rw-r--r--src/lib/dcp_decoder.cc31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/lib/dcp_decoder.cc b/src/lib/dcp_decoder.cc
index abbaaf15d..4ae7380b0 100644
--- a/src/lib/dcp_decoder.cc
+++ b/src/lib/dcp_decoder.cc
@@ -45,7 +45,7 @@
#include <dcp/mono_mpeg2_picture_asset.h>
#include <dcp/reel.h>
#include <dcp/reel_atmos_asset.h>
-#include <dcp/reel_closed_caption_asset.h>
+#include <dcp/reel_caption_asset.h>
#include <dcp/reel_picture_asset.h>
#include <dcp/reel_sound_asset.h>
#include <dcp/reel_subtitle_asset.h>
@@ -308,6 +308,25 @@ DCPDecoder::pass_texts (ContentTime next, dcp::Size size)
++decoder;
}
+ if ((*_reel)->main_caption()) {
+ pass_texts (
+ next,
+ (*_reel)->main_caption()->asset(),
+ _dcp_content->reference_text(TextType::OPEN_CAPTION),
+ (*_reel)->main_caption()->entry_point().get_value_or(0),
+ *decoder,
+ size
+ );
+ ++decoder;
+ }
+
+ for (auto i: (*_reel)->closed_subtitles()) {
+ pass_texts (
+ next, i->asset(), _dcp_content->reference_text(TextType::CLOSED_SUBTITLE), i->entry_point().get_value_or(0), *decoder, size
+ );
+ ++decoder;
+ }
+
for (auto i: (*_reel)->closed_captions()) {
pass_texts (
next, i->asset(), _dcp_content->reference_text(TextType::CLOSED_CAPTION), i->entry_point().get_value_or(0), *decoder, size
@@ -332,13 +351,20 @@ DCPDecoder::pass_texts (
true
);
+ if (subs.size() > 0) {
+ std::cout << "found " << subs.size() << "\n";
+ std::cout << typeid(subs[0]).name() << "\n";
+ }
+
vector<dcp::SubtitleString> strings;
for (auto i: subs) {
auto is = dynamic_pointer_cast<const dcp::SubtitleString>(i);
if (is) {
+ std::cout << "oh fuck fuckety fuck\n";
if (!strings.empty() && (strings.back().in() != is->in() || strings.back().out() != is->out())) {
auto b = strings.back();
+ std::cout << "emit_plain all up in yo'ass\n";
decoder->emit_plain (
ContentTimePeriod (
ContentTime::from_frames(_offset - entry_point, vfr) + ContentTime::from_seconds(b.in().as_seconds()),
@@ -356,7 +382,10 @@ DCPDecoder::pass_texts (
} else {
is_copy.set_font(_font_id_allocator.default_font_id());
}
+ std::cout << "store it\n";
strings.push_back(is_copy);
+ } else {
+ std::cout << "massive cahoonas\n";
}
/* XXX: perhaps these image subs should also be collected together like the string ones are;