Increase maximum allowable KDM file size.
[dcpomatic.git] / src / lib / subtitle_decoder.cc
index 9c6ac969dbd876caf3580b46471e6354c8d3da11..ff6f4b9daeca44555a49e424f9d5ecc1a495d194 100644 (file)
@@ -21,6 +21,8 @@
 #include "subtitle_decoder.h"
 #include "subtitle_content.h"
 #include "util.h"
+#include "log.h"
+#include "compose.hpp"
 #include <sub/subtitle.h>
 #include <boost/shared_ptr.hpp>
 #include <boost/foreach.hpp>
@@ -38,10 +40,11 @@ using boost::function;
 SubtitleDecoder::SubtitleDecoder (
        Decoder* parent,
        shared_ptr<const SubtitleContent> c,
+       shared_ptr<Log> log,
        function<list<ContentTimePeriod> (ContentTimePeriod, bool)> image_during,
        function<list<ContentTimePeriod> (ContentTimePeriod, bool)> text_during
        )
-       : DecoderPart (parent)
+       : DecoderPart (parent, log)
        , _content (c)
        , _image_during (image_during)
        , _text_during (text_during)
@@ -60,6 +63,7 @@ void
 SubtitleDecoder::give_image (ContentTimePeriod period, shared_ptr<Image> image, dcpomatic::Rect<double> rect)
 {
        _decoded_image.push_back (ContentImageSubtitle (period, image, rect));
+       _position = period.from;
 }
 
 void
@@ -76,6 +80,7 @@ SubtitleDecoder::give_text (ContentTimePeriod period, list<dcp::SubtitleString>
        }
 
        _decoded_text.push_back (ContentTextSubtitle (period, s));
+       _position = period.to;
 }
 
 /** Get the subtitles that correspond to a given list of periods.
@@ -104,6 +109,12 @@ SubtitleDecoder::get (list<T> const & subs, list<ContentTimePeriod> const & sp,
 
        /* Suggest to our parent decoder that it might want to seek if we haven't got what we're being asked for */
        if (missing) {
+               _log->log (
+                       String::compose (
+                               "SD suggests seek to %1 from %2",
+                               to_string (*missing),
+                               position() ? to_string(*position()) : "nowhere"),
+                       LogEntry::TYPE_DEBUG_DECODE);
                maybe_seek (*missing, true);
        }
 
@@ -160,9 +171,11 @@ SubtitleDecoder::get_image (ContentTimePeriod period, bool starting, bool accura
 }
 
 void
-SubtitleDecoder::seek (ContentTime, bool)
+SubtitleDecoder::seek (ContentTime t, bool)
 {
+       _log->log (String::compose ("SD seek to %1", to_string(t)), LogEntry::TYPE_DEBUG_DECODE);
        reset ();
+       _position.reset ();
 }
 
 void