X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fsubtitle_decoder.cc;h=e9692b99f586f752a53928f9f2492b1716d12e5b;hb=504c63b3d62038bc486ca8a09e77fbb403907edd;hp=454243b524d279b65eeaa7b57eacdc4f43cabab9;hpb=9423e02c37daba7f9e406929a1cfc1bb10fb4b62;p=dcpomatic.git diff --git a/src/lib/subtitle_decoder.cc b/src/lib/subtitle_decoder.cc index 454243b52..e9692b99f 100644 --- a/src/lib/subtitle_decoder.cc +++ b/src/lib/subtitle_decoder.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2015 Carl Hetherington + Copyright (C) 2013-2016 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,9 +27,18 @@ using std::list; using std::cout; using boost::shared_ptr; using boost::optional; - -SubtitleDecoder::SubtitleDecoder (shared_ptr c) - : _subtitle_content (c) +using boost::function; + +SubtitleDecoder::SubtitleDecoder ( + Decoder* parent, + shared_ptr c, + function (ContentTimePeriod, bool)> image_subtitles_during, + function (ContentTimePeriod, bool)> text_subtitles_during + ) + : _parent (parent) + , _subtitle_content (c) + , _image_subtitles_during (image_subtitles_during) + , _text_subtitles_during (text_subtitles_during) { } @@ -72,7 +81,7 @@ SubtitleDecoder::get (list const & subs, list const & sp, * (a) give us what we want, or * (b) hit the end of the decoder. */ - while (!pass(PASS_REASON_SUBTITLE, accurate) && (subs.empty() || (subs.back().period().to < sp.back().to))) {} + while (!_parent->pass(Decoder::PASS_REASON_SUBTITLE, accurate) && (subs.empty() || (subs.back().period().to < sp.back().to))) {} /* Now look for what we wanted in the data we have collected */ /* XXX: inefficient */ @@ -107,13 +116,13 @@ SubtitleDecoder::get (list const & subs, list const & sp, list SubtitleDecoder::get_text_subtitles (ContentTimePeriod period, bool starting, bool accurate) { - return get (_decoded_text_subtitles, text_subtitles_during (period, starting), period, starting, accurate); + return get (_decoded_text_subtitles, _text_subtitles_during (period, starting), period, starting, accurate); } list SubtitleDecoder::get_image_subtitles (ContentTimePeriod period, bool starting, bool accurate) { - return get (_decoded_image_subtitles, image_subtitles_during (period, starting), period, starting, accurate); + return get (_decoded_image_subtitles, _image_subtitles_during (period, starting), period, starting, accurate); } void