Fix default placement of SRT (etc.) now that the alignment has changed
[dcpomatic.git] / src / lib / dcp_decoder.cc
index 636cc8ed2b3f1f8d937d65943083e322e600bf9e..9064627ba9cd937a4930631e17f4665837553ee6 100644 (file)
@@ -80,8 +80,11 @@ DCPDecoder::DCPDecoder (shared_ptr<const Film> film, shared_ptr<const DCPContent
                        audio = make_shared<AudioDecoder>(this, content->audio, fast);
                }
                for (auto i: content->text) {
-                       /* XXX: this time here should be the time of the first subtitle, not 0 */
-                       text.push_back (make_shared<TextDecoder>(this, i, ContentTime()));
+                       text.push_back (make_shared<TextDecoder>(this, i));
+                       /* We should really call maybe_set_position() on this TextDecoder to set the time
+                        * of the first subtitle, but it probably doesn't matter since we'll always
+                        * have regularly occurring video (and maybe audio) content.
+                        */
                }
                if (content->atmos) {
                        atmos = make_shared<AtmosDecoder>(this, content);
@@ -300,12 +303,15 @@ DCPDecoder::pass_texts (
                                                        ContentTime::from_frames(_offset - entry_point, vfr) + ContentTime::from_seconds(b.in().as_seconds()),
                                                        ContentTime::from_frames(_offset - entry_point, vfr) + ContentTime::from_seconds(b.out().as_seconds())
                                                        ),
-                                               strings
+                                               strings,
+                                               _dcp_content->standard()
                                                );
                                        strings.clear ();
                                }
 
-                               strings.push_back (*is);
+                               dcp::SubtitleString is_copy = *is;
+                               is_copy.set_font(id_for_font_in_reel(is_copy.font().get_value_or(""), _reel - _reels.begin()));
+                               strings.push_back(is_copy);
                        }
 
                        /* XXX: perhaps these image subs should also be collected together like the string ones are;
@@ -333,7 +339,8 @@ DCPDecoder::pass_texts (
                                        ContentTime::from_frames(_offset - entry_point, vfr) + ContentTime::from_seconds(b.in().as_seconds()),
                                        ContentTime::from_frames(_offset - entry_point, vfr) + ContentTime::from_seconds(b.out().as_seconds())
                                        ),
-                               strings
+                               strings,
+                               _dcp_content->standard()
                                );
                        strings.clear ();
                }