From 504c63b3d62038bc486ca8a09e77fbb403907edd Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 10 May 2016 14:29:14 +0100 Subject: Basics of splitting up Decoder tree like Content. --- src/lib/subtitle_decoder.cc | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src/lib/subtitle_decoder.cc') 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 -- cgit v1.2.3