X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fffmpeg_subtitle_stream.cc;h=e500dd35b6294b91c6750ae6532ef3ae0fdddca1;hp=3d8fd4e8375466710cb51ffd4a6a7a4ac950c75e;hb=2d4e8c5f69cc694625ad95dcee554499605f823b;hpb=cb1dfa9ec09af2abf6d10e4bf2764476db83841b diff --git a/src/lib/ffmpeg_subtitle_stream.cc b/src/lib/ffmpeg_subtitle_stream.cc index 3d8fd4e83..e500dd35b 100644 --- a/src/lib/ffmpeg_subtitle_stream.cc +++ b/src/lib/ffmpeg_subtitle_stream.cc @@ -1,36 +1,76 @@ /* - Copyright (C) 2013-2014 Carl Hetherington + Copyright (C) 2013-2017 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ #include "ffmpeg_subtitle_stream.h" +#include "warnings.h" +#include +DCPOMATIC_DISABLE_WARNINGS +#include +DCPOMATIC_ENABLE_WARNINGS +#include + +using std::string; +using std::map; +using std::list; +using std::cout; +using std::make_pair; +using dcp::raw_convert; /** Construct a SubtitleStream from a value returned from to_string(). - * @param t String returned from to_string(). - * @param v State file version. + * @param node String returned from to_string(). + * @param version State file version. */ -FFmpegSubtitleStream::FFmpegSubtitleStream (cxml::ConstNodePtr node) +FFmpegSubtitleStream::FFmpegSubtitleStream (cxml::ConstNodePtr node, int version) : FFmpegStream (node) { - + if (version >= 33) { + boost::mutex::scoped_lock lm (_mutex); + for (auto i: node->node_children ("Colour")) { + _colours[RGBA(i->node_child("From"))] = RGBA (i->node_child("To")); + } + } } void FFmpegSubtitleStream::as_xml (xmlpp::Node* root) const { FFmpegStream::as_xml (root); + + boost::mutex::scoped_lock lm (_mutex); + for (map::const_iterator i = _colours.begin(); i != _colours.end(); ++i) { + xmlpp::Node* node = root->add_child("Colour"); + i->first.as_xml (node->add_child("From")); + i->second.as_xml (node->add_child("To")); + } +} + +map +FFmpegSubtitleStream::colours () const +{ + boost::mutex::scoped_lock lm (_mutex); + return _colours; +} + +void +FFmpegSubtitleStream::set_colour (RGBA from, RGBA to) +{ + boost::mutex::scoped_lock lm (_mutex); + _colours[from] = to; }