Emit no audio from DCPs if none is mapped
[dcpomatic.git] / src / lib / ffmpeg_subtitle_stream.cc
index c3c6c1f8635cc0d0c3c013d464a101f7f5d159ee..1101901b7f1b20a83a192129b8361f5ce4d9cba5 100644 (file)
 
 #include "ffmpeg_subtitle_stream.h"
 #include <dcp/raw_convert.h>
+#include <dcp/warnings.h>
+LIBDCP_DISABLE_WARNINGS
 #include <libxml++/libxml++.h>
-#include <boost/foreach.hpp>
+LIBDCP_ENABLE_WARNINGS
 #include <iostream>
 
 using std::string;
@@ -39,7 +41,8 @@ FFmpegSubtitleStream::FFmpegSubtitleStream (cxml::ConstNodePtr node, int version
        : FFmpegStream (node)
 {
        if (version >= 33) {
-               BOOST_FOREACH (cxml::NodePtr i, node->node_children ("Colour")) {
+               boost::mutex::scoped_lock lm (_mutex);
+               for (auto i: node->node_children ("Colour")) {
                        _colours[RGBA(i->node_child("From"))] = RGBA (i->node_child("To"));
                }
        }
@@ -50,6 +53,7 @@ FFmpegSubtitleStream::as_xml (xmlpp::Node* root) const
 {
        FFmpegStream::as_xml (root);
 
+       boost::mutex::scoped_lock lm (_mutex);
        for (map<RGBA, RGBA>::const_iterator i = _colours.begin(); i != _colours.end(); ++i) {
                xmlpp::Node* node = root->add_child("Colour");
                i->first.as_xml (node->add_child("From"));
@@ -60,11 +64,13 @@ FFmpegSubtitleStream::as_xml (xmlpp::Node* root) const
 map<RGBA, RGBA>
 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;
 }