summaryrefslogtreecommitdiff
path: root/src/lib/subtitle_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-05-10 14:29:14 +0100
committerCarl Hetherington <cth@carlh.net>2016-05-18 11:50:29 +0100
commit504c63b3d62038bc486ca8a09e77fbb403907edd (patch)
treed9118c185110dd9eb103ed033700d4b3f486785d /src/lib/subtitle_decoder.cc
parent9423e02c37daba7f9e406929a1cfc1bb10fb4b62 (diff)
Basics of splitting up Decoder tree like Content.
Diffstat (limited to 'src/lib/subtitle_decoder.cc')
-rw-r--r--src/lib/subtitle_decoder.cc23
1 files changed, 16 insertions, 7 deletions
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 <cth@carlh.net>
+ Copyright (C) 2013-2016 Carl Hetherington <cth@carlh.net>
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<const SubtitleContent> c)
- : _subtitle_content (c)
+using boost::function;
+
+SubtitleDecoder::SubtitleDecoder (
+ Decoder* parent,
+ shared_ptr<const SubtitleContent> c,
+ function<list<ContentTimePeriod> (ContentTimePeriod, bool)> image_subtitles_during,
+ function<list<ContentTimePeriod> (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<T> const & subs, list<ContentTimePeriod> 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<T> const & subs, list<ContentTimePeriod> const & sp,
list<ContentTextSubtitle>
SubtitleDecoder::get_text_subtitles (ContentTimePeriod period, bool starting, bool accurate)
{
- return get<ContentTextSubtitle> (_decoded_text_subtitles, text_subtitles_during (period, starting), period, starting, accurate);
+ return get<ContentTextSubtitle> (_decoded_text_subtitles, _text_subtitles_during (period, starting), period, starting, accurate);
}
list<ContentImageSubtitle>
SubtitleDecoder::get_image_subtitles (ContentTimePeriod period, bool starting, bool accurate)
{
- return get<ContentImageSubtitle> (_decoded_image_subtitles, image_subtitles_during (period, starting), period, starting, accurate);
+ return get<ContentImageSubtitle> (_decoded_image_subtitles, _image_subtitles_during (period, starting), period, starting, accurate);
}
void