/*
- Copyright (C) 2013-2014 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
FFmpegSubtitleStream (std::string n, int i)
: FFmpegStream (n, i)
{}
-
- FFmpegSubtitleStream (cxml::ConstNodePtr);
+
+ FFmpegSubtitleStream (cxml::ConstNodePtr, int version);
void as_xml (xmlpp::Node *) const;
- std::vector<ContentTimePeriod> periods;
-};
+ void add_image_subtitle (std::string id, ContentTimePeriod period);
+ void add_text_subtitle (std::string id, ContentTimePeriod period);
+ std::list<ContentTimePeriod> image_subtitles_during (ContentTimePeriod period, bool starting) const;
+ std::list<ContentTimePeriod> text_subtitles_during (ContentTimePeriod period, bool starting) const;
+ ContentTime find_subtitle_to (std::string id) const;
+ void add_offset (ContentTime offset);
+
+ bool has_image_subtitles () const {
+ return !_image_subtitles.empty ();
+ }
+ bool has_text_subtitles () const {
+ return !_text_subtitles.empty ();
+ }
+
+private:
+ typedef std::map<std::string, ContentTimePeriod> PeriodMap;
+
+ void as_xml (xmlpp::Node *, PeriodMap const & subs, std::string node) const;
+ std::list<ContentTimePeriod> subtitles_during (ContentTimePeriod period, bool starting, PeriodMap const & subs) const;
+
+ PeriodMap _image_subtitles;
+ PeriodMap _text_subtitles;
+};